Docker容器安装
容器部署
<!---------------------------->
背景了解
Duration: 5
容器是一个跨时代的开源项目,降低了云计算资源供应的成本,同时让应用的部署、测试和分发都变得前所未有的高效和轻松。本实验结合了实际生产实践使用,详细梳理了Docker如何在不同环境下进行安装和部署,以及在部署后如何对Docker的常用功能进行相关设置以便更好地使用。
Docker与Podman的快速区别
Docker
Docker
是一个开源的应用容器引擎,属于 Linux 容器的一种封装,Docker 提供简单的容器使用接口,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到Linux 机器上,但Docker也有 两个主要缺点:
- Docker 需要在你的系统上运行一个守护进程;
- Docker 是以 root 身份在你的系统上运行该守护程序。
Podman
Podman
也是一个开源的容器管理工具,可以在大多数Linux平台上使用,它是一种无守护程序的容器引擎,亦用于在Linux系统上开发,管理和运行任何符合Open Container Initiative(OCI)
标准的容器和容器镜像,提供了一个与Docker兼容的命令行前端。
Podman控制下的容器既可以由root用户运行,也可以由非特权用户运行。使用Podman后可以解决由于docker守护程序导致的启动和安全问题。
Podman 和docker主要不同之处
Docker
需要在我们的系统上运行一个守护进程(docker daemon),Podman
而不需要.
启动容器的方式不同:
docker cli
通过API跟 Docker Engine(引擎)交互告诉它我想创建一个 container,然后docker Engine才会调用OCI container runtime(runc)来启动一个container。这代表contain- er的process(进程)不会是Docker CLI的child process(子进程),而是Docker Engine的child process。
- Podman是直接给OCI containner runtime(runc)进行交互来创建container的,所以container process 直接是podman的child process。
- docker需要使用root用户来创建容器,但是podman不需要
实验准备
Duration: 0
- CentOS 7及以上版本的操作系统
- 配置国内加速docker-ce稳定仓库镜像源
- Linux内核版本不低于3.10(CentOS 7 满足最低内核的要求)
Negative
: 建议升级内核到4.4以上,因为CentOS 7自带的3.10内核存在一些bug,会导致Docker、Kubernetes运行不稳定,特别是高版本的Docker、Kubernetes(参考 https://github.com/kubernetes/kubernetes/issues/61937)。
升级内核
Duration: 10
通过Centos与内核版本对应关系可以找到系统版本与内核版本的对应关系
安装依赖
查看当前内核版本
uname -sr
载入公钥
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
安装elrepo
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm
载入elrepo-kernel元数据
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
查看kernel版本
yum --disablerepo="*" --enablerepo="elrepo-kernel" list available
Positive
: kernel-ml:ml是英文【mainline stable】的缩写,elrepo-kernel中罗列出来的是最新的稳定主线版本。<br/>
kernel-lt:lt是英文【long term support】的缩写,elrepo-kernel中罗列出来的长期支持版本。
安装最新版本的kernel
yum --enablerepo=elrepo-kernel install kernel-ml kernel-ml-devel –y
查看当前可用内核版本:
awk -F\' '$1=="menuentry " {print i++ " : " $2}' /etc/grub2.cfg
更改内核默认启动顺序,选择最新内核版本,0代表查看当前可用内核版本列表的左侧索引号
grub2-set-default 0
生成grub文件
grub2-mkconfig -o /boot/grub2/grub.cfg
重启
reboot
删除旧版本工具包
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64
安装新版本工具包
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
验证
uname -sr
Docker安装
Duration: 10
我们这次采用Docker。安装Podman详见实验中关于Podman的文档.
安装必要的软件包
sudo yum install -y yum-utils
添加Docker国内镜像下载仓库
sudo yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
查看仓库中详细的Dcoker版本
yum list docker-ce --showduplicates | sort -r
安装最新版本Docker
sudo yum install docker-ce docker-ce-cli containerd.io
安装指定版本
kubernetes有对应版本要求,根据要求选择对应的版本号即可。<br/>
详见:https://github.com/kubernetes/kubernetes/tree/master/CHANGELOG
sudo yum install docker-ce-<VERSION_STRING> docker-ce-cli-<VERSION_STRING> containerd.io
示例:
sudo yum install docker-ce-19.03.9-3.el7 docker-ce-cli-19.03.9-3.el7 containerd.io
启动Dcoker
sudo systemctl start docker
sudo systemctl enable docker
验证
docker version
配置调优
Duration: 10
配置国内镜像加速器
因为互联网的原因,从国外下载镜像会比较慢,所以需要单独配置下国内的镜像加速器。
tee /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["https://mirror.ccs.tencentyun.com"]
}
EOF
加载重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
验证
docker info
参考镜像加速器地址:
- 中国科技大学:https://docker.mirrors.ustc.edu.cn
- 腾讯:https://mirror.ccs.tencentyun.com
- 网易:http://hub-mirror.c.163.com
- 七牛云加速器:https://reg-mirror.qiniu.com
- 阿里云-申请步骤:https://<你的ID>.mirror.aliyuncs.com