我有一个简单的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'? (和其他软件一样)
答案 0 :(得分:3)
通过Docker Docs:
CMD的主要目的是为执行容器提供默认值。
通过Docker Docs:
RUN指令将在当前图像之上的新图层中执行任何命令并提交结果。生成的已提交映像将用于Dockerfile中的下一步。
因此,您应该使用RUN
代替CMD
。
此外,您可以在Dockerfile中执行以下操作:
CMD ["bash"]
这将自动执行bash并将您带入shell,因此当您执行-it
时,您不必执行docker run
。它会直接带你进入贝壳。