Docker流程,用于创建映像,安装软件(创建映像时)和启动容器

时间:2018-03-25 23:03:35

标签: linux docker containers

我有一个简单的Dockerfile:

FROM ubuntu CMD apt-get update; apt-get upgrade; apt-get install -y openjdk-8-jdk python2.7 python-pip unzip libaio1 nano tree curl wget alien

在我的主机(Mac)上从Dockerfile上面的同一文件夹运行此命令以创建图像:
docker build . -t my-linux

这需要一两分钟,然后检查使用docker images创建的图像:
REPOSITORY TAG IMAGE ID CREATED SIZE my-linux latest f9061de79d89 34 seconds ago 112MB ubuntu latest f975c5035748 2 weeks ago 112MB

接下来,我基于图像运行(创建容器): docker run -it my-linux bash

尝试安装的软件:
root@79a49eab5342:/# nano bash: nano: command not found root@79a49eab5342:/#

为什么没有安装'nano'? (和其他软件一样)

1 个答案:

答案 0 :(得分:3)

通过Docker Docs

  

CMD的主要目的是为执行容器提供默认值。

通过Docker Docs

  

RUN指令将在当前图像之上的新图层中执行任何命令并提交结果。生成的已提交映像将用于Dockerfile中的下一步。

因此,您应该使用RUN代替CMD

此外,您可以在Dockerfile中执行以下操作:

CMD ["bash"]

这将自动执行bash并将您带入shell,因此当您执行-it时,您不必执行docker run。它会直接带你进入贝壳。