kuruite 发表于 2021-1-15 14:35

容器部署实验文档

这个文档让你知道你每一步是在干什么,执行的命令是什么含义。
知其然知其所以然
# 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

通过(https://access.redhat.com/articles/3078)可以找到系统版本与内核版本的对应关系
### 安装依赖
查看当前内核版本
```
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
```
参考镜像加速器地址:
1. 中国科技大学:https://docker.mirrors.ustc.edu.cn
2. 腾讯:https://mirror.ccs.tencentyun.com
3. 网易:http://hub-mirror.c.163.com
4. 七牛云加速器:https://reg-mirror.qiniu.com
5. 阿里云-[申请步骤](https://cr.console.aliyun.com/cn-hangzhou/instances/mirrors):https://<你的ID>.mirror.aliyuncs.com

散与聚 发表于 2021-1-15 15:19

好文章,顶一个

change 发表于 2021-1-15 16:14

本帖最后由 change 于 2021-1-15 16:28 编辑

写得很详细了,一般来说,CentOS7 只要下载一个阿里去的repo,再用yum安装就可以了。
页: [1]
查看完整版本: 容器部署实验文档