CentOS 安装 Docker CE
Docker 划分为 CE 和 EE。CE 即社区版(免费,支持周期三个月),EE 即企业版,强调安全,付费使用。
Docker CE 支持 64 位版本 CentOS 7,并且要求内核版本不低于 3.10,CentOS 7 满足最低内核的要求,但由于内核版本比较低,部分功能(如 overlay2 存储层驱动)无法使用,并且部分功能可能不太稳定。
卸载旧版本:如果没有安装过则无需卸载
yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
安装iptables: docker需要依赖iptables,如果机器没有安装会报错,可以安装:
yum -y install iptables
安装方法
一定要先关闭selinux,否则启动容器容易出错
大多数用户会 设置Docker的存储库并从中进行安装,以简化安装和升级任务。这是推荐的方法。
一些用户下载并手动安装 RPM软件包, 并完全手动管理升级。这在诸如在无法访问互联网的空白系统上安装Docker的情况下很有用。
在测试和开发环境中,一些用户选择使用自动 便利脚本来安装Docker。(不推荐)
一. 使用存储库安装:
1、安装yum-utils软件包(提供yum-config-manager 实用程序)并设置稳定的存储库.
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
国内源:
- 清华大学源: yum-config-manager –add-repo https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo (注意add前面为双横杠)
- 阿里云源:yum-config-manager –add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo (注意add前面为双横杠)
2、安装最新版本的Docker Engine和容器:
sudo yum install -y docker-ce docker-ce-cli containerd.io 或者安装指定版本:yum install -y docker-ce-18.09.7 docker-ce-cli-18.09.7 containerd.io
建立docker组:
sudo groupadd docker
将当前用户加入到docker组中:(linux环境中一般不直接使用root用户)
sudo usermod -aG docker 用户
修改docker启动配置文件,执行命令如下:
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"log-driver": "json-file",
"storage-driver": "overlay2",
"data-root": "/data/docker",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"log-opts":{
"max-size": "300m",
"max-file": "2"
},
"live-restore": true
}
EOF
- native.cgroupdriver=systemd:修改驱动为systemd
- max-concurrent-downloads:每个请求最大并发下载量,默认为3
- max-concurrent-uploads:每次推送的最大同时上传数,默认为5
- log-driver:容器日志的默认驱动程序,默认为json-file
- storage-driver: 要使用的存储驱动程序
- data-root: Docker运行时使用的根路径,默认/var/lib/docker
- storage-opts: 存储驱动程序选项
- log-opts: 容器默认日志驱动程序选项
- live-restore: 容器运行时重启docker,对容器不影响
3、启动docker:
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker
二、使用rpm软件包安装
如果您不能使用Docker的存储库来安装Docker,则可以下载该.rpm版本的 文件并手动安装。每次要升级Docker Engine时,都需要下载一个新文件。
转到https://download.docker.com/linux/centos/ 并选择您的CentOS版本。然后浏览x86_64/stable/Packages/ 并下载.rpm要安装的Docker版本的文件。
1、安装Docker Engine,将以下路径更改为下载Docker软件包的路径:
sudo yum install /path/to/package.rpm
2、创建docker用户组:
sudo groupadd docker
将当前用户加入到docker组中:(linux环境中一般不直接使用root用户)
sudo usermod -aG docker 用户
3、 启动Docker:
sudo systemctl enable dcoker
sudo systemctl start docker
注:安装完成后需要开启ipv4转发,外面无法访问容器内部,提示 WARNING: IPv4 forwarding is disabled. 开启方法如下:
#编辑文件
vim /usr/lib/sysctl.d/00-system.conf
#添加内容:
net.ipv4.ip_forward=1
#重启网卡
systemctl restart network
或者:
也可以编辑文件vim /etc/sysctl.conf,添加如下内容
net.ipv4.ip_forward=1 #开启ipv4_forward
sysctl -p #让命令生效
三、通过二进制包方式来安装:
下载二进制文件包,下载地址:https://download.docker.com/linux/static/stable/x86_64/
执行下面命令,将二进制包解压,如下:
#解压二进制包
tar zxvf docker-19.03.9.tgz
#移动二进制文件到环境变量路径下,里面的docker是Client,dockerd是docker Engine
mv docker/* /usr/bin
修改docker启动配置文件 ,执行命令如下:
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors" : ["https://registry.docker-cn.com"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"log-driver": "json-file",
"storage-driver": "overlay2",
"data-root": "/data/docker",
"log-opts":{
"max-size": "300m",
"max-file": "2"
},
"live-restore": true,
"bip": "172.16.0.1/16",
"dns": [
"8.8.8.8",
"8.8.4.4"
]
}
EOF
通过systemd 来管理 docker Engine,执行命令如下:
cat > /usr/lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
启动并设置开机启动 :
systemctl daemon-reload
systemctl start docker
systemctl enable docker
通过二进制安装docker的脚本如下:
#!/bin/bash
# @Function: Install Docker CE
# @Author: Gong Guan
# @Date: 2021-11-01
set -e
DfileName=docker-19.03.9.tgz
if [ -f ${DfileName} ];then
echo "<<<<<<<<<<<解压文件(Unzip File)>>>>>>>>>>>>"
tar -zxvf ${DfileName}
[ $? -eq 0 ] && echo "<<<<<<<<<<<File Unzip success>>>>>>>>>>>>"
mv docker/* /usr/bin
else
echo "Docker File Not Found"
exit 1
fi
[ ! -d /etc/docker ] && mkdir /etc/docker
echo "<<<<<<<<<<<<<<Config daemon.json>>>>>>>>>>>>>>"
cat > /etc/docker/daemon.json << EOF
{
"exec-opts": ["native.cgroupdriver=systemd"],
"registry-mirrors" : ["https://registry.docker-cn.com"],
"max-concurrent-downloads": 10,
"max-concurrent-uploads": 5,
"log-driver": "json-file",
"storage-driver": "overlay2",
"log-opts":{
"max-size": "300m",
"max-file": "2"
},
"live-restore": true,
"bip": "172.16.0.1/16",
"dns": [
"8.8.8.8",
"8.8.4.4"
]
}
EOF
echo "<<<<<<<<<<<设置服务托管docker>>>>>>>>>>>>>>"
cat > /lib/systemd/system/docker.service << EOF
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
EOF
echo "<<<<<<<<<<<<<<设置开机自启动(Startup self)>>>>>>>>"
systemctl enable docker
echo "<<<<<<<<<<<<<<开启docker(startup Docker)>>>>>>>>>>"
systemctl start docker
echo "<<<<<<<<<<<<<<查看docker状态(status)>>>>>>>>>>>"
systemctl status docker
卸载Docker
卸载Docker Engine,CLI和Containerd软件包:
sudo yum remove docker-ce docker-ce-cli containerd.io
主机上的映像,容器,卷或自定义配置文件不会自动删除。要删除所有图像,容器和卷
sudo rm -rf /var/lib/docker
默认情况下, docker 命令会使用 Unix socket 与 Docker 引擎通讯。而只有 root 用户和 docker 组的用户才可以访问 Docker 引擎的 Unix socket。出于安全考虑,一般 Linux 系统 上不会直接使用 root 用户。因此,更好地做法是将需要使用 docker 的用户加入 docker 用户组。
配置镜像加速
国内从 Docker Hub 拉取镜像有时会遇到困难,此时可以配置镜像加速器。Docker 官方和国内很多云服务商都提供了国内加速器服务,例如:
- Docker 官方提供的中国镜像:https://registry.docker-cn.com/
- 阿里云加速器:登录官网->镜像工具->加速器->复制加速器地址
- 网易加速器: http://hub-mirror.c.163.com/
- 中国科技大学:https://docker.mirrors.ustc.edu.cn
- 百度云加速器:https://mirror.baidubce.com/
对于使用 upstart 的系统而言( Ubuntu 14.04、Debian 7 Wheezy ),编辑 /etc/default/docker 文件,在其中的 DOCKER_OPTS 中 添加获得的加速器配置:
DOCKER_OPTS="--registry-mirror=https://registry.docker-cn.com"
sudo service docker restart #配置后重启服务
对于使用 systemd 的系统( Ubuntu 16.04+、Debian 8+、CentOS 7 ),请在 /etc/docker/daemon.json 中写入如下内容(如果文件不存 在请新建该文件,可配置多个加速器)
{ "registry-mirrors": [
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com/"
]
}
重新启动服务:
systemctl daemon-reload && systemctl restart docker
检查加速器是否配置成功
执行命令docker info,如果 看到如下内容,表示配置成功,如图:



