Docker#

删除旧版本#

for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc
do
  sudo apt-get remove $pkg
done

设置 Docker 源#

# 设置 GPG 公钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 设置 Docker 仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 设置 GPG 公钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 设置 Docker 仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
# 设置 GPG 公钥
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# 设置 Docker 仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

安装 Docker#

sudo apt-get install apt-transport-https \
  ca-certificates \
  curl \
  software-properties-common \
  docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Docker Registry 加速服务#

Warning

使用国内的 Docker Hub 镜像前,必须准备一个该镜像站对应的账号和密码,否则将无法通过该源加速。因此,使用无效源时,会被重定向到 https://registry-1.docker.io/v2/

Error

科大 Docker Hub 不对校外开放,因此无法使用科大源。

sudo docker login docker.mirrors.ustc.edu.cn
sudo mkdir -p ~/.docker
cat <<EOF | sudo tee ~/.docker/config.json
{
  "auths": {
    "https://docker.mirrors.ustc.edu.cn" : {
      "auth": "put-your-auth-code-here",
      "email": "put-your-email-here"
    }
  }
}
EOF
if [ -f "/etc/docker/daemon.json" ]
then
echo "/etc/docker/daemon.json already exists, please modify it manually."
else
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}
EOF
fi

sudo systemctl restart docker
sudo docker info

Error

阿里云 Docker Hub 下架了,因此无法使用阿里云源。

username=
sudo docker login $username.mirror.aliyuncs.com
sudo mkdir -p ~/.docker
username=
cat <<EOF | sudo tee ~/.docker/config.json
{
  "auths": {
    "https://$username.mirror.aliyuncs.com" : {
      "auth": "put-your-auth-code-here",
      "email": "put-your-email-here"
    }
  }
}
EOF
if [ -f "/etc/docker/daemon.json" ]
then
echo "/etc/docker/daemon.json already exists, please modify it manually."
else
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["https://$username.mirror.aliyuncs.com"]
}
EOF
fi

sudo systemctl restart docker
sudo docker info

Error

清华 Docker Hub 不对校外开放,因此无法使用清华源。

sudo docker login docker.mirrors.tuna.tsinghua.edu.cn
sudo mkdir -p ~/.docker
cat <<EOF | sudo tee ~/.docker/config.json
{
  "auths": {
    "https://docker.mirrors.tuna.tsinghua.edu.cn" : {
      "auth": "put-your-auth-code-here",
      "email": "put-your-email-here"
    }
  }
}
EOF
if [ -f "/etc/docker/daemon.json" ]
then
echo "/etc/docker/daemon.json already exists, please modify it manually."
else
sudo mkdir -p /etc/docker
cat <<EOF | sudo tee /etc/docker/daemon.json
{
  "registry-mirrors": ["https://docker.mirrors.tuna.tsinghua.edu.cn"]
}
EOF
fi

sudo systemctl restart docker
sudo docker info

验证 Docker 是否安装成功#

sudo docker run hello-world

卸载 Docker#

sudo apt-get purge docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd

删除无效的镜像#

# 清理 <none> 容器
docker image prune -f
docker rmi -f $(docker images | grep '<none>' | awk '{print $3}')

# 清理异常退出的容器
docker rm $(docker ps -a | grep Exited | awk '{print $1}')

列出所有镜像#

docker images

删除指定镜像#

docker image rm 192.168.163.146:5000/python3action:1.0.0
docker image rm openwhisk/action-python-v3.7:1.17.0