Debian Docker 部署指南 – wiki词典

Here’s a detailed guide for deploying Docker on Debian:

Debian Docker 部署指南

简介

Docker 是一个开源平台,用于开发、发布和运行应用程序。它通过使用容器(Container)来打包应用程序及其所有依赖项,确保应用程序在任何环境中都能一致地运行。容器是轻量级、可移植且自给自足的执行单元,这使得 Docker 成为现代软件开发和部署不可或缺的工具。本指南将详细介绍如何在 Debian 系统上安装和配置 Docker。

为什么选择 Docker?

  • 环境一致性:解决“在我的机器上能跑”的问题,确保开发、测试和生产环境的一致性。
  • 快速部署:容器启动速度快,简化了应用程序的部署过程。
  • 资源隔离:每个容器都在独立的进程中运行,与其他容器和主机系统隔离,提高了安全性。
  • 可移植性:容器可以在任何支持 Docker 的机器上运行,无论是本地开发环境、虚拟机还是云服务器。
  • 效率:Docker 镜像层叠技术减少了存储空间占用,容器的轻量级特性使得资源利用率更高。

1. 前提条件

在开始安装之前,请确保您的 Debian 系统满足以下要求:

  • Debian 版本:本指南适用于 Debian 10 (Buster), Debian 11 (Bullseye) 或更高版本。
  • sudo 权限:您需要一个拥有 sudo 权限的用户账户。
  • 互联网连接:用于下载 Docker 安装包和依赖。

更新系统包:

在安装任何新软件之前,始终建议更新您的系统包列表和已安装的包:

bash
sudo apt update
sudo apt upgrade -y

2. 卸载旧版本 (可选)

如果您之前安装过旧版本的 Docker,建议先将其完全卸载,以避免潜在的冲突:

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

3. 安装 Docker Engine

Docker 官方提供了专门的仓库,以确保您能获取到最新且稳定的 Docker 版本。

步骤 3.1: 安装必要的包

安装一些 apt 工具所需的软件包,以便能够通过 HTTPS 使用仓库:

bash
sudo apt-get install ca-certificates curl gnupg -y

步骤 3.2: 添加 Docker 的官方 GPG 密钥

为了验证 Docker 软件包的真实性,您需要添加 Docker 的官方 GPG 密钥:

bash
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

步骤 3.3: 设置 Docker 仓库

将 Docker 仓库添加到 apt 源列表中。这会告诉您的系统从哪里下载 Docker 软件包。

bash
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

步骤 3.4: 安装 Docker Engine、Containerd 和 Docker Compose

现在,您可以更新 apt 包索引并安装 Docker Engine、containerd(容器运行时)和 Docker Compose 插件:

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

4. 后续配置

安装完成后,还需要进行一些重要的配置。

步骤 4.1: 验证 Docker 安装

运行一个简单的 hello-world 容器来验证 Docker 是否已正确安装和运行:

bash
sudo docker run hello-world

如果一切正常,您应该会看到一条信息,说明 Docker 客户端成功连接到 Docker 守护进程并运行了 hello-world 镜像。

步骤 4.2: 将当前用户添加到 Docker 组 (可选,但强烈推荐)

默认情况下,docker 命令需要 sudo 权限才能运行。为了避免每次都输入 sudo,您可以将当前用户添加到 docker 用户组。请注意,将用户添加到 docker 组会授予该用户对 Docker 守护进程的完全访问权限,这可能带来一定的安全风险。

bash
sudo usermod -aG docker $USER

更改将在您下次登录时生效。您可以退出当前会话并重新登录,或者运行以下命令使更改立即生效(无需重启):

bash
newgrp docker

现在,您可以尝试在不使用 sudo 的情况下运行 Docker 命令:

bash
docker run hello-world

步骤 4.3: 配置 Docker 开机自启

Docker 守护进程通常会在系统启动时自动启动。您可以使用以下命令检查其状态并启用(如果尚未启用):

