我用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文件创建一个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) 我正在尝试在构建期间在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不存在
有没有办法在一个命令中复制多个目录,以减少层数?例如,而不是:
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)
但是,这会复制目录的内容 ......但我想复制目录本身.
我创建了一个名为 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 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 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 本身。
我想创建一个泊坞窗图像.这是我的工作目录: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)
谁能帮我?
我想在容器启动时设置一些配置,为此我使用的是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)
没有任何标志运行
docker run hello-docker
Run Code Online (Sandbox Code Playgroud)
这将在我的控制台上打印"Hello-docker"并退出
使用-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) 我曾经使用 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)
我如何解决它?
docker ×10
dockerfile ×10
bash ×1
copy ×1
docker-image ×1
node.js ×1
python ×1
sh ×1
shell ×1
ubuntu ×1