docker exec # 在容器裏執行一個命令,能夠執行bash進入交互式html
docker ps -a -q
docker rmi $(docker images -q)nginx
Dockerfile是docker構建鏡像的基礎,也是docker區別於其餘容器的重要特徵,正是有了Dockerfile,docker的自動化和可移植性才成爲可能。docker
不管是開發仍是運維,學會編寫Dockerfile幾乎是必備的,這有助於你理解整個容器的運行。shell
FROM , 從一個基礎鏡像構建新的鏡像
FROM ubuntujson
MAINTAINER , 維護者信息
MAINTAINER Williamubuntu
ENV , 設置環境變量
ENV TEST 1數組
RUN , 非交互式運行shell命令
RUN apt-get -y update
RUN apt-get -y install nginxbash
ADD , 將外部文件拷貝到鏡像裏,src能夠爲url
ADD http://nicescale.com/ /data/nicescale.tgz服務器
WORKDIR /path/to/workdir, 設置工做目錄
WORKDIR /var/www運維
USER , 設置用戶ID
USER nginx
VULUME <#dir>, 設置volume
VOLUME [‘/data’]
EXPOSE , 暴露哪些端口
EXPOSE 80 443
ENTRYPOINT [‘executable’, ‘param1’,’param2’]執行命令
ENTRYPOINT ["/usr/sbin/nginx"]
CMD [「param1」,」param2」]
CMD ["start"]
docker建立、啓動container時執行的命令,若是設置了ENTRYPOINT,則CMD將做爲參數
儘可能將一些經常使用不變的指令放到前面
CMD和ENTRYPOINT儘可能使用json數組方式
docker build csphere/nginx:1.7 .
鏡像倉庫Registry
鏡像從Dockerfile build生成後,須要將鏡像推送(push)到鏡像倉庫。企業內部都須要構建一個私有docker registry,這個registry能夠看做二進制的scm,CI/CD也須要圍繞registry進行。
部署registry
mkdir /registry
docker run -p 80:5000 -e STORAGE_PATH=/registry -v /registry:/registry registry:2.0
推送鏡像保存到倉庫
假設192.168.1.2是registry倉庫的地址:
docker tag csphere/nginx:1.7 192.168.1.2/csphere/nginx:1.7
docker push 192.168.1.2/csphere/nginx:1.7
docker run -d --name con03 csphere/test:0.1
efc9bda4a2ff2f479b18e0fc4698e42c47c9583a24c93f5ce6b28a828a172709