容器管理工具
容器规范:
容器规范
容器不光是 Docker,还有其他容器,比如 CoreOS 的 rkt。
为了保证容器生态的健康发展,保证不同容器之间能够兼容,包含 Docker、CoreOS、Google在内的若干公司共同成立了一个叫 Open Container Initiative(OCI) 的组织,其目是制定开放的容器规范。
目前 OCI 发布了两个规范:runtime spec 和 image format spec。
有了这两个规范,不同组织和厂商开发的容器能够在不同的 runtime 上运行。这样就保证了容器的可移植性和互操作性。
容器 runtime
runtime 是容器真正运行的地方。runtime 需要跟操作系统 kernel 紧密协作,为容器提供运行环境。
容器runtime
]# docker info | grep Runtime
Runtimes: runc
Default Runtime: runc
如果大家用过 Java,可以这样来理解 runtime 与容器的关系:
Java 程序就好比是容器,JVM 则好比是 runtime。JVM 为 Java 程序提供运行环境。同样的道理,容器只有在 runtime 中才能运行。
lxc、runc 和 rkt 是目前主流的三种容器 runtime。
-
lxc 是 Linux 上老牌的容器 runtime。Docker 最初也是用 lxc 作为 runtime。
-
runc 是 Docker 自己开发的容器 runtime,符合 oci 规范,也是现在 Docker 的默认 runtime。
-
rkt 是 CoreOS 开发的容器 runtime,符合 oci 规范,因而能够运行 Docker 的容器。
目前主要使用docker,早期有使用lxc
LXC(LinuX container)
官网:<https://linuxcontainers.org/>
缺点:
- 模板制作难度高,需手动一步步构建,准备基础目录及可执行程序
- 大规模使用场景难以横向扩容
Ubantu安装LXC
]# apt install lxc(client) lxd(Server)
]# lxc-checonfig #检查内核对lxc的支持,必须全部为lxc
]# lxc-create -t #模板名称 -n lxc-test
]# lxc-create -t download --name alpine12 -- --dist alpine --release 3.9 --arch amd64
]# lxc-start alpine12 #启动lxc容器
]# lxc-attach alpine12 #进入lxc容器
清华大学镜像地址:<https://mirrors.tuna.tsinghua.edu.cn/help/lxc-images/>
docker
Docker启动一个容器需要一个外部模板,镜像可以保存在一个公共地方进行存储(即harbor);镜像下载即可使用,并且可在原镜像基础上进行自定义配置;一个镜像可以被启动为多个容器。
Docker的镜像是分层构建,镜像底层为库文件且只读层(即不能写入、不能删除数据),从镜像加载启动为一个容器后,会生成一个可写层,其写入的数据会复制到容器目录,但是容器内的数据再删除容器后也随之被删除。
]# docker ps
]# docker exec -it ID bash
/# mkdir /data
/# echo "172.31.1.100" >> /data/access.log
/# echo "1234567" >> /opt/linux39.txt
/# exit
]# find / -name linux39.txt #可在宿主机内找到刚刚在docker内写入的文件
/var/lib/docker/overlay2/......(随机ID)/diff/opt/linux39.txt
#即可写层,读写层目录/var/lib/docker/overlay2/......(随机ID)/
Docker的优点
Docker的优点 | |
---|---|
快速部署 | 短时间可以部署成百上千个应用,更快速交付(镜像) |
高校虚拟化 | 不需要而外的hypervisor,直接基于linux实现应用虚拟化 |
节省开支 | 提高服务器利用率 |
简化配置 | 环境打包zhi容器,使用时启动即可 |
快速迁移和扩展 | 可跨平台在物理机、虚拟机、公有云环境 |
Docker的缺点
隔离性:物理隔离性差,不如虚拟机彻底
pouch
阿里巴巴开元容器
https://www.infoq.cn/article/alibaba-pouch
https://github.com/alibaba/pouch
安装pouch
OS支持
pouch 的二进制安装包目前已经支持在 centos7 和 ubuntu (16.04 和 14.04)上的安装, 您可以参考以下配置手册从 opsx 站点快速的获取安装包。
Centos 7
添加文件
/etc/yum.repos.d/pouch-centos7.repo
内容如下:
[pouch-stable]
name=Pouch Stable - $basearch
baseurl=http://mirrors.aliyun.com/opsx/pouch/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/opsx/pouch/linux/centos/gpg
[pouch-test]
name=Pouch Test - $basearch
baseurl=http://mirrors.aliyun.com/opsx/pouch/linux/centos/7/$basearch/test
enabled=0
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/opsx/pouch/linux/centos/gpg
然后执行
yum makecache
yum install pouch
即可安装 pouch 了。
Ubuntu 上安装 pouch
导入 gpg 文件
wget http://mirrors.aliyun.com/opsx/pouch/linux/debian/opsx%40service.alibaba.com.gpg.key
apt-key add opsx@service.alibaba.com.gpg.key
添加配置文件
添加文件 /etc/apt/sources.list.d/pouch.list 内容如下:
## pouch - Pouch is an open-source project created by Alibaba Group
## to promote the container technology movement.
deb http://mirrors.aliyun.com/opsx/pouch/linux/debian/ pouch stable
#deb http://mirrors.aliyun.com/opsx/pouch/linux/debian/ pouch test
然后执行
apt-get update
apt-get install pouch
就可以安装 pouch 了。