加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

python – 在运行时将pip需求添加到docker镜像

发布时间:2020-12-16 03:29:06 所属栏目:安全 来源:网络整理
导读:我希望能够为自己的创建docker镜像添加一些额外的要求.我的策略是使用CMD命令从dockerfile构建映像,该命令将在运行时使用已安装的卷执行“pip install -r”命令. 这是我的dockerfile: FROM ubuntu:14.04RUN apt-get updateRUN apt-get install -y python-pi

我希望能够为自己的创建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

我的本地文件夹“sourceCode”包含一个有效的requirements.txt文件(它只包含一行值为“gunicorn”).
当我收到提示时,我可以看到需求文件存在,但是如果我执行pip freeze命令,则不会列出gunicorn包.

为什么requirements.txt文件已正确附加但pip命令无法正常工作?

最佳答案
TLDR

pip命令没有运行,因为你告诉Docker改为运行/ bin / bash.

docker run -v $(pwd)/sourceCode:/root/sourceCode -it test /bin/bash
                                                              ^
                                                             here

更长的解释

容器的默认ENTRYPOINT是/ bin / sh -c.你没有在Dockerfile中覆盖它,所以它仍然存在.默认的CMD指令可能没什么.你会在Dockerfile中覆盖它.运行时(为简洁起见忽略音量)

docker run -it test

实际在容器内执行的是

/bin/sh -c pip install -r /root/sourceCode/requirements.txt

很简单,看起来它会在你启动容器时运行pip.

现在让我们看一下用于启动容器的命令(同样,忽略卷)

docker run -v -it test /bin/bash

实际在容器内执行的是

/bin/sh -c /bin/bash

您在Dockerfile中指定的CMD参数将被您在命令行中指定的COMMAND覆盖.回想一下,docker运行command takes this form

docker run [OPTIONS] IMAGE[:TAG|@DIGEST] [COMMAND] [ARG...]

进一步阅读

> This answer对CMD和ENTRYPOINT指令的作用有一个非常重要的解释

The ENTRYPOINT specifies a command that will always be executed when the container starts.

The CMD specifies arguments that will be fed to the ENTRYPOINT.

>这个blog post关于ENTRYPOINT和CMD指令之间的区别,值得一读.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读