1. 安装

# 删除旧的
sudo apt-get remove docker docker-engine docker.io containerd docker-ce docker-ce-cli containerd.io runc 
sudo apt update && sudo apt upgrade -y

# 安装必要依赖
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common gnupg lsb-release

# 添加阿里云GPG密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

# 添加阿里云Docker源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 更新软件包列表
sudo apt update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin -y
# 启动
sudo service docker start
# 查看
sudo service docker status

2. 报错

  1. failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register “bridge” driver: failed to create NAT chain DOCKER: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.8.7 (nf_tables): Could not fetch rule set generation id: Permission denied (you must be root)
    (exit status 4)

1.检查当前 iptables 版本配置:
> sudo update-alternatives --config iptables
选择 iptables-legacy (通常对应选项 1):

2.同样地,为 IPv6 也进行切换:
> sudo update-alternatives --config ip6tables
同样选择 ip6tables-legacy 选项 (通常对应选项 1)

  1. failed to start daemon: Error initializing network controller: error obtaining controller instance: failed to register “bridge” driver: failed to create NAT chain DOCKER: iptables failed: iptables --wait -t nat -N DOCKER: iptables v1.8.7 (legacy): can’t initialize iptables table `nat’: Permission denied (you must be root) Perhaps iptables or your kernel needs to be upgraded.

> vim /etc/docker/daemon.json

{
"iptables": false,
"ip-forward": true,
"bridge": "none",
"registry-mirrors": [
 "https://docker.mirrors.ustc.edu.cn",
   "https://hub-mirror.c163.com",
   "https://mirror.baidubce.com",
   "https://mirror.ccs.tencentyun.com",
  "https://registry.cn-hangzhou.aliyuncs.com",
   "https://registry.docker-cn.com",
   "https://docker.1ms.run",
   "https://dockerproxy.com",
   "https://hub.rat.dev",
   "https://daocloud.io"
 ]
}
  1. /etc/init.d/docker: 62: ulimit: error setting limit (Invalid argument)
    > vim /etc/init.d/docker
    line 62
    ulimit -n 65536

更多推荐