本案例演示用的操作系统是Debian12。关于Docker的简介、核心、与虚拟机的区别、什么时候用Docker?等“啰嗦”的介绍放在文档的最后面,有耐心的小伙伴可以继续看完哦。先上干货!关于linux系统,可参考前一篇文章“Linux学习路线图(初级版)”。
一、卸载旧版本(如果存在)
# 停止docker服务
sudo service docker stop # 推荐
--sudo systemctl stop docker
dpkg -l | grep docker
# 执行以下命令卸载所有冲突包:
sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-doc podman-docker containerd runc | cut -f1)
存储的镜像、容器、卷和网络,不会卸载Docker时自动移除。如果你想清理所有数据,请进行如下操作:
1.卸载Docker Engine、CLI、containerd和Docker Compose包: sudo apt purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras 2.主机上的镜像、容器、卷或自定义配置文件 删除: sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd sudo rm -rf ~/.docker 3.移除源代码列表和钥匙圈: sudo rm /etc/apt/sources.list.d/docker.sources sudo rm /etc/apt/keyrings/docker.asc 4.手动删除任何编辑过的配置文件。 5.清理系统残留: sudo apt autoremove -y sudo apt autoclean -y # 验证是否卸载成功 docker --version # 应提示“未找到命令” sudo systemctl status docker # 应提示“Unit docker.service could not be found.” sudo ls /var/lib/docker # 应提示“没有那个文件或目录” |
二、安装Docker Engine(使用apt仓库方法)
第一次在新机上安装Docker Engine之前,需要搭建 Docker 仓库
1.搭建Docker的仓库
# Add Docker's official GPG key:
# 更新软件包索引
sudo apt update
# 安装必要工具
sudo apt install ca-certificates curl
# 添加密钥
sudo install -m 0755 -d /etc/apt/keyrings
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:
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Architectures: $(dpkg --print-architecture)
Signed-By: /etc/apt/keyrings/docker.asc
EOF
注释:
如果你使用衍生发行版,比如Kali Linux, 你可能需要替换这个命令中预期的部分 打印版本代号:$(. /etc/os-release && echo "$VERSION_CODENAME")将此部分替换为对应的 Debian 版本的代号,例如。Bookworm
# 再次更新包索引
sudo apt update
2.安装Docker包
# 安装最新版本
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 安装指定版本: # 列出仓库中可用的版本: apt list --all-versions docker-ce 输出示例: docker-ce/bookworm 5:29.4.0-1~debian.12~bookworm <arch> docker-ce/bookworm 5:29.3.1-1~debian.12~bookworm <arch> ... # 选择所需版本并安装: VERSION_STRING=5:29.4.0-1~debian.12~bookworm sudo apt install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING containerd.io docker-buildx-plugin docker-compose-plugin |
注释:
# Docker服务在安装后会自动启动。验证这一点请使用:
sudo systemctl status docker
# 有些系统可能关闭了该行为,需要手动启动:
sudo systemctl start docker
3.运行镜像确认安装成功
sudo docker run hello-world
输出含“Hello from Docker!”,表示成功!
如果没成功,请进行下一步:配置国内镜像
4.配置国内镜像
配置镜像就是在/etc/docker/daemon.json中添加registry-mirrors配置项
# 创建docker配置目录
sudo mkdir -p /etc/docker
# 配置镜像加速器(可使用多个国内镜像源)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com",
"https://mirror.baidubce.com",
"https://registry.docker-cn.com"
]
}
EOF
特别提醒:
改该配置文件不能有任何注释,且镜像直接要用逗号分割,且最后一个后面不能有逗号。
# 验证镜像加速器配置是否生效
sudo docker info | grep -A 10 "Registry Mirrors"
# cat /etc/docker/daemon.json
# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker
5.验证安装版本
docker --version
docker compose version
6.官方参考资料
以上安装步骤参考自官方指导文档:
https://docs.docker.com/engine/install/debian/
官方文档资料地址如下:
https://docs.docker.com/
其中入门指南地址如下:
https://www.docker.com/get-started/
三、安装后的设置必要设置
1.以非root用户身份管理Docker
如果你不想每次运行docker命令前面都要加上sudo请进行如下配置
# 创建群组docker
sudo groupadd docker
# 把你的用户添加到群组
sudo usermod -aG docker $USER
# 激活组的更改
newgrp docker
# 重启服务使配置生效
sudo service docker restart
# 验证
docker run hello-world
注意:
该组赋予用户根级权限。如果担心安全问题,可不设置。
2.设置docker服务开机自启动
很多现代 Linux 发行版(Ubuntu、Debian、CentOS/RHEL 7+ 等)都用 systemd 来管理系统服务的开机启动:在 Debian/Ubuntu 系统中,Docker 安装后默认就开启了开机自启;对于其他使用 systemd 的 Linux 系统(如 CentOS 7+、Rocky Linux 等),需要手动执行命令来开启 Docker 开机自启。
# 给 Docker 和它的依赖服务 containerd 设置开机自启:
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
# 取消 Docker 开机自启:
sudo systemctl disable docker.service
sudo systemctl disable containerd.service
# 验证自启状态:
systemctl is-enabled docker.service
systemctl is-enabled containerd.service
输出 enabled:已开启开机自启
输出 disabled:已关闭开机自启
# 临时手动启停 Docker(不影响自启):
# 立即启动 Docker
sudo systemctl start docker.service
# 立即停止 Docker
sudo systemctl stop docker.service
# 重启 Docker
sudo systemctl restart docker.service
# 查看 Docker 运行状态
sudo systemctl status docker.service
四、Docker简介
1.什么是Docker?
Docker 是一个开源的容器化平台,它允许开发者将应用及其依赖(库、配置文件、环境变量等)打包到一个轻量级、可移植的容器中,然后在任何支持 Docker 的 Linux / Windows / macOS 服务器上运行。
核心价值:
l环境一致:解决“在我机器上可以运行”的问题。
l隔离性:每个容器拥有自己的文件系统、进程空间和网络。
l轻量:容器共享宿主机内核,启动是毫秒级,比虚拟机小得多。
l可移植:一次构建,到处运行(开发、测试、生产)。
2.Docker的核心概念
l镜像(Image):只读模板,包含应用运行所需的操作系统层、代码、运行时、库等。类似“类”或“安装包”。
l容器(Container):镜像的运行实例,是一个隔离的进程。可以启动、停止、删除。
l仓库(Repository):存放镜像的地方。Docker Hub 是官方公共仓库。
lDockerfile:文本文件,定义了如何构建一个镜像。
lDocker Compose:用于定义和运行多容器应用(如 web + redis + db)的工具。
3.Docker与虚拟机的区别
特性 | Docker 容器 | 传统虚拟机 |
启动速度 | 毫秒级 | 分钟级 |
资源占用 | MB 级别(只打包应用) | GB 级别(包含完整 OS) |
隔离级别 | 进程级(共享宿主机内核) | 完全隔离(各自有内核) |
性能 | 接近原生 | 有虚拟化开销 |
迁移/复制 | 非常容易(镜像) | 较复杂(需要导出 VM 文件) |
4.什么时候用Docker?
✅适用场景:
l微服务架构(每个服务独立容器)
l开发环境统一(避免依赖冲突)
lCI/CD 流水线(测试、构建、部署)
l快速部署开源软件(一行命令跑起 MySQL、Redis、Nginx)
l本地模拟生产环境
❌不太适合:
l需要图形化界面的桌面应用(有办法但复杂)
l对延迟极度敏感的高性能计算(容器开销虽小但仍有)
l需要 Windows 内核特殊功能的场景
5.下一步你可以学什么?
lDocker Compose:管理多容器应用(docker-compose.yml)
l数据持久化:Volume 和 Bind Mount
l网络:bridge、host、overlay 等网络模式
l容器编排:Kubernetes(大规模容器管理)