标签: dockerfile

在docker镜像中运行jar文件

我用java创建了一个docker镜像,并在图像中使用coppying jar文件.我的Dockerfile是:

FROM anapsix/alpine-java
MAINTAINER myNAME 
COPY testprj-1.0-SNAPSHOT.jar /home/testprj-1.0-SNAPSHOT.jar
RUN java -jar /home/testprj-1.0-SNAPSHOT.j
Run Code Online (Sandbox Code Playgroud)

执行以下命令后

docker build -t imageName.
Run Code Online (Sandbox Code Playgroud)

在控制台中,我看到应用程序和everthing的输出很好.但是,当我停止图像时,我不知道如何再次运行图像?执行以下命令时:

docker run -i -t imageName java -jar /home/testprj-1.0-SNAPSHOT.jar
Run Code Online (Sandbox Code Playgroud)

应用程序再次运行,但在我的Dockerfile中我已经写了这个命令.如何在没有此命令的情况下运行映像,应用程序会自动运行

docker dockerfile

38
推荐指数
2
解决办法
6万
查看次数

apt-get update'返回非零代码:100

我正在尝试从我的docker文件创建一个docker镜像,其中包含以下内容

FROM ubuntu:14.04.4
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP/ubuntu14/2.x/updates/2.4.2.0 HDP main' >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb http://private-repo-1.hortonworks.com/HDP-UTILS-1.1.0.20/repos/ubuntu14 HDP-UTILS main'  >> /etc/apt/sources.list.d/HDP.list
RUN echo 'deb [arch=amd64] https://apt-mo.trafficmanager.net/repos/azurecore/ trusty main' >> /etc/apt/sources.list.d/azure-public-trusty.list
RUN gpg --keyserver pgp.mit.edu --recv-keys B9733A7A07513CAD
RUN gpg -a --export 07513CAD | apt-key add -
RUN gpg --keyserver pgp.mit.edu --recv-keys B02C46DF417A0893
RUN gpg -a --export 417A0893 | apt-key add -
RUN apt-get update
Run Code Online (Sandbox Code Playgroud)

哪个失败,出现以下错误

root@sbd-docker:~/ubuntu# docker build -t hdinsight .
Sending build context to Docker daemon 3.072 kB
Step 1 : FROM …
Run Code Online (Sandbox Code Playgroud)

ubuntu docker dockerfile

38
推荐指数
3
解决办法
5万
查看次数

如何在docker中构建期间设置环境变量

我正在尝试在构建期间在docker容器中设置环境变量但没有成功.使用run命令时设置它们有效但我需要在构建期间设置它们.

Dockerfile

FROM ubuntu:latest
ARG TEST_ENV=something
Run Code Online (Sandbox Code Playgroud)

命令我正在使用构建

docker build -t --build-arg TEST_ENV="test" myimage .
Run Code Online (Sandbox Code Playgroud)

运行

docker run -dit myimage
Run Code Online (Sandbox Code Playgroud)

我正在使用检查可用的环境变量

docker exec containerid printenv
Run Code Online (Sandbox Code Playgroud)

结果是

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=e49c1abfd58b
TERM=xterm
no_proxy=*.local, 169.254/16
HOME=/root
Run Code Online (Sandbox Code Playgroud)

TEST_ENV不存在

docker dockerfile

38
推荐指数
2
解决办法
4万
查看次数

使用一个命令复制多个目录

有没有办法在一个命令中复制多个目录,以减少层数?例如,而不是:

COPY dirone ./dirone
COPY dirtwo ./dirtwo
COPY dirthree ./dirthree
Run Code Online (Sandbox Code Playgroud)

我想要做:

COPY dirone/ dirtwo/ dirthree/ ./
Run Code Online (Sandbox Code Playgroud)

但是,这会复制目录的内容 ......但我想复制目录本身.

copy docker dockerfile

37
推荐指数
3
解决办法
2万
查看次数

npm 错误!为 Node 项目创建 Docker 镜像时,跟踪器“idealTree”已经存在

我创建了一个名为 simpleWeb 的 node.js 项目。该项目包含 package.json 和 index.js。

索引.js

    const express = require('express');
    
    const app = express();
    
    app.get('/', (req, res) => {
      res.send('How are you doing');
    });
    
    app.listen(8080, () => {
      console.log('Listening on port 8080');
    });
Run Code Online (Sandbox Code Playgroud)

包.json


    {
        "dependencies": {
          "express": "*"
        },
        "scripts": {
          "start": "node index.js"
        }
      }
Run Code Online (Sandbox Code Playgroud)

我还创建了一个 Dockerfile 来为我的 node.js 项目创建 docker 镜像。

文件

# Specify a base image
FROM node:alpine

# Install some dependencies 
COPY ./ ./
RUN npm install

