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 系统满足以下条件:
-
Debian 版本: 本指南主要针对 Debian 10 (Buster) 和 Debian 11 (Bullseye) 版本。虽然其他 Debian 版本也能使用 Docker,但具体的安装步骤可能会有所不同。
-
root 权限: 安装和配置 Docker 需要 root 权限。你可以使用
sudo
命令来执行特权操作,或者切换到 root 用户。 -
网络连接: Docker 需要访问互联网以下载安装包和镜像。请确保你的 Debian 系统已连接到互联网。
-
更新系统: 在安装 Docker 之前,建议更新你的 Debian 系统,以确保所有软件包都是最新的。可以使用以下命令更新系统:
bash
sudo apt update
sudo apt upgrade
三、Debian 系统 Docker 安装步骤
Debian 系统安装 Docker 有多种方法,最常用的方法是通过 Docker 官方提供的仓库进行安装。以下是详细的安装步骤:
-
卸载旧版本 (如果存在):
如果之前安装过 Docker,建议先卸载旧版本,以避免冲突。可以使用以下命令卸载旧版本:
bash
sudo apt-get remove docker docker-engine docker.io containerd runc -
安装必要的软件包:
安装
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 -
添加 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 -
设置 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),命令也是相同的。
-
更新软件包索引:
更新 APT 软件包索引,以使系统能够识别 Docker 仓库中的软件包。
bash
sudo apt-get update -
安装 Docker Engine:
现在可以安装 Docker Engine、containerd 和 Docker Compose。
bash
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugindocker-ce
: Docker Engine 的社区版本。docker-ce-cli
: Docker 命令行客户端。containerd.io
: 容器运行时。docker-compose-plugin
: 用于定义和管理多容器 Docker 应用程序的工具(Docker Compose V2)。
-
验证 Docker 安装:
安装完成后,可以使用以下命令验证 Docker 是否成功安装:
bash
sudo docker run hello-world如果 Docker 成功安装,你将看到一个欢迎消息,以及 Docker 尝试下载
hello-world
镜像并运行它的过程。
四、Docker 配置:配置 Docker 用户权限
默认情况下,只有 root 用户才能运行 Docker 命令。为了方便使用,可以将普通用户添加到 docker
用户组,使其也能够运行 Docker 命令。
-
创建 docker 用户组 (如果不存在):
如果
docker
用户组不存在,可以使用以下命令创建它:bash
sudo groupadd docker -
将用户添加到 docker 用户组:
将你的用户添加到
docker
用户组。将[你的用户名]
替换为你的实际用户名。bash
sudo usermod -aG docker [你的用户名] -
重新启动系统或注销并重新登录:
为了使更改生效,你需要重新启动系统或者注销并重新登录。
-
验证用户权限:
重新登录后,可以使用以下命令验证用户是否具有运行 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 的更多功能和特性,你将发现它能为你的工作带来更多的便利和效率。