一、docker
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
由于其基于LXC的轻量级虚拟化的特点,docker相比KVM之类最明显的特点就是启动快,资源占用小。因此对于构建隔离的标准化的运行环境,轻量级的PaaS(如dokku), 构建自动化测试和持续集成环境,以及一切可以横向扩展的应用(尤其是需要快速启停来应对峰谷的web应用)。
1、构建标准化的运行环境,现有的方案大多是在一个baseOS上运行一套puppet/chef,或者一个image文件,其缺点是前者需要base OS许多前提条件,后者几乎不可以修改(因为copy on write 的文件格式在运行时rootfs是read only的)。并且后者文件体积大,环境管理和版本控制本身也是一个问题。
2、PaaS环境是不言而喻的,其设计之初和dotcloud的案例都是将其作为PaaS产品的环境基础
3、因为其标准化构建方法(buildfile)和良好的REST API,自动化测试和持续集成/部署能够很好的集成进来
4、因为LXC轻量级的特点,其启动快,而且docker能够只加载每个container变化的部分,这样资源占用小,能够在单机环境下与KVM之类的虚拟化方案相比能够更加快速和占用更少资源
二、安装和运行
1、安装
yum isntall -y epel-release 安装epel下载源,资源更加丰富
yum install -y docker-io 安装docker
docker search centos 查看docker镜像
为了有更多的资源,而且下载docker更快,我们可以更换源
/etc/default/docker
vi /etc/sysconfig/docker centos7
DOCKER_OPTS="--registry-mirror=http://aad0405c.m.daocloud.io"
2、运行
docker run --name dockercentos -it centos /bin/bash 打开一个docker容器,参数如下:
-h 指定主机名
-v 指定数据卷 主机文件夹:容器文件夹 :ro只读 可以用来做文件共享
--volumes-from 容器名 使容器当做数据的卷
--link==cct1(另一容器):webtest 代号,可用于网络连接,防止容器重启IP失效
-icc=false 不允许容器间互联
允许特定链接:
--iptables=true
比如:docker run -it --name volume-test1 -h centos -v /data centos
三、常用的命令
docker log查看日志
-f 展示最新的日志
docker exec添加新的进程
docker top 查看容器进程
ctrl+p ctrl +q 退出守护进程
docker ps -a 查看所有容器
-l 查看最后一个容器
获取容器pid
docker inspect --format "{{.State.Pid}}" abb315329a17
进入正在运行容器
nsenter --target 2468 --mount --uts --ipc --net --pid
四、关于端口映射
把容器的端口映射到本机端口
docker run -d -P 91:80 --name mynginx2 nginx
-P ip:iphostport:containerport
-P ip::containerport
多个iphostport:containerport,指定多个端口
docker rm 删除容器
docker rmi 删除镜像