现在越来越多的应用可以使用 Docker 一键部署,本文将介绍如何在 Debian 12 中安装 Docker 与 Docker Compose。
验证环境
1 2 3 4 5 6 root@debian:~# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
安装同样适用于 Debian 11 以及 Ubuntu 24.04
Docker 介绍 Docker 是一个开源的容器化平台,它可以将应用程序及其依赖打包到一个轻量级、可移植的容器中,使其能够在任何环境中一致地运行。
轻量 :容器共享宿主机的操作系统内核,启动速度快,占用资源少。
可移植 :容器可以在开发、测试和生产环境中一致运行,解决“环境不一致”的问题。
隔离性 :每个容器都是独立运行的,互不影响。
快速部署 :通过镜像技术,实现应用的快速打包、发布和部署。
Docker Compose 介绍 Docker Compose 是 Docker 提供的用于定义和管理多容器应用的工具。通过一个简单的 YAML 文件docker-compose.yml
,你可以定义和启动多个服务容器,使得应用的部署和管理更加便捷,可以不必使用 Docker run 命令。
特点:
多容器管理 :同时启动、停止和管理多个容器。
通过 YAML 配置 :通过 docker-compose.yml 定义服务、网络、存储等。
简化命令 :使用单一命令 docker compose 管理容器
本文将介绍安装 V2 版本,对应的命令是 docker compose
使用官方源安装 以下操作需要在 root 用户下完成,请使用 sudo -i
或 su root
切换到 root 用户进行操作。
首先,安装一些必要的软件包:
1 2 3 apt update apt upgrade -y apt install curl vim wget gnupg dpkg apt-transport-https lsb-release ca-certificates
然后加入 Docker 的 GPG 公钥和 apt 源:
Debian Ubuntu
1 2 curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
1 2 curl -sSL https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
国内机器可以用 清华 TUNA 的国内源:
Debian Ubuntu
1 2 curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/debian $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
1 2 curl -sS https://download.docker.com/linux/debian/gpg | gpg --dearmor > /usr/share/keyrings/docker-ce.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-ce.gpg] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu $(lsb_release -sc) stable" > /etc/apt/sources.list.d/docker.list
然后更新系统后即可安装 Docker CE 和 Docker Compose 插件:
1 2 apt update apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
此时可以使用 docker version
命令检查是否安装成功:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 root@debian:~# docker version Client: Docker Engine - Community Version: 27.4.0 API version: 1.47 Go version: go1.22.10 Git commit: bde2b89 Built: Sat Dec 7 10:38:57 2024 OS/Arch: linux/amd64 Context: default Server: Docker Engine - Community Engine: Version: 27.4.0 API version: 1.47 (minimum version 1.24) Go version: go1.22.10 Git commit: 92a8393 Built: Sat Dec 7 10:38:57 2024 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.7.24 GitCommit: 88bf19b2105c8b17560993bee28a01ddc2f97182 runc: Version: 1.2.2 GitCommit: v1.2.2-0-g7cb3632 docker-init: Version: 0.19.0 GitCommit: de40ad0
如果需要以非 root 模式运行 Docker,那么可以把特定用户也加入 docker 组,比如我们把 www-data 用户加进去:
1 2 apt install docker-ce-rootless-extras sudo usermod -aG docker www-data
Docker Compose V2 我们已安装 docker-compose-plugin
,这会为 Docker 添加 docker compose
命令
1 2 root@debian:~# docker compose version Docker Compose version v2.31.0
修改 Docker 配置 以下配置会增加一段自定义内网 IPv6 地址,开启容器的 IPv6 功能,以及限制日志文件大小,防止 Docker 日志塞满硬盘:
1 2 3 4 5 6 7 8 9 10 11 12 13 cat > /etc/docker/daemon.json << EOF { "log-driver": "json-file", "log-opts": { "max-size": "20m", "max-file": "3" }, "ipv6": true, "fixed-cidr-v6": "fd00:dead:beef:c0::/80", "experimental":true, "ip6tables":true } EOF
然后重启 Docker 服务:
1 systemctl restart docker
Docker 常用命令使用介绍 快速了解一下 docker 常见命令,使用 docker compose
进行管理会更方便。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 docker pull <镜像名>:<标签> docker ps docker ps -a docker images docker rmi <镜像ID或名称> docker rmi ubuntu:latest docker run -d -p <宿主端口>:<容器端口> --name <容器名> <镜像名> docker start / stop / restart / rm <容器名或ID> docker exec -it <容器名或ID> /bin/bash docker logs <容器名或ID> docker system df docker image prune -a
Docker Compose 使用介绍 docker compose
需要在 docker-compose.yml
文件所在的工作目录执行,这里推荐创建一个工作目录,在其中统一存放配置文件,比如:
1 2 3 4 5 6 7 docker/ ├── nginx/ │ └── docker-compose.yml ├── mysql/ │ └── docker-compose.yml └── redis/ └── docker-compose.yml
docker compose
常用命令:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 docker compose pull docker compose up docker compose up -d docker compose stop docker compose down docker compose restart docker compose ps docker compose logs docker compose logs -f docker compose exec <服务名> <命令> docker compose exec nginx /bin/bash docker compose stats
docker compose
还是太长? 执行下面的命令后就可以使用 dc
作为替代:
执行前,先运行一下 dc
确认命令当前没有在使用,执行后运行 dc version
确认
bash zsh
1 2 echo 'alias dc="docker compose"' >> ~/.bashrc source ~/.bashrc
1 2 echo 'alias dc="docker compose"' >> ~/.zshrc source ~/.zshrc
效果:
1 2 3 4 5 root@debian:~# dc -bash: dc: command not found root@debian:~# dc version Docker Compose version v2.31.0
之后,当我们创建了 docker-compose.yml
文件后,启动或是更新服务只需要执行:
现在前往 GitHub 或是 Docker Hub 寻找有趣的项目吧!
参考: Debian 12 / Ubuntu 24.04 安装 Docker 以及 Docker Compose 教程