Docker(六):DockerFile案例2

CMD/ENTRYPOINT镜像案例

  • 都是指定一个容器启动时要运行的命令
  • CMD
  • ENTRYPOINT
    • docker run 以后的参数会被看成参数传递给 ENTRYPOINT,以后造成新的命令
    • case
      • 制做CMD版能够查询IP信息的容器

DockerFilehtml

FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn" ]

建立查询ip的镜像linux

[root@localhost mydocker]# ll
总用量 8
-rw-r--r--. 1 root root 144 10月 11 15:01 Dockerfile
-rw-r--r--. 1 root root 238 10月 12 15:05 Dockerfile2
[root@localhost mydocker]# vim Dockerfile3
[root@localhost mydocker]# cat Dockerfile3
FROM centos
RUN yum install -y curl
CMD ["curl","-s","http://ip.cn" ]


[root@localhost mydocker]# docker build -f /mydocker/Dockerfile3 -t myip .
Sending build context to Docker daemon  4.096kB
Step 1/3 : FROM centos
 ---> 75835a67d134
Step 2/3 : RUN yum install -y curl
 ---> Running in 1e3f94b33032
Loaded plugins: fastestmirror, ovl
Determining fastest mirrors
 * base: mirrors.163.com
 * extras: mirrors.163.com
 * updates: mirrors.cn99.com
Package curl-7.29.0-46.el7.x86_64 already installed and latest version
Nothing to do
Removing intermediate container 1e3f94b33032
 ---> 1bd5b74f7407
Step 3/3 : CMD ["curl","-s","http://ip.cn" ]
 ---> Running in 3a3c44f38737
Removing intermediate container 3a3c44f38737
 ---> 9e3c14f76b1d
Successfully built 9e3c14f76b1d
Successfully tagged myip:latest

运行容器docker

[root@localhost ~]# docker images
REPOSITORY               TAG                 IMAGE ID            CREATED              SIZE
myip                     latest              9e3c14f76b1d        About a minute ago   299MB
mycentos                 1.0                 c2d4f6acb9af        22 hours ago         455MB
zhaoyoung/nodocstomcat   1.0                 84498728984a        2 days ago           463MB
centos                   latest              75835a67d134        3 days ago           200MB
tomcat                   latest              41a54fe1f79d        4 weeks ago          463MB
hello-world              latest              4ab4c602aa5e        5 weeks ago          1.84kB
[root@localhost ~]# docker run -it myip
当前 IP:112.16.153.216 来自:浙江省杭州市 移动

在宿主机终端执行curl -s -i http://ip.cnvim

[root@localhost /]# curl -s http://ip.cn
当前 IP:112.16.153.216 来自:浙江省杭州市 移动
[root@localhost /]# curl -s -i http://ip.cn
HTTP/1.1 200 OK
Date: Sat, 13 Oct 2018 07:15:59 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=de9797f2bb3b7b4cbf7e271a857dad0e01539414958; expires=Sun, 13-Oct-19 07:15:58 GMT; path=/; domain=.ip.cn; HttpOnly
Server: cloudflare
CF-RAY: 469004a530f3b22a-HKG

当前 IP:112.16.153.216 来自:浙江省杭州市 移动

在容器终端执行centos

[root@localhost ~]# docker run myip -i
docker: Error response from daemon: OCI runtime create failed: container_linux.go:348: starting container process caused "exec: \"-i\": executable file not found in $PATH": unknown.

也就是说本来DockerFile中的CMD命令被 -i 替换了,若是要加入 -i 这个命令,则 docker run myip curl -s -i http://ip.cntomcat

  • 制做ENTRYPOINT版能够查询IP信息的容器

DockerFiledom

FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn" ]

建立镜像curl

[root@localhost mydocker]# vim Dockerfile4
[root@localhost mydocker]# cat Dockerfile4
FROM centos
RUN yum install -y curl
ENTRYPOINT ["curl","-s","http://ip.cn" ]

[root@localhost mydocker]# docker build -f /mydocker/Dockerfile4 -t myip2 .
Sending build context to Docker daemon   5.12kB
Step 1/3 : FROM centos
 ---> 75835a67d134
Step 2/3 : RUN yum install -y curl
 ---> Using cache
 ---> 1bd5b74f7407
Step 3/3 : ENTRYPOINT ["curl","-s","http://ip.cn" ]
 ---> Running in 3b769d41c963
Removing intermediate container 3b769d41c963
 ---> dcbb4656e640
Successfully built dcbb4656e640
Successfully tagged myip2:latest

运行容器ui

[root@localhost ~]# docker run myip
当前 IP:112.16.153.216 来自:浙江省杭州市 移动

对比下CMD 和 ENTRYPOINT,就能够很清楚的区分两个命令的不一样点:前者会被新加的命令覆盖,后者则是在原有的命令后加上新的命令url

[root@localhost ~]# docker run myip2
当前 IP:112.16.153.216 来自:浙江省杭州市 移动

[root@localhost ~]# docker run myip2 -i
HTTP/1.1 200 OK
Date: Sat, 13 Oct 2018 07:31:14 GMT
Content-Type: text/html; charset=UTF-8
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: __cfduid=d26cb3e44761590c2df6178cfd18fc6ee1539415874; expires=Sun, 13-Oct-19 07:31:14 GMT; path=/; domain=.ip.cn; HttpOnly
Server: cloudflare
CF-RAY: 46901afe67e9b1c4-HKG

当前 IP:112.16.153.216 来自:浙江省杭州市 移动
相关文章
相关标签/搜索