bash
sudo systemctl enable docker
sudo systemctl start docker
sudo systemctl status docker

您应该看到 Active: active (running)

5. 基本 Docker 命令

掌握一些基本的 Docker 命令对于日常使用至关重要。

  • docker run [OPTIONS] IMAGE [COMMAND] [ARG...]:从镜像创建并运行一个新容器。
    bash
    docker run -d -p 80:80 nginx # 以后台模式运行 Nginx 容器,并将容器的 80 端口映射到主机的 80 端口
  • docker ps [OPTIONS]:列出正在运行的容器。
    • -a--all:列出所有容器,包括已停止的。
  • docker images [OPTIONS]:列出本地的 Docker 镜像。
  • docker pull NAME[:TAG]:从 Docker Hub 下载镜像。
    bash
    docker pull ubuntu:latest
  • docker stop [CONTAINER ID or NAME]:停止一个或多个正在运行的容器。
  • docker start [CONTAINER ID or NAME]:启动一个或多个已停止的容器。
  • docker rm [CONTAINER ID or NAME]:删除一个或多个容器。
    • -f--force:强制删除正在运行的容器。
  • docker rmi [IMAGE ID or NAME]:删除一个或多个本地镜像。
    • -f--force:强制删除镜像,即使它被容器使用。
  • docker exec [OPTIONS] CONTAINER COMMAND [ARG...]:在运行中的容器内执行命令。
    bash
    docker exec -it <container_id_or_name> bash # 进入容器的 bash 终端
  • docker logs [OPTIONS] CONTAINER:获取容器的日志。
    • -f--follow:实时跟踪日志输出。
  • docker-compose up:根据 docker-compose.yml 文件创建并启动服务。
  • docker-compose down:停止并删除 docker-compose.yml 文件定义的服务。

6. 镜像加速器配置 (可选)

在中国大陆地区,从 Docker Hub 下载镜像可能会很慢。配置镜像加速器可以显著提高下载速度。您可以选择阿里云、腾讯云、DaoCloud 等提供的加速器服务。

以阿里云为例:

  1. 登录 阿里云容器镜像服务
  2. 在左侧导航栏选择 镜像工具 > 镜像加速器
  3. 复制您的专属加速器地址。
  4. 编辑或创建 Docker 配置文件 /etc/docker/daemon.json
    bash
    sudo nano /etc/docker/daemon.json
  5. 添加以下内容,将 YOUR_ACCELERATOR_URL 替换为您的加速器地址:
    json
    {
    "registry-mirrors": ["YOUR_ACCELERATOR_URL"]
    }
  6. 保存并关闭文件。
  7. 重启 Docker 守护进程以使配置生效:
    bash
    sudo systemctl daemon-reload
    sudo systemctl restart docker

7. 常见问题与故障排除

  • Cannot connect to the Docker daemon. Is the docker daemon running on this host?
    • 检查 Docker 服务状态:sudo systemctl status docker
    • 如果未运行,尝试启动:sudo systemctl start docker
    • 如果已添加用户到 docker 组但仍需 sudo,请注销并重新登录或运行 newgrp docker
  • 镜像下载缓慢
    • 配置 Docker 镜像加速器。
    • 检查网络连接。
  • 端口冲突
    • 如果 docker run -p 命令失败,可能是主机上已有一个服务占用了相同的端口。
    • 使用 sudo netstat -tulnp | grep :<port_number> 查找占用端口的进程。
    • 更换容器映射到主机的端口。

8. 总结

本指南详细介绍了在 Debian 系统上安装、配置和基本使用 Docker 的步骤。通过遵循这些步骤,您应该能够在 Debian 环境中成功部署 Docker Engine,并开始使用容器化技术来管理和运行您的应用程序。Docker 的世界非常广阔,建议您进一步学习 Dockerfile 的编写、Docker Compose 的高级用法以及 Docker Swarm 或 Kubernetes 等容器编排技术,以构建更健壮、可扩展的应用程序。

滚动至顶部