此例简单介绍docker的安装、使用以及打包
一:安装

1.安装条件: 
(1)64位CPU架构. 
(2)内核版本为3.10及以上的Linux系统. 
(3)开启cgroup和namespace功能
2.开始安装: 用sudo权限或者切换root用户, 
(1)通过yum安装 : $ sudo yum install docker-engine 
(2)通过脚本安装: $ curl -fsSL https://get.docker.com/ | sh
3.以daemon方式开启docker服务: $ sudo service docker start
4.验证安装是否成功: $ sudo docker run hello-world
5.建议: 由于docker daemon 必须用root/sudo权限运行,为避免每次使用sudo,可创建一个具有root权限的docker组,并将用户添加到该组。
6.将docker服务加入系统启动项: $ sudo chkconfig docker on

二:使用

基本使用命令:
1.查看docker环境: $ docker info
2.查看docker命令: 
(1) 所有命令: $ docker 
(2) 某条命令: $ docker xxx --help
3.启动一次性运行的容器(并在容器中执行命令): $ docker run ubuntu:16.04 /bin/echo 'Hello world'
4.启动交互模式容器: $ docker run -t-i ubuntu:16.04 (-t:开启一个终端, -i:以交互模式运行)
5.启动后台模式容器: $ docker run -d ubuntu:14.04 /bin/sh (-d:以后台Daemon方式运行,执行成功后会返回一个该容器的ID)
6.指定容器启动后的名字: $ docker run -i -t --name mytest ubuntu:14.04 /bin/bash (--name:指定启动后的容器名字,如果不指定则docker会帮我们取一个名字)
7.以映射端口方式启动一个Web容器: 
(1) $ docker run -d -P (-P:端口映射,外部端口到容器端口的映射规则由docker负责) 
(2) $ docker run -d -p 5000:5000 (-p:自己指定端口映射规则,格式为:-p ip:host port:port,将当前物理机的ip的端口映射到容器的端口) 
通过 $ docker ps -l,可以查看到其端口列的端口映射规则, 通过$ docker port 容器ID或容器名称 可快捷查看容器的端口
8.查看容器的具体信息: $ docker inspect 容器ID或容器名称
9.对运行着的后台容器进入执行命令: $ docker exec -it 容器ID /bin/bash
10.查看容器的日志: $ docker logs -f 容器ID或容器名称 (-f:以滚动的形式查看日志)
11.重启容器: $ docker restart 容器ID
12.暂停容器: $ docker pause 容器ID / $ docker unpause 容器ID
13.停止容器: $ docker stop 容器ID或容器名称
14.杀死容器: $ docker kill 容器ID或容器名称
15.删除容器: $ docker rm 容器ID或容器名称 (正在运行的容器不能删除)
16.把一个宿主机上的目录挂载到镜像里: $ docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash (-v:冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径) 
默认挂载的路径权限为读写。如果指定为只读可以用ro: $ docker run -it -v /home/dock/Downloads:/usr/Downloads:ro ubuntu64 /bin/bash
17.一个容器定义的一个数据挂载信息。其他的容器启动可以直接挂载数据卷容器中定义的挂载信息: 
$ docker run -v /home/dock/Downloads:/usr/Downloads --name dataVol ubuntu64 /bin/bash 
$ docker run -it --volumes-from dataVol ubuntu64 /bin/bash 
(--volumes-from:用来指定要从哪个数据卷来挂载数据)

三:网络

Docker使用linux桥接,在主机虚拟一个docker0网络接口,在主机中运行命令查看:
1.查看所有桥接: $ sudo brctl show
2.查看docker0 IP地址: $ sudo ifconfig docker0docker0
docker启动一个容器时会会根据docker0的网段划分容器的IP,docker0是每个容器的网关. 

docker在使用linux brigde时会找最合适的。但是有时候还是需要自己规划.
1.关闭网桥docker0, 添加自己的网桥bridge0: 
$ sudo ifconfig docker0 down 
$ sudo brctl addbr bridge0 
$ sudo ifconfig bridge0 192.168.227.1 netmask 255.255.255.0
2.向Docker startup file中添加启动自定义网桥参数, 启动Docker: 
$ echo "DOCKER_OPTS=\"-b=bridge0\"" >> /etc/default/docker 
$ sudo service docker start
3.查看自定义网桥是否启动成功, ip等配置是否正确: 
$ sudo ifconfig bridge0
4.启动容器, 在容器中查看IP和路由信息: 
$ docker run -i -t xxxx /bin/bash 
$ ifconfig eth0 
$ route -n


docker默认是允许容器互通, 通过-icc=false关闭互通. 一旦关闭了互通,只能通过-link name:alias命令连接指定容器. 
容器互相隔离的情况下,假设我们有一个webapp容器,一个redis容器需要互通:
1.先启动redis容器: $ docker run -d --name redis crosbymichael/redis
2.再启动webapp并联通到redis, 将redis取别名为db: $ docker run -t -i --link redis:db --name webapp ubuntu bash
3.容器中/etc/hosts中生成对应的ip映射: $ cat /etc/hosts

四:打包

docker镜像操作:
1.镜像查看: 
(1) 所有镜像: $ docker images 
(2) $ docker inspect 镜像ID
2.制作镜像: 
(1) 通过Dockerfile构建镜像: 创建目录, 在该目录下创建Dockerfile: $ touch Dockerfile 
在当前路径下创建镜像$ docker build -t username/imagename . (-t:tag名称) 
(2) 对运行着的容器commit镜像: docker commit -m "xxx" -a "xxx" 容器ID 镜像名称 (-m:提交注释, -a:作者) 
(3) 给镜像打标签: docker tag 容器ID 镜像名称