Skip to main content

ubuntu Jammy 22.04 安装 Docker CE

Docker CE(Docker Community Edition)是 Docker 的免费社区版本, 用于个人开发和小型团队. 它包含了 Docker 的核心功能, 允许用户创建、运行和管理容器. 容器是轻量级的、可移植的、自包含的运行时环境, 用于在计算机上运行应用程序. 通过使用 Docker, 用户可以在本地开发和测试容器, 然后将其部署到生产环境中.

CE 与 EE 的简单区别:

  • Docker CE(Docker Community Edition) 是社区版,简单理解是免费使用,提供小企业与小的 IT 团队使用,希望从 Docker 开始,并尝试基于容器的应用程序部署。
  • Docker EE(Docker Enterprise Edition) 是企业版,收费。提供功能更强。适合大企业与打的 IT 团队。为企业开发和 IT 团队设计,他们在生产中构建、交付和运行业务关键应用程序。
note
  • 官方文档:Install Docker Engine on Ubuntu
  • Docker 对内核版本有依赖,Linux Kernel >= 4.14
  • Docker Engine 兼容 x86_64 (or amd64), armhf, arm64s390x 架构。

通过包管理器安装

卸载旧版本

如果你过去安装过 docker, 先删掉:

sudo apt-get remove docker docker-engine docker.io containerd runc

安装依赖

sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common

信任 GPG 公钥

sudo mkdir -p /etc/apt/keyrings

#docker.com
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#tuna
curl -fsSL https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#huaweicloud
curl -fsSL https://repo.huaweicloud.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#aliyun
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#tencentcloud
curl -fsSL http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#163
curl -fsSL http://mirrors.163.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#volces
curl -fsSL https://mirrors.volces.com/docker/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#USTC
curl -fsSL http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#ISCAS
curl -fsSL https://mirror.iscas.ac.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#HIT
curl -fsSL https://mirrors.hit.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#SJTU
curl -fsSL http://mirror.sjtu.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#PKU
curl -fsSL https://mirrors.pku.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
#XJTU
curl -fsSL https://mirrors.xjtu.edu.cn/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

#授予对 Docker 公钥的读取权限
sudo chmod a+r /etc/apt/keyrings/docker.gpg

添加软件源

#docker.com
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

#tuna mirror
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#huaweicloud
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://repo.huaweicloud.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#aliyun
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#tencentcloud
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#163
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.163.com/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#volces
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.volces.com/docker/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#USTC
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#ISCAS
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirror.iscas.ac.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#HIT
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.hit.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#SJTU
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] http://mirror.sjtu.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#PKU
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.pku.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

#XJTU
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.xjtu.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

更新索引文件

sudo apt-get update

安装 Docker Engine

安装 Docker Engine/containerd/Docker Compose.

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

使用安装包安装

note

官方下载站为 https://download.docker.com/linux/ubuntu/dists/, 下载速度慢点可以使用国内镜像站.

  • Aliyun 阿里云 https://mirrors.aliyun.com/docker-ce/linux/ubuntu/dists/
  • AzureChinaCloud Azure 中国 https://mirror.azure.cn/docker-ce/linux/ubuntu/dists/
  • HuaWeiCloud 华为云 https://repo.huaweicloud.com/docker-ce/linux/ubuntu/dists/
  • TencentCloud 腾讯云 http://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/dists/
  • 163 网易 http://mirrors.163.com/docker-ce/linux/ubuntu/dists/
  • volces 火山引擎 https://mirrors.volces.com/docker/linux/ubuntu/dists/
  • USTC 中科大 http://mirrors.ustc.edu.cn/docker-ce/linux/ubuntu/dists/
  • ISCAS 中科院软件研究所 https://mirror.iscas.ac.cn/docker-ce/linux/ubuntu/dists/
  • HIT 哈工大 https://mirrors.hit.edu.cn/docker-ce/linux/ubuntu/dists/
  • SJTU 上交 http://mirror.sjtu.edu.cn/docker-ce/linux/ubuntu/dists/
  • PKU 北大 https://mirrors.pku.edu.cn/docker-ce/linux/ubuntu/dists/
  • XJTU 西交 https://mirrors.xjtu.edu.cn/docker-ce/linux/ubuntu/dists/
  1. 访问 Index of linux/ubuntu/dists/ .

  2. 选择 Ubuntu 版本 (例如,Ubuntu 2204 为 jammy).

  3. 点击 pool/stable/ 选择系统架构 (x86_64/amd64, armhf, arm64s390x ),常见的如 x86_64/amd64

  4. 下载 Docker Engine, CLI, containerd, and Docker Compose 安装包。

    • containerd.io_<version>_<arch>.deb
    • docker-ce_<version>_<arch>.deb
    • docker-ce-cli_<version>_<arch>.deb
    • docker-compose-plugin_<version>_<arch>.deb
  5. 安装下的的 .deb 包。

    sudo dpkg -i ./containerd.io_<version>_<arch>.deb \
    ./docker-ce_<version>_<arch>.deb \
    ./docker-ce-cli_<version>_<arch>.deb \
    ./docker-compose-plugin_<version>_<arch>.deb

