Debian 系统 Docker 安装:新手入门指南 – wiki基地

Debian 系统 Docker 安装:新手入门指南

Docker 已经成为现代软件开发和部署的标准,它允许开发者将应用程序及其依赖项打包到一个可移植的容器中,从而实现跨不同环境的一致性和高效性。Debian 作为一款稳定可靠的 Linux 发行版,是运行 Docker 的理想选择。本指南将详细介绍如何在 Debian 系统上安装和配置 Docker,并提供一些基本的 Docker 命令和使用技巧,帮助新手快速入门 Docker 世界。

一、Docker 简介:为什么要使用 Docker?

在深入安装步骤之前,我们先来了解一下 Docker 的核心概念和优势:

  • 容器化: Docker 使用容器技术,将应用程序及其所有依赖项(例如库、运行时环境、系统工具和设置)打包到一个独立的、可执行的单元中。这个单元就是 Docker 镜像,而运行的镜像则称为 Docker 容器。

  • 隔离性: 容器之间相互隔离,这意味着一个容器中的应用程序不会影响其他容器或主机系统。这种隔离性提高了安全性,并避免了应用程序之间的冲突。

  • 一致性: Docker 确保应用程序在不同的环境中以相同的方式运行。无论是开发、测试还是生产环境,Docker 容器都能提供一致的运行环境,从而减少了 “在我的机器上可以运行” 的问题。

  • 资源利用率: 容器比传统的虚拟机更轻量级,因为它们共享主机操作系统的内核。这意味着可以在同一台主机上运行更多的容器,从而提高资源利用率。

  • 快速部署: Docker 镜像可以快速创建和部署,从而加快了应用程序的发布速度。

  • 版本控制: Docker 镜像可以使用 Docker Hub 或其他镜像仓库进行版本控制,方便应用程序的回滚和升级。

总而言之,Docker 简化了应用程序的开发、部署和管理,提高了开发效率和系统稳定性。

二、Debian 系统 Docker 安装前的准备工作

在开始安装 Docker 之前,需要确保你的 Debian 系统满足以下条件:

  1. Debian 版本: 本指南主要针对 Debian 10 (Buster) 和 Debian 11 (Bullseye) 版本。虽然其他 Debian 版本也能使用 Docker,但具体的安装步骤可能会有所不同。

  2. root 权限: 安装和配置 Docker 需要 root 权限。你可以使用 sudo 命令来执行特权操作,或者切换到 root 用户。

  3. 网络连接: Docker 需要访问互联网以下载安装包和镜像。请确保你的 Debian 系统已连接到互联网。

  4. 更新系统: 在安装 Docker 之前,建议更新你的 Debian 系统,以确保所有软件包都是最新的。可以使用以下命令更新系统:

    bash
    sudo apt update
    sudo apt upgrade

三、Debian 系统 Docker 安装步骤

Debian 系统安装 Docker 有多种方法,最常用的方法是通过 Docker 官方提供的仓库进行安装。以下是详细的安装步骤:

  1. 卸载旧版本 (如果存在):

    如果之前安装过 Docker,建议先卸载旧版本,以避免冲突。可以使用以下命令卸载旧版本:

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

  2. 安装必要的软件包:

    安装 apt-transport-https, ca-certificates, curl, gnupg, 和 lsb-release 这些软件包,这些软件包用于通过 HTTPS 使用仓库。

    bash
    sudo apt-get update
    sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release

  3. 添加 Docker 的 GPG 密钥:

    Docker 使用 GPG 密钥来验证仓库中的软件包。使用以下命令添加 Docker 的 GPG 密钥:

    bash
    curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

  4. 设置 Docker 的软件仓库:

    将 Docker 的软件仓库添加到 APT 列表中。以下命令适用于 Debian 10 (Buster):

    bash
    echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

    对于 Debian 11 (Bullseye),命令也是相同的。

  5. 更新软件包索引:

    更新 APT 软件包索引,以使系统能够识别 Docker 仓库中的软件包。

    bash
    sudo apt-get update

  6. 安装 Docker Engine:

    现在可以安装 Docker Engine、containerd 和 Docker Compose。

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

    • docker-ce: Docker Engine 的社区版本。
    • docker-ce-cli: Docker 命令行客户端。
    • containerd.io: 容器运行时。
    • docker-compose-plugin: 用于定义和管理多容器 Docker 应用程序的工具(Docker Compose V2)。
  7. 验证 Docker 安装:

    安装完成后,可以使用以下命令验证 Docker 是否成功安装:

    bash
    sudo docker run hello-world

    如果 Docker 成功安装,你将看到一个欢迎消息,以及 Docker 尝试下载 hello-world 镜像并运行它的过程。

四、Docker 配置:配置 Docker 用户权限

默认情况下,只有 root 用户才能运行 Docker 命令。为了方便使用,可以将普通用户添加到 docker 用户组,使其也能够运行 Docker 命令。

  1. 创建 docker 用户组 (如果不存在):

    如果 docker 用户组不存在,可以使用以下命令创建它:

    bash
    sudo groupadd docker

  2. 将用户添加到 docker 用户组:

    将你的用户添加到 docker 用户组。将 [你的用户名] 替换为你的实际用户名。

    bash
    sudo usermod -aG docker [你的用户名]

  3. 重新启动系统或注销并重新登录:

    为了使更改生效,你需要重新启动系统或者注销并重新登录。

  4. 验证用户权限:

    重新登录后,可以使用以下命令验证用户是否具有运行 Docker 命令的权限:

    bash
    docker run hello-world

    如果能够成功运行 hello-world 镜像,则说明用户已成功添加到 docker 用户组。

