Docker 入门手册——从安装到第一个容器
作者: CaoZH
日期: 2022-06-15
本文为原创教程
Docker 从 2013 年诞生至今,已经成为软件开发领域不可或缺的基础设施。无论你是前端、后端还是运维,掌握 Docker 已经成为一项基本技能。
本文不讲虚的,从零开始带你装好 Docker、跑起第一个容器。
一、Docker 是什么?
一句话:Docker 是一个容器化平台,让你把应用和它的依赖打包在一起运行。
容器 vs 虚拟机
| 特性 |
容器(Docker) |
虚拟机 |
| 启动速度 |
秒级 |
分钟级 |
| 资源占用 |
低(共享内核) |
高(独立内核) |
| 镜像大小 |
MB 级 |
GB 级 |
| 隔离性 |
进程级 |
硬件级 |
二、安装 Docker
Ubuntu/Debian
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| sudo apt remove docker docker-engine docker.io containerd runc
sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update sudo apt install -y docker-ce docker-ce-cli containerd.io
sudo systemctl start docker sudo systemctl enable docker
sudo docker --version
|
CentOS
1 2 3 4 5
| sudo yum install -y yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo yum install -y docker-ce docker-ce-cli containerd.io sudo systemctl start docker sudo systemctl enable docker
|
非 root 用户执行 Docker
每次敲 sudo docker 很烦,把用户加入 docker 组:
1 2
| sudo usermod -aG docker $USER
|
三、核心概念
| 概念 |
说明 |
类比 |
| 镜像(Image) |
只读模板,包含应用和依赖 |
类(Class) |
| 容器(Container) |
镜像的运行实例 |
对象(Instance) |
| Dockerfile |
镜像构建脚本 |
食谱 |
| 仓库(Registry) |
镜像存储中心 |
App Store |
| 卷(Volume) |
持久化数据 |
U 盘 |
四、Docker 常用命令
镜像管理
1 2 3 4 5 6 7 8 9 10 11 12
| docker pull nginx:latest docker pull ubuntu:20.04
docker images
docker rmi nginx:latest
docker build -t my-app:1.0 .
|
容器操作
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
| docker run -d --name my-nginx -p 8080:80 nginx:latest
docker ps
docker ps -a
docker stop my-nginx
docker start my-nginx
docker exec -it my-nginx bash
docker logs -f my-nginx
docker rm my-nginx
|
数据持久化
1 2 3 4
| docker run -d --name my-nginx \ -v /host/path:/usr/share/nginx/html \ -p 8080:80 nginx:latest
|
五、实战:运行一个 Nginx 服务
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| docker pull nginx:alpine
mkdir -p ~/docker-nginx/html echo '<h1>Hello Docker!</h1>' > ~/docker-nginx/html/index.html
docker run -d \ --name my-site \ -p 8080:80 \ -v ~/docker-nginx/html:/usr/share/nginx/html \ nginx:alpine
docker logs my-site
docker stop my-site docker rm my-site
|
六、总结
完成这篇教程后你应该能:
- ✅ 在 Linux 上安装 Docker
- ✅ 理解镜像和容器的关系
- ✅ 使用常用 Docker 命令
- ✅ 运行和管理容器
- ✅ 挂载数据卷持久化
下一步可以学习 Docker Compose(多容器编排)和 Dockerfile(自定义镜像构建)。
首发于 CaoZH 的笔记