# Default command
CMD ["npm", …
Run Code Online (Sandbox Code Playgroud)

docker dockerfile

37
推荐指数
5
解决办法
2万
查看次数

如何将ARG值传递给ENTRYPOINT?

Docker 1.9允许将参数传递给dockerfile.请参阅链接:https://docs.docker.com/engine/reference/builder/#arg

我怎样才能在ENTRYPOINT指令中传递相同的句子?

我的dockerfile有

ARG $ Version = 3.1
ENTRYPOINT /tmp/folder-$Version/sample.sh start

使用上面的dockerfile创建容器时出错.请建议在ENTRYPOINT指令中指定参数的正确方法是什么?

docker dockerfile docker-registry docker-compose

36
推荐指数
4
解决办法
2万
查看次数

如何查看每个 docker 镜像的 Dockerfile?

我有以下泊坞窗图像。

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hello-world         latest              48b5124b2768        2 months ago        1.84 kB
docker/whalesay     latest              6b362a9f73eb        22 months ago       247 MB
Run Code Online (Sandbox Code Playgroud)

有没有办法在我的本地系统上查看每个 docker 镜像的 Dockerfile?

哪里可以看到 Dockerfile 的 Docker 映像的答案对我没有帮助,因为它没有完全显示 Dockerfile,而是运行命令来创建图像。我想要 Dockerfile 本身。

docker dockerfile

36
推荐指数
4
解决办法
4万
查看次数

无法为COPY创建docker镜像失败:stat/var/lib/docker/tmp/docker-builder错误

我想创建一个泊坞窗图像.这是我的工作目录:Dockerfile.in test.json test.py

这是我的Dockerfile:

COPY ./test.json /home/test.json
COPY ./test.py /home/test.py

RUN python test.py
Run Code Online (Sandbox Code Playgroud)

当我启动此命令时: docker build -f Dockerfile.in -t 637268723/test:1.0 .

它给了我这个错误:

`Step 1/5 : COPY ./test.json /home/test.json
 ---> Using cache
 ---> 6774cd225d60
 Step 2/5 : COPY ./test.py /home/test.py
 COPY failed: stat /var/lib/docker/tmp/docker-builder428014112/test.py: 
 no such file or directory`
Run Code Online (Sandbox Code Playgroud)

谁能帮我?

python docker dockerfile docker-image

36
推荐指数
7
解决办法
4万
查看次数

Dockerfile CMD指令将在运行后立即退出容器

我想在容器启动时设置一些配置,为此我使用的是shell脚本.但是我的容器会在脚本结束后立即退出,我尝试使用-d标志/分离模式,但它永远不会以分离模式运行.

下面是我的Dockerfile

FROM ubuntu:14.04

ADD shell.sh /usr/local/bin/shell.sh

RUN chmod 777 /usr/local/bin/shell.sh

CMD /usr/local/bin/shell.sh
Run Code Online (Sandbox Code Playgroud)

下面是我的shell脚本

#!/bin/bash
echo Hello-docker
Run Code Online (Sandbox Code Playgroud)
  1. 没有任何标志运行

    docker run hello-docker
    
    Run Code Online (Sandbox Code Playgroud)

    这将在我的控制台上打印"Hello-docker"并退出

  2. 使用-itd标志运行

    docker run -itd hello-docker
    
    Run Code Online (Sandbox Code Playgroud)

    并且在我的控制台输出下面,这次也将很快退出. :( 在此输入图像描述

    • 我看到的差异在COMMAND部分,当我运行其他图像命令部分将显示"/ bin/bash"并将继续处于分离模式.

    • 当我在带有shell脚本的容器中运行我的图像时,COMMAND部分将显示"/ bin/sh -c/usr/loca"和Exit.

    • 我想运行容器直到我不能手动停止它.

编辑:

在Dockerfile中添加ENTRYPOINT指令后,这将不会执行我的shell脚本:(

FROM ubuntu:14.04

ADD shell.sh /usr/local/bin/shell.sh

RUN chmod 777 /usr/local/bin/shell.sh

CMD /usr/local/bin/shell.sh

ENTRYPOINT /bin/bash
Run Code Online (Sandbox Code Playgroud)

根据这里的 docker文档

使用备用参数运行容器时将覆盖CMD,因此如果我使用如下所示的某些参数运行docker image,则不会执行CMD指令.:(

sudo docker run -it --entrypoint=/bin/bash <imagename>
Run Code Online (Sandbox Code Playgroud)

bash shell sh docker dockerfile

35
推荐指数
4
解决办法
6万
查看次数

使用nodesource安装脚本在docker容器上安装nodejs时出现弃用警告

我曾经使用 Dockerfile 中的以下内容在基于 Debian 的容器上安装 Nodejs:

RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - 
RUN apt-get install nodejs -y 
Run Code Online (Sandbox Code Playgroud)

但我最近开始收到以下消息:

RUN apt-get update -yq && apt-get upgrade -yq && apt-get install -yq curl git nano
RUN curl -sL https://deb.nodesource.com/setup_18.x | bash - 
RUN apt-get install nodejs -y 
Run Code Online (Sandbox Code Playgroud)

我如何解决它?

node.js docker deprecation-warning dockerfile

35
推荐指数
2
解决办法
2万
查看次数