我希望能够添加一些额外的要求到自己的创建docker图像。我的策略是使用CMD命令从dockerfile构建映像,该命令将在运行时使用挂载的卷执行“pip install-r”命令。
这是我的DockerFile:
FROM ubuntu:14.04
RUN apt-get update
RUN apt-get install -y python-pip python-dev build-essential
RUN pip install --upgrade pip
WORKDIR /root
CMD ["pip install -r /root/sourceCode/requirements.txt"]
有了dockerfile,我构建了映像:
sudo docker build -t test .
sudo docker run -v $(pwd)/sourceCode:/root/sourceCode -it test /bin/bash
pip
命令未运行,因为您告诉Docker改为运行/bin/bash
。
docker run -v $(pwd)/sourceCode:/root/sourceCode -it test /bin/bash
^
here
容器的默认入口点
是/bin/sh-c
。您不在Dockerfile中重写它,所以它仍然存在。默认的cmd
指令可能是空的。您可以在DockerFile中覆盖它。运行时(为简洁起见,忽略音量)
docker run -it test
在容器内实际执行的是
/bin/sh -c pip install -r /root/sourceCode/requirements.txt
docker run -v -it test /bin/bash
/bin/sh -c /bin/bash
您在Dockerfile中指定的cmd
参数将被您在命令行中指定的command
覆盖。记得docker run
命令的形式如下
docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]
>
这个答案对cmd
和entrypoint
指令的作用有一个切中要害的解释
entrypoint
指定一个在容器启动时始终执行的命令。
问题内容: 我为持续集成有一个jenkins实例(实际上在docker内部运行)。 jenkins服务器在外部docker主机上构建docker映像,对其进行测试,然后将其推送到标记。 现在,当我构建发行版时,我想将docker映像从测试重新标记为。我 不 希望重建一个新的标签的形象,我想重新标记现有的图像。 詹金斯怎么办?我正在查看jenkins插件,找不到具有此功能的任何插件。 问题答案: 由
问题内容: 我有一个Docker映像,它是一个node.js应用程序。该应用程序从本地运行的Redis检索一些配置值。因此, 我试图在Docker映像内的同一容器内安装和运行Redis。 如何扩展Docker文件并在其中配置Redis? 到目前为止,Dockerfile如下: 从节点:碳 WORKDIR / app COPY package.json / app 运行npm安装 复制。/ app
我有一个Docker映像,它是一个Node.js应用程序。应用程序从本地运行的Redis检索一些配置值。因此,我试图在Docker映像的同一容器中安装和运行Redis。 我如何扩展Docker文件并在其中配置Redis? 截至目前,Dockerfile如下所示:
问题内容: 我尝试在构建映像的同时使用Docker安装软件,然后得到了。 我使用的Dockerfile 有没有一种方法可以在Dockerfile中运行docker命令来创建映像? 问题答案: 您的问题不在于Docker命令,因为它在错误消息中表示您的Docker守护程序未运行,或者由于某些配置问题而无法连接到它。 您刚刚安装了Docker吗?您是否完成了《安装指南》中的所有步骤? 您可以使用或来测
在运行时添加到当单击时。 我使用以下代码: 但是在中没有显示任何。
目前,我发现谷歌云构建发生在构建docker图像的时候(不像我想象的那样,它会构建我的图像,然后执行我的图像来完成所有的构建)。那是在这篇文章里 谷歌云构建的快速启动 我有一个Dockerfile现在很简单 我有一个单一的下载和提取下载任何工件(zip文件)从最后的单构建运行构建(只有修改的服务器被构建或依赖于上一个CI构建的变化的服务器被构建,就像下游库可能被更改)。第一行只是列出了我需要在一个