出品|MS08067实验室(www.ms08067.com)
本文作者:大方子(Ms08067实验室核心成员)
大方子微信(欢迎骚扰交流):

目录
closed容器
Bridged容器
自定义DNS解析
开放对容器的访问
跨容器通信
Joined容器
Open容器
跨容器依赖
从容器构建镜像
审查文件系统的改动
可配置的镜像属性
镜像体积和层数限制
导出和导入压缩文件系统
帮助
docker helpdocker help cp
守护方式启动动容器
docker run ‐‐detach ‐‐name web nginx:latest
容器交互
# ‐‐interactive 或‐i 保持标准输入流# ‐‐tty 或 ‐t 为容器分配一个虚拟终端# 输入exit退出shell,容器也会停止工作# 若使用了‐‐tty。可以【Ctrl】+【P】+【Q】在退出shell的情况下容器不会停止工作docker run ‐‐interactive ‐‐tty ‐‐link web:web ‐‐name web_test busybox:latest /bin/sh
开始、停止、重启、查看容器输出、查看当前的容器
docker start [容器名称|容器ID]docker stop [容器名称|容器ID]docker restart [容器名称|容器ID]docker logs [容器名称|容器ID]docker psdocker create nginx
容器中执行命令
docker exec [容器名称|容器ID] 命令docker run ‐d ‐‐name namespaceA busybox:latest /bin/bash ‐c "sleep 30000"
命名空间
docker run ‐‐pid host busybox:latest ps
容器标识
docker create ‐‐cidfile /tmp/web.cid nginxdocker ps ‐‐no‐trunc
检查容器元数据
docker inspect ‐‐format "{{.State.Running}}" web
容器的连接
docker run ‐it ‐‐name agent ‐‐link web:insideweb容器的环境变量
docker run ‐d ‐‐name wpdb ‐e MYSQL_ROOT_PASSWORD=ch2demo mysql:5docker run ‐‐env MY_ENVIRONMENT‐VAR="this is a test" busybox:latest env
只读文件系统
docker run ‐d ‐‐name wp ‐‐read‐only wordpress:4docker run ‐d ‐‐name wp3 ‐v /run/lock/apache2 ‐v /run/apache2 ‐‐read‐only wordpress:4
持久化容器
能启动容器则放弃docker run ‐d ‐‐name backoff‐detector ‐‐restart always busybox date
使用init和supervisor进程维持容器的运行状态
docker top lamp‐testdocker exec lamp‐test ps
清理容器
docker ps ‐adocker rm wpdocker stop wpdocker run ‐‐rm ‐‐name auto‐exit‐test busybox:latest echo hello world
Docker Hub的使用
docker logindocker logoutdocker search nginx
Docker 镜像
docker rmi nginxdocker pull quay.io/dockerinaction/ch3_hello_registry:latestdocker save ‐o myfile.tar busybox:latestdocker load ‐i myfile.tardocker build ‐t ch3_dockerfile .docker build ‐t diach3/dockerfile:latest ch3_dockerfiledocker tag ubuntu:15.10 runoob/ubuntu:v3
持久化存储和卷间状态共享
docker run ‐dit ‐v /root/data ‐‐name test busybox
docker run ‐dit ‐v /root/docker‐practice/data:/root/data ‐‐name test busyboxdocker run ‐dit ‐‐volumes‐from test ‐‐name test1 busyboxdocker run ‐dit ‐v /root/docker‐practice/data:/root/data:ro ‐‐name test busyboxdocker rm ‐v test1docker run ‐‐name dpvc ‐v /config dockerinaction/ch4_packed /bin/sh ‐c 'cp /packed*/config/'
Docker的网络
closed容器
docker run ‐‐rm ‐‐net none alpine:latest ip addr
Bridged容器
docker run ‐‐rm ‐‐net bridge alpine:latest ip addr
自定义DNS解析
docker run ‐‐rm ‐‐hostname barker alpine:latest nslookup barkerdocker run ‐‐rm ‐‐dns 8.8.8.8 alpine:latest nslookup docker.com缀名docker run ‐‐rm ‐‐dns‐search docker.com busybox:latest nslookup registry.hubdocker run ‐‐rm ‐‐add‐host test:10.10.10.255 alpine:latest nslookup testdocker run ‐‐rm ‐‐add‐host docker.com:127.0.0.1 ‐‐add‐host test:10.10.10.2 alpine:latestcat /etc/hosts
开放对容器的访问
docker run ‐p 333...docker run ‐p 333:3333docker run ‐p 192.168.0.32::2222 ....docker run ‐p 192.168.0.32:1111:1111 ....docker run ‐d ‐‐name woolery ‐P dockerinaction/ch5_exposedocker run ‐d ‐‐name philbin ‐‐expose 8000 ‐P dockerinaction/ch5_exposedocker port philbin
跨容器通信
Joined容器
# 让多个容器共享一个网络栈# ‐‐net container:
[要加入的目标容器]docker run ‐it ‐‐net container:brady alpine:latest
Open容器
docker run ‐‐rm ‐‐net host alpine:latest ip addr
跨容器依赖
容器链接
# 将容器与另一个容器相链接# 目标容器必须正则允许# 链接是单向的,静态的,无传递性的网络依赖# 通过‐‐link链接imporantData容器并给这个容器取了db这个别名# 以后这个这个容器访问db就是访问imporantData容器docker run ‐d ‐‐name importantWebapp ‐‐link imporantData:db dockerinaction/ch5_webstart.sh ‐db tcp:
Docker Compose
docker-compose 命令
docker‐compose updocker‐compose psdocker‐compose stopdocker‐compose ‐vfs rmdocker‐compose logs [服务名]docker‐compose build [服务名]
在镜像中打包软件
从容器构建镜像
docker commit [容器名] [镜像名]docker commit ‐m "Set CMD git" ‐a 'dfz@qq.com' cmd‐git ubuntu‐gitdocker run ‐‐name cmd‐git ‐‐entrypoint "ls" ubuntu‐gitdocker run ‐‐name cmd‐git1 ubuntu‐ls /docker commit mod_ubuntu myuser/myfristrepo:mytagdocker tag myuser/myfristrepo:mytag myuser/mod_ubuntu
审查文件系统的改动
可配置的镜像属性
docker run ‐‐name rich‐image‐example ‐e ENV_EXAMPLE1=Rich busybox:latest
镜像体积和层数限制
docker history ubuntu‐git
导出和导入压缩文件系统
docker export ‐‐output mod_ubuntu.tar mod_ubuntutar ‐tf mod_ubuntu.tar
docker import mod_ubuntu.tar
构建自动化和高级镜像设置
指令解析
FROM ubuntu:latestMAINTAINER "nzjdsds@qq.com"Run apt‐get update && apt‐get install ‐y git
ENTRYPOINT ["git"]ENV APPROOT="/app"WORKDIR $APPROOTEXPOSE 3333程服务器读取资源并复制到镜像中COPY ["来源目录","目的目录"]VOLUME ["/var/log"]
# 不要忘记最后面的. 不加‐f指定文件名 则默认使用Dockerfile# 在构建中,镜像的相同内容在之前配置会,则build时会使用缓存# 增加‐‐no‐cache来不适用缓存docker build ‐‐tag ubuntu‐git:auto .
软件分发
docker commit test/testdocker push/test
公众号回复“Docker命令”,打包下载所有命令,方便使用!
扫描下方二维码加入星球学习
加入后会邀请你进入内部微信群,内部微信群永久有效!




目前35000+人已关注加入我们
