ENTRYPOINT用法
php
entrypoint在dockerfile當中只有最後一條生效,其餘entrypoint都不生效
第一種寫法相似數組形式,推薦使用。使用這種方法啓動的進程的pid
爲1
。
第二章方法執行命令啓動的進程,該進程的pid
爲執行完這個shell的pid
。mysql
CMD用法
nginx
第一種用法,也是數組格式。
第二種用法,爲entrypoint指定參數。好比,entrypoint執行命令 usrs/bin/Nginx
,cmd能夠提供參數如start
,結合起來即爲usrs/bin/nginx start
.
第三種寫法,pid號也是shell執行的pid
號。是Linux下 /bin/sh -c
的用法。git
構建鏡像須要基於一個基礎鏡像。下面基於centos7這個基礎鏡像構建一個鏡像。sql
[root@Optimus /]# docker images REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE wordpress latest b027afd30886 33 hours ago 409.2 MB csphere/wordpress 4.2 6d90342cc99d 2 days ago 747.3 MB csphere/mysql 5.5 e147ac2a588e 6 days ago 752.7 MB csphere/php-fpm 5.4 1b08c94ce801 8 days ago 709.7 MB csphere/centos 7.1 fd1f7619e63e 9 days ago 613 MB centos centos7.1.1503 879c6d07c60e 7 weeks ago 212.1 MB [root@Optimus /]#
-----
使用cmddocker
建立dockerfileshell
[root@Optimus /]# vim Dockerfile FROM centos:centos7.1.1503 CMD ["/bin/echo", "This is test cmd"]
build的時候出錯,提示沒有權限vim
[root@Optimus /]# docker build -t csphere/cmd:0.1 . Error checking context is accessible: 'no permission to read from 'proc/sys/net/ipv4/route/flush''. Please check permissions and try again.
刪除Dockerfilecentos
rm -rf 目錄名字 -r 就是向下遞歸,無論有多少級目錄,一併刪除 -f 就是直接強行刪除,不做任何提示的意思~ rm -rf Dockerfile
進入docker-training目錄下面,從新建立Dockerfile,構建鏡像數組
[root@Optimus docker-training]# docker build -t csphere/cmd:0.1 docker: "build" requires 1 argument. See 'docker build --help'. Usage: docker build [OPTIONS] PATH | URL | - Build a new image from the source code at PATH [root@Optimus docker-training]# docker build -t csphere/cmd:0.1 . Sending build context to Docker daemon 27.55 MB Sending build context to Docker daemon Step 0 : FROM centos:centos7.1.1503 ---> 879c6d07c60e Step 1 : CMD /bin/echo This is test cmd ---> Running in 3dce9e75bdc8 ---> f32bb73e8383 Removing intermediate container 3dce9e75bdc8 Successfully built f32bb73e8383 [root@Optimus docker-training]#
接下來能夠經過csphere/cmd:0.1
這個鏡像來啓動一個容器
docker run -it --rm --rm參數的意識是,只要容器一退出,則刪除容器 [root@Optimus docker-training]# docker run -it csphere/cmd:0.1 This is test cmd 能夠看到,/bin/echo This is test cmd 這條命令成功執行。
直接進入container裏面,而不執行echo指令,能夠在docker run 後面直接加上/bin/bash命令,/bin/bash命令會覆蓋掉cmd後面的命令。
[root@Optimus docker-training]# docker run -it csphere/cmd:0.1 /bin/bash [root@cd32d71fb9c5 /]# /bin/bash 命令覆蓋掉了dockerfile中的cmd命令,直接進入到了container中。
---
使用entrypoint
[root@Optimus docker-training]# vim Dockerfile FROM centos:centos7.1.1503 ENTRYPOINT ["/bin/echo", "This is test entrypoint"] ~
構建鏡像
[root@Optimus docker-training]# docker build -t csphere/ent:0.1 . Sending build context to Docker daemon 27.55 MB Sending build context to Docker daemon Step 0 : FROM centos:centos7.1.1503 ---> 879c6d07c60e
直接在docker run 後面加參數/bin/bash,entrypoint會把/bin/bash當成一個echo的字符串參數,不會進入到容器中。
[root@Optimus docker-training]# docker run -it csphere/ent:0.1 /bin/bash This is test entrypoint /bin/bash
若是想覆蓋dockerfile中entrypoint指令,能夠在docker run命令中加--entrypoint參數來指定。
[root@Optimus docker-training]# docker run -it --entrypoint=/bin/bash csphere/ent:0.1 [root@bc7378b9ca83 /]# Step 1 : ENTRYPOINT /bin/echo This is test entrypoint ---> Running in 40b01fac38af ---> 9714a8b5bb85 Removing intermediate container 40b01fac38af Successfully built 9714a8b5bb85 [root@Optimus docker-training]#
啓動容器
[root@Optimus docker-training]# docker run -it csphere/ent:0.1 This is test entrypoint
----
其餘
刪除鏡像
docker rmi 鏡像 若是有啓動中的容器正在使用該鏡像,不能刪除該鏡像。刪除鏡像前,先中止container。-f 參數強制刪除鏡像。
若是對文件有修改,能夠使用一下命令,更新git 倉庫
git add * git commit -M "" git push origin master 提交到本身的倉庫中