通过一键脚本安装

Docker 提供了一个自动配置与安装的脚本,支持 Debian、RHEL、SUSE 系列及衍生系统的安装。

note

不建议生产环境中使用一键脚本安装!The convenience script isn't recommended for production environments.

使用国内镜像站

#tuna 清华
export DOWNLOAD_URL="https://mirrors.tuna.tsinghua.edu.cn/docker-ce"
#Aliyun 阿里云
export DOWNLOAD_URL="https://mirrors.aliyun.com/docker-ce"
#AzureChinaCloud Azure中国
export DOWNLOAD_URL="https://mirror.azure.cn/docker-ce"
#HuaWeiCloud 华为云
export DOWNLOAD_URL="https://repo.huaweicloud.com/docker-ce"
#TencentCloud 腾讯云
export DOWNLOAD_URL="http://mirrors.cloud.tencent.com/docker-ce"
#163 网易
export DOWNLOAD_URL="http://mirrors.163.com/docker-ce"
#volces 火山引擎
export DOWNLOAD_URL="https://mirrors.volces.com/docker"
#USTC 中科大
export DOWNLOAD_URL="http://mirrors.ustc.edu.cn/docker-ce"
#ISCAS 中科院软件研究所
export DOWNLOAD_URL="https://mirror.iscas.ac.cn/docker-ce"
#HIT 哈工大
export DOWNLOAD_URL="https://mirrors.hit.edu.cn/docker-ce"
#SJTU 上交
export DOWNLOAD_URL="http://mirror.sjtu.edu.cn/docker-ce"
#PKU 北大
export DOWNLOAD_URL="https://mirrors.pku.edu.cn/docker-ce"
#XJTU 西交
export DOWNLOAD_URL="https://mirrors.xjtu.edu.cn/docker-ce"

一键安装

curl -fsSL https://get.docker.com -o get-docker.sh
DRY_RUN=1 sudo sh ./get-docker.sh

curl -fsSL https://get.docker.com/ | sudo sh
#--OR--
wget -O- https://get.docker.com/ | sudo sh

配置 Docker

安装校验

$ sudo docker version
Client:
Version: 20.10.17
API version: 1.41
Go version: go1.17.11
Git commit: 100c701
Built: Mon Jun 6 22:56:42 2022
OS/Arch: linux/amd64
Context: default
Experimental: true

Server: Docker Engine - Community
Engine:
Version: 20.10.17
API version: 1.41 (minimum version 1.12)
Go version: go1.17.11
Git commit: a89b842
Built: Mon Jun 6 23:01:45 2022
OS/Arch: linux/amd64
Experimental: true
containerd:
Version: v1.6.6
GitCommit: 10c12954828e7c7c9b6e0ea9b0c02b01407d3ae1
runc:
Version: 1.1.2
GitCommit: v1.1.2-0-ga916309f
docker-init:
Version: 0.19.0
GitCommit: de40ad0

运行 hello-world 镜像

$ sudo docker run hello-world

Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/

For more examples and ideas, visit:
https://docs.docker.com/get-started/

非 root 用户使用

默认情况下,docker 只允许在 root 用户下使用,如果想让非 root 用户使用 docker, 可将当前用户添加到 docker 用户组。

#Create the docker group.
sudo groupadd docker

#Add your user to the docker group.
sudo usermod -aG docker $USER

#Log out and log back in so that your group membership is re-evaluated.
exit

如果遇见以下错误:

WARNING: Error loading config file: /home/user/.docker/config.json -
stat /home/user/.docker/config.json: permission denied

解决方法:

  • 删除 ~/.docker/ 目录

  • 或者使用下面命令更改文件夹权限:

    sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
    sudo chmod g+rwx "$HOME/.docker" -R

配置 Docker 服务在引导时启动

sudo systemctl enable docker.service
sudo systemctl enable containerd.service

#To stop this behavior, use disable instead.
sudo systemctl disable docker.service
sudo systemctl disable containerd.service

#restart docker
sudo systemctl daemon-reload
sudo systemctl restart docker

Docker Hub 国内镜像

[[docker-hub-mirror]]

相关链接