Ubuntu 安装 Docker Engine

介绍

Docker 有两种版本:Docker Desktop 和 Docker Engine (也称作 Docker CE)。Docker Desktop 是带图形界面的版本,非常适合需要在桌面环境中进行容器开发和测试的开发者。Docker Engine 则只有命令行接口,适合在没有图形界面的服务器上进行容器开发和测试。

这篇文章将介绍在 Ubuntu Server 上安装 Docker Engine 的方法。如果你需要在 Ubuntu Desktop 上安装 Docker,请参阅 Ubuntu 安装 Docker Desktop

安装 Docker Engine

你有两种方式安装 Docker Engine,一种是使用官方的简易安装脚本,另一种是手动配置 APT 源并使用 APT 安装。

使用简易脚本安装

Docker 官方为我们编写了一个脚本,可以快速为我们完成上面的步骤。

# 使用官方源
curl -fsSL https://get.docker.com | sudo sh

# 使用阿里镜像源
curl -fsSL https://get.docker.com | sudo sh -s -- --mirror Aliyun

使用 APT 安装

  1. 如果你安装过非官方版本的 Docker,则需要先清理这些包:

    for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt remove $pkg; done
    
  2. 将 Docker 软件源添加到 APT 源列表:

    # 添加 Docker 软件源的 GPG 公钥:
    sudo apt install -y ca-certificates curl     # 安装 curl 及 curl 用到的 CA 证书
    sudo install -m 0755 -d /etc/apt/keyrings    # 确保公钥存储文件夹存在
    sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc  # 下载公钥文件
    sudo chmod a+r /etc/apt/keyrings/docker.asc  # 设置公钥文件权限
    
    # 将 Docker 软件源添加到 APT 源列表
    echo \
        "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
        $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
        sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
    
    # 更新 APT 索引
    sudo apt update
    
  3. 安装 Docker Engine:

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

    至此,Docker Engine 就安装完成了。

参考:Install Docker Engine on Ubuntu | Docker Docs

不使用 sudo 运行 docker

目前为止,你需要使用 sudo 来运行 docker 命令,就像这样:

sudo docker run hello-world

原因是 Docker 守护程序绑定到 Unix socket,而不是 TCP 端口。默认情况下,拥有 Unix socket 的是 root 用户,其他用户只能使用 sudo 访问它。Docker 守护程序始终以 root 用户身份运行。

如果你不想每次在命令前加上 sudo,可以使用一下两种方法:

将用户添加到 docker 组

如果不想在 docker 命令前加上 sudo,请创建一个名为 docker 的 Unix 组,并将用户添加到其中。当 Docker 守护程序启动时,它会创建一个 Unix 套接字,只有 docker 组的成员可以访问。

⚠️ 注意:该组为用户授予 root 级别权限。而这可能会影响系统安全

如果你希望让 Docker 在非 root 模式下运行,请参考下节 rootless mode

  1. 创建 docker 用户组:

    sudo groupadd docker
    

    你的电脑上可能已经存在 docker 组,此时命令可能报错。你可以忽略这个错误。

  2. 将你的用户添加到 docker 组中:

    sudo usermod -aG docker $USER
    
  3. 注销并重新登录 Linux

  4. 测试配置是否成功

    docker run hello-world
    

    命令的输出应该是 Hello from Docker! 以及一大行字符串。

参考:Linux post-installation steps for Docker Engine | Docker Docs

Rootless Mode(不推荐)

⚠️:Rootless Mode 由于缺少 root 权限,可能有些高级功能会受到限制。

目前已知的问题有:如果要运行的容器需要暴露 80 端口等特权端口,在没有 root 权限的情况下会失败。

安装 Rootless Mode

安装依赖:

sudo apt install -y uidmap

安装 rootless mode

dockerd-rootless-setuptool.sh install

如果提示 dockerd-rootless-setuptool.sh 不存在,则可能需要手动安装 docker-ce-rootless-extras 包:

sudo apt install -y docker-ce-rootless-extras

参考:Run the Docker daemon as a non-root user (Rootless mode) | Docker Docs

卸载 Rootless Mode

删除 Docker 守护程序的 systemd 服务:

dockerd-rootless-setuptool.sh uninstall

删除数据目录:

rootlesskit rm -rf ~/.local/share/docker

卸载 Docker Engine

卸载 Docker Engine:

sudo apt 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
posted @ 2024-03-09 02:24  Undefined443  阅读(1072)  评论(1编辑  收藏  举报