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