Docker 入门实战:从拉取镜像到容器与数据卷管理

1 阅读3分钟
---
theme: channing-cyan
---


容器化早已是后端开发的「基本功」。本文以 Nginx 为例,把 Docker 最常用的几条命令串成一条完整链路:**拉镜像 → 配加速 → 跑容器 → 挂端口 / 挂目录 → 管容器与数据卷**。建议边看边敲。

## 一、镜像从哪来:理解镜像地址

从仓库下载镜像:

```
docker pull docker.io/library/nginx:latest
```

一条完整镜像地址由三部分组成:

| 片段          | 含义                                                  |
| ----------- | --------------------------------------------------- |
| `docker.io` | 注册表(Registry)地址,即 Docker Hub 官方仓库                   |
| `library`   | 命名空间,官方镜像的命名空间(`nginx`、`redis` 等都在 `library` 下,可省略) |
| `:latest`   | 标签(Tag),指定版本号,不写时默认 `latest`                        |

-   **Docker Hub 站点**:[https://hub.docker.com](https://hub.docker.com/)
-   **镜像(加速)站点**:[https://docker.fxxk.dedyn.io](https://docker.fxxk.dedyn.io/)

> `docker.io/library/nginx` 中,只要镜像来自官方仓库,`docker.io/library/` 这一段都可以省略,直接写 `docker pull nginx` 等价。

## 二、配置国内镜像加速

直连 Docker Hub 往往很慢,配置镜像加速器能显著提升 `pull` 速度。

编辑配置文件(注意文件名是 `daemon.json`,不是目录):

```
sudo vi /etc/docker/daemon.json
```

写入加速器列表(`registry-mirrors` 是**数组**):

```
{
    "registry-mirrors": [
        "https://docker.m.daocloud.io",
        "https://docker.1panel.live",
        "https://hub.rat.dev"
    ]
}
```

重启 Docker 使配置生效,再重新拉取:

```
sudo service docker restart
sudo docker pull nginx
```

## 三、镜像的查看与删除

```
# 查看本地镜像列表
docker images

# 删除镜像(用仓库名或镜像 ID)
docker rmi <repository/image-id>
```

如果机器上有多种 CPU 架构(如 ARM 的 Mac 跑 x86 镜像),可指定平台拉取:

```
docker pull --platform=amd64 nginx
```

## 四、创建并运行容器

```
# 最基本的运行(前台,Ctrl+C 即停)
docker run nginx
```

常用参数:

| 参数   | 作用                         |
| ---- | -------------------------- |
| `-d` | 后台运行容器(detached 模式)        |
| `-p` | 端口映射,格式 `宿主机端口:容器端口`       |
| `-v` | 绑定目录 / 数据卷,格式 `宿主机目录:容器目录` |

端口映射示例(把容器内 80 端口映射到宿主机 80):

```
docker run -p 80:80 nginx
```

把宿主机的静态页面目录挂载进 Nginx,实现「改文件即生效」:

```
sudo docker run -d -p 80:80 -v /website/html:/usr/share/nginx/html nginx
```

## 五、容器管理

```
# 查看正在运行的容器
docker ps

# 查看所有容器(含已停止)
docker ps -a

# 删除容器
docker rm <container-id>

# 强制删除正在运行的容器
docker rm -f <container-id>
```

## 六、数据卷(Volume)管理

用数据卷可以解耦「容器」与「数据」,容器删了数据还在。

```
# 查看挂载卷的详细信息
sudo docker volume inspect nginx_html

# 列出所有数据卷
sudo docker volume list

# 删除指定数据卷
docker volume rm nginx_html

# 清理所有没有被容器使用的数据卷
sudo docker volume prune -a
```

## 小结

一条主线记住即可:

1.  **配加速**:改 `daemon.json`(数组)→ 重启 Docker;
1.  **拉镜像**:`docker pull`(官方镜像可省 `docker.io/library/`);
1.  **跑容器**:`docker run -d -p 宿主端口:容器端口 -v 宿主目录:容器目录 镜像`;
1.  **管容器**:`docker ps` 看、`docker rm [-f]` 删;
1.  **管数据卷**:`volume list / inspect / rm / prune`。

把这几组命令用熟,日常开发里 80% 的 Docker 操作就够用了。后面可以接着玩 `docker commit`、`Dockerfile`、`docker-compose`,逐步进阶。