代码改变世界

dockerfile entrypoint cmd 同时使用

2023-09-09 10:21  qgbo  阅读(251)  评论(0)    收藏  举报

CMD 与 ENTRYPOINT都是用于指定启动容器执行的命令,区别在于:

当docker run 命令中有参数时,守护进程会忽略CMD命令。

使用ENTRYPOINT指令不会忽略,并且会接收docker run 参数附加到命令行中。

docker run 的命令,相当于 新加的 CMD, 会覆盖原有的CMD

nginx 的镜像就是这样。

docker run -it -p 8888:80 --name nnnbb5 nginx  这样执行,无法输入 命令,因为前台挂着nginx 命令

docker run -it -p 8888:80 --name nnnbb5 nginx   bash 这样可以输入命令,但是不会启动服务。

当退出他们的时候,他们的statue 也就exit 了

dockerfile:

FROM ubuntu
MAINTAINER logic
RUN apt-get update
RUN apt-get install -y nginx
RUN echo 'Use Dockerfile Build Image' > /var/www/html/index.nginx-debian.html
EXPOSE 80

RUN  是在docker build 的时候执行的. 这是顺序执行。先要 拉取ubuntu,  在这个镜像里执行下面的内容。

docker exec -it  ubuntu apt-get update...  这就往这个镜像里放了东西。最后编译出来一个镜像来,docker run 的时候,只是执行而已, 不用担心apt-install 时网络的问题。

 

busybox:

这一句话能运行个 http 服务,并进入termial    

sudo docker run -it --rm busybox  sh -c "httpd & sh " 
 /  wget localhost/etc/localtime -O-