RUN:执行命令并创建新的Image Layer CMD:设置容器启动后默认执行的命令和参数 ENTRYPOINT:设置容器启动时运行的命令
一般会有以下两种书写格式: Shell格式:
RUN apt-get install -y vim CMD echo "hello docker" ENTRYPOINT echo "hello docker"Exec格式:
RUN ["apt-get","install","-y","vim"] CMD ["/bin/echo","hello docker"] ENTRYPOINT ["/bin/echo","hello docker"]两种格式在实际使用中,通常如下: Shell Dockerfile:
FROM centos ENV name Docker ENTRYPOINT echo "hello $name"Exec Dockerfile:
FROM centos ENV name Docker ENTRYPOINT ["/bin/echo","hello $name"]但是在实际使用时, ENTRYPOINT ["/bin/echo",“hello $name”] 这样的写法只会打印出 “hello $name”. 原因是它只是在执行echo命令,并不是执行shell。意思是说,我们不是在shell里执行echo,只是单纯的执行echo,所以不会替换变量。 想要改成可执行的shell,需要改写成以下形式:
FROM centos ENV name Docker ENTRYPOINT ["/bin/bash","-c","echo hello $name"]所以,上面的命令可以改写成
FROM centos ENV name Docker CMD echo "hello $name"