安装并配置docker

1. 什么是Docker容器?

Docker是一种轻量级的虚拟化技术,同时是一个开源的应用容器运行环境搭建平台,可以让开发者以便捷方式打包应用到一个可移植的容器中,然后安装至任何运行Linux或Windows等系统的服务器上。相较于传统虚拟机,Docker容器提供轻量化的虚拟化方式、安装便捷、启停速度快。

本文主要讲述如何在Centos 7.9操作系统上安装Docker, 当然本教程也适合RHEL系列的其他Linux发型版本.

2. 为什么需要Docker容器?

虚拟机(Virtual Machine,简称VM)的发展,减轻了企业对硬件资源的依赖,它将一台物理设备虚拟为多个逻辑设备,每个逻辑设备可运行不同的操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高设备的工作效率。然而,传统VM需要安装操作系统才能执行应用程序,占用系统资源过多。多数情况下,用户只需要运行简单的应用程序,采用VM技术操作繁琐且造成资源浪费。倘若需要迁移应用服务程序,则需迁移整个VM,因此企业迫切需要轻量级的虚拟化技术。

容器,就是一种轻量级的虚拟化技术,目的和虚拟机一样,都是为了创造“隔离环境”。但是它不像VM采用操作系统级的资源隔离,容器采用的是进程级的系统隔离。Docker作为创建容器的主流工具,近年来迅速发展,它的优势在于可以让开发者将企业需要的各种应用及应用依赖文件封装在Docker镜像文件中,然后在任何物理设备(Linux设备或Window设备等)上安装运行实现虚拟化,让应用程序彻底脱离底层设备,可以在物理机之间灵活迁移部署,使运维工程师摆脱了繁琐的环境部署,极大的提高了工作效率,同时减少了部署过程中的潜在风险。

Docker容器具有以下三大特点:

轻量化:一台主机上运行的多个Docker容器可以共享主机操作系统内核;启动迅速,只需占用很少的计算和内存资源。
标准开放:Docker容器基于开放式标准,能够在所有主流Linux版本、Microsoft Windows以及包括VM、裸机服务器和云在内的任何基础设施上运行。
安全可靠:Docker赋予应用的隔离性不仅限于彼此隔离,还独立于底层的基础设施。Docker默认提供最强的隔离,因此应用出现问题,也只是单个容器的问题,而不会波及到整台主机。

3. 如何安装Docker

3.1. 配置 docker-ce yum 源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
# 使用阿里云yum源
sudo curl https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

# 或者华为云yum源,两者选其一
# for centos
sudo curl https://repo.huaweicloud.com/docker-ce/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

# for Fedora
sudo curl https://repo.huaweicloud.com/docker-ce/linux/fedora/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo

# 将download.docker.com替换为华为软件仓库
sudo sed -i 's+download.docker.com+repo.huaweicloud.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo

# 更新yum源缓存
sudo dnf makecache

3.2. 安装docker

1
2
3
4
5
6
7
8

#选择合适的版本
dnf list docker-ce --showduplicates | sort -r
#安装指定版本
sudo dnf install -y docker-ce-3:24.0.7-1.el7.x86_64

# 或者 安装最新版本
sudo dnf install -y docker-ce

3.3. 配置 docker

3.3.1. 配置镜像加速

由于 dockerhub 镜像仓库在国外,访问速度较慢,下载镜像的过程中,多数情况下会因为超时而失败,所以强烈建议配置镜像加速。
另外在整个安装过程中主要需要与 internet 上三个镜像仓库打交道

  1. DockerHub,
  2. gcr.io 这个几乎不能访问,后面会介绍到如何获得其上相应的镜像
  3. quay.io , 主要是一些网络组件相关的镜像
1
2
3
4
5
6
$sudo vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://<你的ID>.mirror.aliyuncs.com"],
"live-restore": true,
"debug": true
}

镜像加速列表

提供者镜像地址
科大镜像https://docker.mirrors.ustc.edu.cn/
网易https://hub-mirror.c.163.com/
阿里云<https://<你的ID>.mirror.aliyuncs.com>
七牛云加速器https://reg-mirror.qiniu.com
daocloud 加速器<http://<你的ID>.m.daocloud.io/>

阿里云获取镜像加速器地址

其他还有华为云镜像加速,显然是为华为云用户准备的,请参考这篇文章进行配置镜像加速

3.3.2. docker iptables FORWARD 策略

docker 自 1.13 版起会自动设置 iptables 的 FORWARD 默认策略为 DROP,这可能会影响 kubernetes 集群依赖的报文转发功能,因此,需要在 docker 服务启动后,重新将 FORWARD 链的默认策略设置为 ACCEPT,方式是修改/usr/lib/systemd/system/docker.service 文件,在 “ExecStart=/usr/bin/dockerd” 一行之后新增加一行内容如下:

1
ExecStartPost=/usr/sbin/iptables -P FORWARD ACCEPT

3.4. 启动docker

重载完成后即可启动 docker 服务:

1
2
3
4
# 重新加载docker服务设置
sudo systemctl daemon-reload
# 重启docker服务
sudo systemctl start docker

设置为开机自启动

1
systemctl enable docker

3.5. 测试docker

查看docker版本

1
2
$ docker --version
Docker version 24.0.7, build afdd53b

运行hello-world镜像, 能看到hello world消息, 说明docker镜像配置没有问题

1
2
3

sudo docker run hello-world

4. 如何卸载Docker?

4.1. 删除docker服务

1
2
3
4

systemctl stop docker
systemctl disable docker

4.2. 查询已安装的docker安装包

首先搜索已安装的docker安装包

1
2
3
4
5

yum list installed|grep docker
# 或者
rpm -qa|grep docker

输出

1
2
3
4
5
6
containerd.io.x86_64                  1.6.24-3.1.el7             @docker-ce-stable
docker-buildx-plugin.x86_64 0.11.2-1.el7 @docker-ce-stable
docker-ce.x86_64 3:24.0.7-1.el7 @docker-ce-stable
docker-ce-cli.x86_64 1:24.0.7-1.el7 @docker-ce-stable
docker-ce-rootless-extras.x86_64 24.0.7-1.el7 @docker-ce-stable
docker-compose-plugin.x86_64 2.21.0-1.el7 @docker-ce-stable

4.3. 删除安装包

1
2
yum remove docker-buildx-plugin.x86_64 containerd.io.x86_64 docker-ce-cli.x86_64 docker-ce.x86_64 docker-ce-rootless-extras.x86_64 docker-compose-plugin.x86_64 

4.4. 删除docker 镜像

1
2
3

rm -rf /var/lib/docker

5. 相关阅读

安装并配置docker-compose