在Docker构建过程中看起来完美安装的程序在运行容器中不存在

时间:2017-12-09 17:28:57

标签: docker dockerfile apt-get

我有一个dockerfile似乎可以成功安装各种程序。

例如,我在这里安装了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

1 个答案:

答案 0 :(得分:1)

图片名称由两个组件组成,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