三种方式:2种在线,1种离线
建议安装前,先环境准备:
1.关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
2.关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久
setenforce 0 # 临时
3.桥接的IPv4流量传递到iptables的链
cat > /etc/sysctl.d/k8s.conf << EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl --system # 生效
4.转发IPv4流量
编辑文件
vi /etc/sysctl.conf
net.ipv4.ip_forward=1 #修改/新增这一行
执行生效:
sysctl -p
建议:最好重启服务器 reboot
一、安装
有时候“在线安装”时候,提示某个依赖包需要更高版本,这时候要不更新yum update这个依赖包,要不安装适配的低版本docker。
比如:我的飞腾服务器,安装提示 nothing provides container-selinux >= 2:2.74 needed by docker-ce-3:26.1.3-1.el8.aarch64 ,但是官方 在线repo仓库 最新只有 2.73版本无法update, 这时候我选择“离线安装”20.10.23版本。
方式1-在线(amd和arm都可以)
1、添加Centos源和docker镜像源:
#如果本身系统有yum源,这个可以忽略不要,建议用openEuler的源:参考:https://forum.openeuler.org/t/topic/768
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo
# 这个需要,获取docker源
wget https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo -O /etc/yum.repos.d/docker-ce.repo
2、更改名称:
sed -i 's/\$releasever/8/g' /etc/yum.repos.d/docker-ce.repo
3、刷新包缓存
dnf clean all
dnf makecache
4、安装
dnf install docker-ce -y
方式2-在线 (忽略-暂报错缺少依赖)
# Step 1: 添加软件源信息
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# Step 2
sudo sed -i 's+download.docker.com+mirrors.aliyun.com/docker-ce+' /etc/yum.repos.d/docker-ce.repo
# Step 3
vi /etc/yum.repos.d/docker-ce.repo
### 把 $basearch 改为 7或8
# Step 4
dnf update
# Step 5
dnf install -y docker-ce
方式3- 离线
内容如下:
docker下载地址:
https://download.docker.com/linux/static/stable/
所有版本都有,根据你的需求去选择。我这里下载的docker版本号是docker-27.4.1.tgz
或者其他版本: 20.10.23
wget https://download.docker.com/linux/static/stable/x86_64/docker-27.4.1.tgz
tar -zxvf docker-27.4.1.tgz
cp docker/* /usr/bin/
vi /etc/systemd/system/docker.service # (创建配置文件)
配置内容如下:
[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 --selinux-enabled=false
#ExecStart=/usr/bin/dockerd --selinux-enabled=false --insecure-registry=127.0.0.1 加了 --insecure-registry=127.0.0.1,就无法配置 daemon.json("iptables": false) 解决docker与 firewalld冲突(https://blog.csdn.net/liyanggyang/article/details/130386522?sharetype=blogdetail&sharerId=130386522&sharerefer=PC&sharesource=liyanggyang&spm=1011.2480.3001.8118)
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
继续执行如下命令:
chmod +x /etc/systemd/system/docker.service
systemctl daemon-reload
systemctl start docker
systemctl enable docker
docker --version
Docker version 27.4.1, build b9d17ea
配置加速器加速下载docker镜像
mkdir -p /etc/docker
vi /etc/docker/daemon.json
{
"registry-mirrors": ["https://docker.m.daocloud.io"]
}
#重启服务:
systemctl daemon-reload
systemctl restart docker
二、安装后配置
5、启动
systemctl enable docker && systemctl start docker
6、配置地址
cat > /etc/docker/daemon.json << EOF
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
EOF
7、重启
systemctl restart docker