docker安装:
安装curl:sudo apt-get install curl
安装docker:curl –sSL https://get.docker.com | sudo sh
设置普通用户执行:sudo usermod –aG docker your-user
重新登录
docker核心概念:
p_w_picpath:创建容器的模板。可以根据一套模板在同一台主机上迅速创建出多个容器。各容器间初始存储情况和设置情况相同。p_w_picpath不能在不同机器上直接迁移,需要导出成文件,移到其他机器后再导入成p_w_picpath。
container:进程+独立存储空间。不能直接复制也不能直接在机器间迁移。此类需求要先将container固化成p_w_picpath,再按上面方法进行迁移。
docker仓库:
存放p_w_picpath的地方,类似git repository,可以是公共的地址,也可以搭建自己的私有库。
docker常用命令:
启动:
 docker run xx_p_w_picpath     //从镜像建立一个新容器并启动
docker start xx_container  //直接启动容器
停止容器:
docker stop xx_container
连上运行中的容器:
docker attach xx_container
以交互式启动container:
docker run –i –t xx_p_w_picpath 
 docker start -i --interactive xx_container
查看日志:
docker logs xx_container
删除容器:
docker rm xx_container
删除镜像:
docker rmi xx_p_w_picpath
把容器固化成镜像:
docker commit xx_container xx_p_w_picpath
导出容器到文件:
docker export xx_container > ./xx_container_file
导入容器文件到镜像:
cat xx_container_file |docker import - xx_p_w_picpath
导出镜像到文件:
docker save xx_p_w_picpath > ./xx_p_w_picpath_file
导入镜像文件:
docker load -i xx_p_w_picpath_file
Docker使用私有仓库:
建立私有仓库:docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry --restart=always registry
在每个使用这个仓库的机器上的/etc/default/docker 里增加一句:
DOCKER_OPTS="$DOCKER_OPTS --insecure-registry=:5000"
上传p_w_picpath: 
docker tag xx_p_w_picpath :5000/xx
docker push :5000/xx
下载p_w_picpath:
docker pull :5000/xx
删除私有库中的镜像:
curl -X DELETE localhost:5000/v1/repositories/ubuntu/tags/latest  (只是删除标签,不真正删除文件)


Dockerfile:
创建container的命令序列。可以根据文件指示自动完成container及其上的服务的创建和启动。
示例:
FROM :5000/xx
ADD ./net.sh /root
RUN chmod 755 /root/net.sh
CMD /root/net.sh && /bin/bash
net.sh:
#!/bin/bash
hostname aabbcc
ifconfig eth0 192.168.2.75 netmask 255.255.255.0
route add default gw 192.168.2.74
echo "192.168.2.75 aabbcc">> /etc/hosts


集群部署方案比较:
docker:
container启动非常迅速,物理存储也具有独立性,但网络配置比较麻烦,尤其是跨宿主机的container。最适合的场景是在性能强大的单机上迅速部署多个计算密集型(非IO密集型)虚拟机。
如需跨越物理机共享p_w_picpath,要借助p_w_picpath导出文件或Dockerfile。
如果想利用docker保持开发环境和上线环境一致,那么需要开发时就要在container中进行。
虚拟机:
虚拟机需要在各物理机上安装虚拟机软件,空间占用大、效率低。好处是各虚拟机完全物理隔离,虚拟机迁移可直接进行文件拷贝,且允许跑在不同操作系统的机器上。
物理机:
各物理机要尽量保持操作系统一致、集群部署时容易遗漏文件和配置项。好处是不需要做额外工作,物理文件可见,节点故障后容易恢复。