Docker Engine
Docker Engine 是用于构建和容器化应用程序的开源平台,他提供了:
- dockerd: Docker 守护进程
- Docker CLI client: Docker 命令行客户端
- API: 用于与 Docker 守护进程通信的 API
他是整个 Docker 中最核心的地方,从名字也能够看出来。其中 Docker CLI 使用 API 来与 Docker 守护进程进行通信。而守护进程来创建和管理 Docker 对象(Objects),对象包括映像(images)、容器(containers)、网络(networks)和卷(volumes)。
安装
在 Linux 命令行模式下运行 Docker 的唯一方式就是安装 Docker Engine(他也被称为 Docker CE)。而对于具有桌面环境的更推荐使用Docker Desktop来安装 Docker。
Tips
注意 Linux 的各个发行版都提供了自己封装的 Docker 软件包,这里的安装主要指的是安装 Docker 官方的版本。
Debian
Docker 官方支持 Debian 12 和 Debian 11 的 x86_64、arm64 架构。在安装之前需要首先卸载官方仓库提供的分发版本,这包括:
- docker.io: 包括 containerd 和 runc
- docker-compose
- docker-doc
- podman-docker
之后添加 Docker 的官方 apt 源:
# Add Docker's official GPG key:
sudo apt update
# 依赖,不一定需要
# sudo apt install ca-certificates curl
# sudo install -m 0755 -d /etc/apt/keyrings
# 可能需要代理,或者在其他地方下载 gpg 复制到 docker.asc 中
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc
# Add the repository to Apt sources:
# 如果使用的是衍生版本例如 Kail 等,则可能需要替换 /etc/os-release $VERSION_CODENAME
# 推荐查看下 /etc/apt/source.list.d/docker.list 来核对下
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
$(. /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 install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
安装完成之后运行下面的命令来验证:
Tips
必须使用 sudo 命令运行,这是因为运行 docker 需要 docker 用户组,当前该用户组不包含任何用户因此需要 sudo 来运行。之后可以查看Linux 安装后配置
Debian 下卸载
sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
# 删除主机上的 images containers volumes
sudo rm -rf /var/lib/docker
sudo rm -rf /var/lib/containerd
# 对于用户自定义的配置文件需要手动参数
Linux安装后配置
Linux 安装后还需要执行一些操作来更好的使用。
非 root 用户管理 Docker
Docker daemon 绑定到 Unix 套接字而不是 TCP 协议,默认情况下使用的 Unix 套接字文件权限是 root 用户,因此其他用户只能通过 sudo 来访问。如果不想使用 sudo 需要创建一个名为 docker 的用户组并将具备 docker 权限的用户添加到该组中来实现。
之后执行 docker run hello-world
来检查是否能够正确运行。
Tips
如果在将用户添加到 docker 组之前使用 sudo 运行了 Docker CLI 命令,会看到以下错误:
WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
他表示~/.docker/
目录的权限设置不正确,因为之前使用 sudo 命令,只需要删除他即可
Tips
大多数 Linux 发行版版本库提供的安装包通常会自动帮助我们创建 docker 组,但用户通常依然需要手来添加当前用户到 docker 组
开机启动 Docker 服务
安装后 Docker 服务默认是启动的,但是并不是开机启动。因此需要运行:
Docker 组件
Docker 中涉及了很多组件,他是我们管理和使用 Docker 的核心:
- Containers: 容器是主机上的运行进程
- Storage: 为 Docker 容器提供持久性数据支持
- Networking: 管理容器之间的网络连接