五、Docker 常用命令

以下是一些常用的 Docker 命令,可以帮助你快速入门 Docker:

  • docker run [镜像名称]: 运行一个 Docker 容器。例如:docker run ubuntu bash 会启动一个基于 Ubuntu 镜像的容器,并进入 bash 终端。

  • docker ps: 列出正在运行的 Docker 容器。

  • docker ps -a: 列出所有 Docker 容器,包括正在运行和已停止的容器。

  • docker images: 列出本地的 Docker 镜像。

  • docker pull [镜像名称]: 从 Docker Hub 或其他镜像仓库下载镜像。例如:docker pull nginx 会下载 Nginx 镜像。

  • docker stop [容器 ID 或容器名称]: 停止一个正在运行的 Docker 容器。可以使用 docker ps 命令查看容器 ID 或容器名称。

  • docker start [容器 ID 或容器名称]: 启动一个已停止的 Docker 容器。

  • docker rm [容器 ID 或容器名称]: 删除一个已停止的 Docker 容器。

  • docker rmi [镜像 ID 或镜像名称]: 删除一个本地的 Docker 镜像。

  • docker exec -it [容器 ID 或容器名称] [命令]: 在正在运行的 Docker 容器中执行命令。例如:docker exec -it my-container bash 会进入名为 my-container 的容器的 bash 终端。

  • docker build -t [镜像名称] .: 使用当前目录下的 Dockerfile 构建一个 Docker 镜像。

  • docker logs [容器 ID 或容器名称]: 查看 Docker 容器的日志。

  • docker-compose up: 使用 docker-compose.yml 文件启动一个或多个服务。

  • docker-compose down: 停止并删除 docker-compose.yml 文件中定义的服务。

六、Docker 镜像加速

由于 Docker Hub 位于国外,下载镜像的速度可能较慢。为了提高下载速度,可以使用国内的镜像加速器。以下是一些常用的国内镜像加速器:

  • 阿里云镜像加速器: 需要注册阿里云账号并配置加速器地址。
  • 网易云镜像加速器: 需要注册网易云账号并配置加速器地址。
  • Docker 中国官方镜像加速器: 国内官方提供的镜像加速器。

配置镜像加速器的方法通常是修改 Docker 的配置文件 /etc/docker/daemon.json。如果该文件不存在,可以创建一个。以下是一个使用阿里云镜像加速器的示例配置:

json
{
"registry-mirrors": ["https://[你的加速器地址].mirror.aliyuncs.com"]
}

[你的加速器地址] 替换为你的实际加速器地址。

修改完配置文件后,需要重启 Docker 服务才能使更改生效:

bash
sudo systemctl restart docker

七、Docker Compose:简化多容器应用管理

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它使用 docker-compose.yml 文件来配置应用程序的服务、网络和卷。通过 Docker Compose,可以轻松地启动、停止和管理多个 Docker 容器。

以下是一个简单的 docker-compose.yml 文件示例,用于启动一个 Nginx 服务和一个 Redis 服务:

yaml
version: "3.9"
services:
web:
image: nginx:latest
ports:
- "80:80"
depends_on:
- redis
redis:
image: redis:latest

在这个示例中,web 服务使用 nginx:latest 镜像,并将主机的 80 端口映射到容器的 80 端口。redis 服务使用 redis:latest 镜像。depends_on 选项指定 web 服务依赖于 redis 服务,这意味着 Docker Compose 会先启动 redis 服务,然后再启动 web 服务。

要启动这些服务,只需在包含 docker-compose.yml 文件的目录中运行以下命令:

bash
docker-compose up -d

-d 选项表示在后台运行服务。

要停止并删除这些服务,可以使用以下命令:

bash
docker-compose down

八、Docker 安全最佳实践

  • 使用官方镜像: 尽可能使用 Docker Hub 上官方提供的镜像。这些镜像通常经过安全扫描和维护。

  • 定期更新镜像: 定期更新镜像,以修复已知的安全漏洞。

  • 使用非 root 用户运行容器: 避免使用 root 用户运行容器。可以使用 USER 指令在 Dockerfile 中指定非 root 用户。

  • 限制容器的资源使用: 限制容器的 CPU 和内存使用量,以防止资源耗尽。

  • 使用安全网络: 使用 Docker 网络来隔离容器,并限制容器之间的通信。

  • 使用 Docker Secrets: 使用 Docker Secrets 安全地管理敏感信息,例如密码和 API 密钥。

  • 定期扫描镜像: 使用 Docker 镜像扫描工具定期扫描镜像,以检测安全漏洞。

九、总结

本指南详细介绍了如何在 Debian 系统上安装和配置 Docker,并提供了一些基本的 Docker 命令和使用技巧。通过学习本指南,你应该能够:

  • 在 Debian 系统上成功安装 Docker。
  • 配置 Docker 用户权限。
  • 使用常用的 Docker 命令。
  • 配置 Docker 镜像加速。
  • 使用 Docker Compose 管理多容器应用。
  • 了解 Docker 安全最佳实践。

Docker 是一个强大的工具,可以极大地简化应用程序的开发、部署和管理。希望本指南能帮助你入门 Docker 世界,并在实际项目中充分利用 Docker 的优势。继续探索 Docker 的更多功能和特性,你将发现它能为你的工作带来更多的便利和效率。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部