Dockerfile中ENTRYPOINT 和 CMD的区别以及RUN的作用

来源:互联网 发布:在端口23连接失败 编辑:程序博客网 时间:2024/05/17 19:15

ENTRYPOINT 和 CMD的区别

ENTRYPOINT 和 CMD的区别可以参考Dockerfile中ENTRYPOINT 和 CMD的区别
主要区别就是:
如果在使用docker run 启动容器时使用了命令行参数,那么dockerfile 中的cmd 指令将无效:

docker run -it image /bin/ps

发现启动容器后没有shell ,只是打印出了当前容器中的进程状态,cmd 指令效果被覆盖:

PID TTY TIME CMD
1 ? 00:00:00 ps
[root@MiWiFi-R3L-srv test]#

那么如果想在使用docker run 启动容器时传递命令行参数执行该怎么办?这就是ENTRYPOINT 的独到之处。

通过ENTRYPOINT 指定的命令需要与docker run 启动容器进行搭配,将docker run 指令后面跟的内容当做参数作为ENTRYPOINT指令指定的运行命令的参数,ENTRYPOINT 指定的linux命令一般是不会被覆盖的。

RUN的作用

RUN的作用就是在构建镜像时,有时候需要在基础镜像上安装一些软件,比如Nginx。例如:

FROM centos
MAINTAINER allocator
RUN yum install -y nginx
RUN echo ‘hello world’ > /usr/share/nginx/html/index.html
EXPOSE 80
ENTRYPOINT [“/usr/sbin/nginx”]

上面的两个RUN在构建镜像时,分别安装了Nginx和向index.html写入内容。

原创粉丝点击