Docker 构建过程中看似完美安装的程序不存在于 运行 容器中
Programs that appear to install perfectly during a Docker build are not present in run containers
我有一个 docker 文件似乎可以成功安装各种程序。
这里以我安装sfdx-cli为例:
RUN wget -O - https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz | tar Jxv && sfdx/install && rm -rf sfdx
我知道它是成功的,因为后续行会导致它自行更新。
这是另一个示例,我在其中安装了 apt-transport-https:
RUN apt-get install -y apt-transport-https
我知道这是可行的,因为下一行安装了 heroku,它依赖于 apt-transport-https:
RUN apt-get update && apt-get install -y heroku
但是,当我 运行 基于此图像的容器时,sfdx-cli 和 apt-transport-https 都不存在。我使用 "find /" 命令进行了搜索,但在任何地方都找不到它们,更不用说在预期的位置了。
容器总体上 运行 很好,有许多程序存在并且正在运行。 "heroku" 命令,例如,工作正常。
我显然遗漏了一些关于 docker 工作方式的基本知识,但我在网上找不到任何相关信息。
这是当前的 Dockerfile:https://gist.github.com/alexed1/ad4917f53bed34318e1aa2801a82e911
这是我的构建命令:
docker build . -t alexed1:dev5
这是我的 运行 命令:
docker run -it -v /Users/aedelstein/Dropbox/dev:/home/alexed/dev \
-p 8000:8000 -p 5000:5000 -p 80:80 -p 1717:1717 alexed1/dev5
图像名称由 repository
和 :tag
两部分组成。如果未指定 :tag
,则默认为 :latest
容器 运行 正在使用图像 alexed1/dev5
。这等同于标签 alexed1/dev5:latest
正在构建的图像不同,正在标记 alexed1:dev5
要运行构建的镜像,使用
docker run -it -v /Users/aedelstein/Dropbox/dev:/home/alexed/dev \
-p 8000:8000 -p 5000:5000 -p 80:80 -p 1717:1717 alexed1:dev5
我有一个 docker 文件似乎可以成功安装各种程序。
这里以我安装sfdx-cli为例:
RUN wget -O - https://developer.salesforce.com/media/salesforce-cli/sfdx-linux-amd64.tar.xz | tar Jxv && sfdx/install && rm -rf sfdx
我知道它是成功的,因为后续行会导致它自行更新。
这是另一个示例,我在其中安装了 apt-transport-https:
RUN apt-get install -y apt-transport-https
我知道这是可行的,因为下一行安装了 heroku,它依赖于 apt-transport-https:
RUN apt-get update && apt-get install -y heroku
但是,当我 运行 基于此图像的容器时,sfdx-cli 和 apt-transport-https 都不存在。我使用 "find /" 命令进行了搜索,但在任何地方都找不到它们,更不用说在预期的位置了。
容器总体上 运行 很好,有许多程序存在并且正在运行。 "heroku" 命令,例如,工作正常。
我显然遗漏了一些关于 docker 工作方式的基本知识,但我在网上找不到任何相关信息。
这是当前的 Dockerfile:https://gist.github.com/alexed1/ad4917f53bed34318e1aa2801a82e911
这是我的构建命令:
docker build . -t alexed1:dev5
这是我的 运行 命令:
docker run -it -v /Users/aedelstein/Dropbox/dev:/home/alexed/dev \
-p 8000:8000 -p 5000:5000 -p 80:80 -p 1717:1717 alexed1/dev5
图像名称由 repository
和 :tag
两部分组成。如果未指定 :tag
,则默认为 :latest
容器 运行 正在使用图像 alexed1/dev5
。这等同于标签 alexed1/dev5:latest
正在构建的图像不同,正在标记 alexed1:dev5
要运行构建的镜像,使用
docker run -it -v /Users/aedelstein/Dropbox/dev:/home/alexed/dev \
-p 8000:8000 -p 5000:5000 -p 80:80 -p 1717:1717 alexed1:dev5