鉴于生产环境的上线部署,都依赖于镜像构建、制作、部署上线运行等操作,作为一名合格的RD,当然不能只局限于在上线平台上进行一顿鼠标操作了,一定要弄懂这些基础设施内部到底在干嘛。因此,对Docker的相关学习也是很有必要的。
基础信息 http://dockone.io/article/783
http://merrigrove.blogspot.com/2015/10/visualizing-docker-containers-and-images.html
两篇文章分别是中文和英文原版,建议初学者多读几遍,收获非常大。 尤其是对镜像只读层和读写层的理解,非常重要,还有docker各个命令对各层的影响。
Docker run https://docs.docker.com/engine/reference/commandline/run/
docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
常用选项:
–detach , -d Run container in background and print container ID –tty , -t Allocate a pseudo-TTY –interactive , -i Keep STDIN open even if not attached –publish , -p Publish a container’s port(s) to the host –volume , -v Bind mount a volume 1 2 3 4 5 6 7 8 9 // sshd -D 将 sshd 作为前台进程运行,而不是脱离控制台成为后台守护进程。主要用于调试。 // -it 通常一起使用,可以开启一个终端进去交互模式,调试时很有用。 docker run -d -p 2222:22 tomcat:centos /usr/sbin/sshd -D docker run -ti -v ~/Downloads:/Downloads tomcat:centos /bin/bash docker run -d -p 8000:8080 -p 1098:1099 tomcat:centos /usr/local/sbin/tomcat.sh docker run -it -p 8000:8080 -p 1098:1099 tomcat:centos /usr/local/sbin/tomcat.sh
其他Docker命令 概览 docker version docker info docker stop $(docker ps -aq) docker rm $(docker ps -aq) docker pull docker login docerk rmi docker images 镜像类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 检索image $docker search image_name # 下载image $docker pull image_name # 列出镜像列表; -a, --all=false Show all images; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs $docker images # 删除一个或者多个镜像; -f, --force=false Force; --no-prune=false Do not delete untagged parents $docker rmi image_name # 显示一个镜像的历史; --no-trunc=false Don't truncate output; -q, --quiet=false Only show numeric IDs $docker history image_name
容器类 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 # 列出当前所有正在运行的container $docker ps # 列出所有的container $docker ps -a # 列出最近一次启动的container $docker ps -l # 保存对容器的修改; -a, --author="" Author; -m, --message="" Commit message $docker commit ID new_image_name # 删除所有容器 $docker rm `docker ps -a -q` # 删除单个容器; -f, --force=false; -l, --link=false Remove the specified link and not the underlying container; -v, --volumes=false Remove the volumes associated to the container $docker rm Name/ID # 停止、启动、杀死一个容器 $docker stop Name/ID $docker start Name/ID $docker kill Name/ID # 从一个容器中取日志; -f, --follow=false Follow log output; -t, --timestamps=false Show timestamps $docker logs Name/ID # 列出一个容器里面被改变的文件或者目录,list列表会显示出三种事件,A 增加的,D 删除的,C 被改变的 $docker diff Name/ID # 显示一个运行的容器里面的进程信息 $docker top Name/ID # 从容器里面拷贝文件/目录到本地一个路径 $docker cp Name:/container_path to_path $docker cp ID:/container_path to_path # 重启一个正在运行的容器; -t, --time=10 Number of seconds to try to stop for before killing the container, Default=10 $docker restart Name/ID # 附加到一个运行的容器上面; --no-stdin=false Do not attach stdin; --sig-proxy=true Proxify all received signal to the process $docker attach ID
Dockerfile to be continued