节点安装 Docker
本文覆盖 ubuntu / centos / redhat 三类系统安装 docker、docker-compose、kubectl 客户端,以及 docker 的镜像加速、根目录配置。
1. ubuntu 安装 docker
1.1 卸载旧版本 docker
sudo systemctl stop docker
apt-get --purge remove -y *docker*
apt-get --purge remove -y docker*
sudo apt-get autoremove -y
dpkg -l | grep docker
sudo rm -rf /var/lib/docker
sudo rm -rf /data/docker
sudo rm -rf /var/lib/containerd
1.2 在线安装 docker
### 设置 docker 存储库
sudo apt-get update -y
sudo apt-get install -y ca-certificates curl gnupg lsb-release vim git wget net-tools
### 添加官方秘钥
sudo mkdir -p /etc/apt/keyrings
rm -rf /etc/apt/keyrings/docker.gpg
rm -rf /etc/apt/sources.list.d/docker.list
### 使用 docker 官方源
#curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
### 国内使用阿里源
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | apt-key add -
arch=amd64 # 或者 arm64
sudo add-apt-repository -y "deb [arch=${arch}] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"
### 安装 docker
sudo apt-get update
### 查看存储库中的可用版本(需要 19.03 以上的 docker)
# 搜索可用版本
apt-cache madison docker-ce
# 安装最新版 docker,但不建议直接使用新版本
# sudo apt install -y docker-ce
# 可以提前软连 docker 根目录
# ln -s /data/docker /var/lib/
# 建议不要直接装最新版,而是安装指定版本,示例如下
apt install -y docker-ce=5:27.0.3-1~ubuntu.20.04~focal # ubuntu 2020
apt install -y docker-ce=5:27.0.3-1~ubuntu.22.04~jammy # ubuntu 2022
apt install -y docker-ce=5:27.0.3-1~ubuntu.24.04~noble # ubuntu 2024
# 安装 docker-compose
apt install -y docker-compose
1.3 离线安装 docker
wget https://download.docker.com/linux/static/stable/x86_64/docker-24.0.6.tgz
# arm64 下载 wget https://download.docker.com/linux/static/stable/aarch64/docker-24.0.6.tgz
tar -zxvf docker-24.0.6.tgz
sudo cp docker/* /usr/bin/
vim /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
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=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 enable docker.service
systemctl start docker
离线安装 docker-compose:
wget https://githubfast.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-x86_64
#arm64 下载:wget https://githubfast.com/docker/compose/releases/download/v5.0.2/docker-compose-linux-aarch64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose -v
⚠️ 待核实:docker-compose 的下载版本写的是
v5.0.2,但 docker compose 官方发布版本号通常是v2.x(不存在 v5.0.2 的 release),原文此处可能有误。无对应代码可核实,请按实际可下载的版本(如 v2.x 最新版)替换。
2. ubuntu 安装 k8s 客户端(非必须)
apt-get update && apt-get install -y apt-transport-https
# 添加并信任 APT 证书
curl https://mirrors.aliyun.com/kubernetes/apt/doc/apt-key.gpg | apt-key add -
# 添加源地址
add-apt-repository "deb https://mirrors.aliyun.com/kubernetes/apt/ kubernetes-xenial main"
apt-get update -y
# 搜索可用版本
apt-cache madison kubectl
# 安装最新版,最好指定版本
# apt install -y kubectl
# 安装指定版本
apt install -y kubectl=1.24.10-00
# 添加 completion,最好放入 .bashrc 中
apt install -y bash-completion
source <(kubectl completion bash)
3. centos 安装 docker
3.1 安装 docker
# 先卸载原有 docker
service docker stop
rpm -qa | grep docker | xargs yum remove -y
rpm -qa | grep docker
rm -rf /usr/lib/systemd/system/docker.service
# 安装镜像源
yum install -y container-selinux yum-utils
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum update -y
# 查看可用版本
yum list docker-ce --showduplicates
# 安装指定版本
yum install -y docker-ce
#yum install -y docker-ce-26.1.3-1.el8
#yum install -y docker-ce-26.1.3-1.el9
systemctl start docker
3.2 yum 安装 k8s 的源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF
setenforce 0
yum install -y kubectl-1.24.0
source <(kubectl completion bash)
4. redhat 安装 docker
4.1 安装 docker
dnf update -y
dnf install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io
systemctl start docker
systemctl enable docker
5. 配置 docker
mkdir -p /etc/docker/
# 添加如下配置,先把下面这个文件中的中文注释去掉,不然可能会有问题
cat > /etc/docker/daemon.json <<EOF
{
# 镜像加速器,拉取 docker 官方镜像时需要
"registry-mirrors": ["https://hub.rat.dev/","https://docker.xuanyuan.me", "https://docker.m.daocloud.io","https://dockerproxy.com"],
# dns 可不配置
"dns": ["114.114.114.114","8.8.8.8"],
# k8s 集群可以同时拉取多个镜像
"max-concurrent-downloads": 30,
# 默认在系统根目录下,如果磁盘有限可以改为其他有空间的目录,占用存储会越来越多
"data-root": "/data/docker",
# 内部如果有 http 的镜像仓库,可以添加
"insecure-registries":["docker.oa.com:8080"]
}
EOF
systemctl stop docker
systemctl daemon-reload
systemctl start docker
6. 切换 docker 根目录
mkdir -p /data/docker/
# 将源 docker 目录下文件,复制到新目录下
cp -R /var/lib/docker/* /data/docker/
然后按照上面的配置 daemon.json,配置根目录为 /data/docker/。
之后就可以把之前的目录删掉:
rm -rf /var/lib/docker
注意
如果镜像源没有生效,那在拉取 dockerhub 镜像的前面加上 registry.cn-hangzhou.aliyuncs.com/。
例如,拉取 docker pull rancher/rancher:v2.8.5 替换为:
docker pull registry.cn-hangzhou.aliyuncs.com/rancher/rancher:v2.8.5