Skip to content

Docker零基础入门教程 ​

这篇文档面向“第一次上手 Docker”的场景,目标不是讲全,而是先跑通最小闭环:拉镜像、起容器、看状态、进容器、停容器、删容器。

1. 先建立最小认知 ​

刚接触 Docker 时,先只记住三件事:

1.1 镜像(Image) ​

镜像可以理解成“运行模板”。

例如:

  • ubuntu
  • nginx
  • mysql
  • mcr.microsoft.com/dotnet/aspnet

它本身不运行,但可以拿来启动容器。

1.2 容器(Container) ​

容器是镜像运行起来后的实例。

你真正访问、进入、停止、删除的对象,通常是容器。

1.3 仓库(Registry / Repository) ​

仓库是存镜像的地方。

最常见的是:

  • Docker Hub
  • Harbor
  • 阿里云镜像仓库

2. 安装好 Docker 后先验证 ​

安装完成后,先看版本:

bash
docker --version
docker compose version

然后跑一个最经典的测试:

bash
docker run --rm hello-world

如果能正常输出欢迎信息,说明:

  • Docker Engine 正常
  • 镜像拉取正常
  • 容器运行正常

3. 第一次拉镜像 ​

比如我们想拉一个 nginx 镜像:

bash
docker pull nginx:latest

拉取完成后,查看本机镜像:

bash
docker images

典型输出里会有:

  • 仓库名
  • tag
  • 镜像 ID
  • 创建时间
  • 大小

4. 第一次启动容器 ​

4.1 前台运行一个临时容器 ​

bash
docker run --rm -it ubuntu:22.04 bash

这条命令做了几件事:

  • run:启动容器
  • --rm:退出后自动删除
  • -it:进入交互式终端
  • ubuntu:22.04:指定镜像
  • bash:容器启动后执行的命令

这很适合临时测试。

4.2 后台运行一个服务容器 ​

bash
docker run -d --name my-nginx -p 8080:80 nginx:latest

这条命令表示:

  • 后台启动一个名为 my-nginx 的容器
  • 宿主机 8080 端口映射到容器 80 端口

然后你可以访问:

text
http://127.0.0.1:8080

5. 容器最常用的查看命令 ​

5.1 查看正在运行的容器 ​

bash
docker ps

5.2 查看所有容器(包括已退出) ​

bash
docker ps -a

5.3 查看容器日志 ​

bash
docker logs my-nginx
docker logs -f my-nginx

-f 适合实时跟日志。


6. 进入容器内部 ​

如果容器已经在运行,想进容器里看看:

bash
docker exec -it my-nginx sh

如果是 Ubuntu / Debian 这类完整镜像,也常用:

bash
docker exec -it my-container bash

经验上:

  • Alpine 镜像更常见 sh
  • Ubuntu / Debian 更常见 bash

7. 停止、启动、重启、删除 ​

7.1 停止容器 ​

bash
docker stop my-nginx

7.2 启动已存在的容器 ​

bash
docker start my-nginx

7.3 重启容器 ​

bash
docker restart my-nginx

7.4 删除容器 ​

bash
docker rm my-nginx

如果容器正在运行,先停再删;或者强制删除:

bash
docker rm -f my-nginx

8. 删除镜像 ​

bash
docker rmi nginx:latest

注意:

删除镜像前,必须先删除基于这个镜像创建出来的容器。

否则会报“image is being used”之类的错误。


9. 镜像导出与导入 ​

如果你要在没有仓库、或者网络不通的环境里迁移镜像,可以这样做。

9.1 导出镜像 ​

bash
docker save -o nginx.tar nginx:latest

9.2 导入镜像 ​

bash
docker load -i nginx.tar

这在以下场景很有用:

  • 内网环境
  • 生产环境不方便联网
  • 做镜像备份

10. 一个最小完整流程 ​

把前面串起来,第一次上手 Docker 可以直接按下面跑一遍:

bash
# 1. 拉镜像
docker pull nginx:latest

# 2. 起容器
docker run -d --name my-nginx -p 8080:80 nginx:latest

# 3. 查看运行状态
docker ps

# 4. 查看日志
docker logs my-nginx

# 5. 停止容器
docker stop my-nginx

# 6. 删除容器
docker rm my-nginx

# 7. 删除镜像(可选)
docker rmi nginx:latest

只要这套命令你能自己从头到尾跑通,对 Docker 的最小使用闭环就算建立起来了。


11. 零基础阶段最容易踩的坑 ​

11.1 把镜像和容器混为一谈 ​

镜像是模板,容器是实例。 删容器不等于删镜像,删镜像也不等于删容器。

11.2 容器内用 localhost 访问数据库 ​

容器里写 localhost,指向的是当前容器自己,不是另一个容器,也不是宿主机。

如果多个服务通过 Compose 组网,通常要用服务名访问。

11.3 容器删了,数据也没了 ​

如果没有做 volume 挂载,容器删掉后,容器内改动通常也就跟着没了。

所以数据库、上传文件、日志等数据类目录,后面都要学会挂载出来。

11.4 一开始就追求“全会” ​

Docker 命令很多,但入门阶段只要先掌握:

  • pull
  • images
  • run
  • ps
  • logs
  • exec
  • stop
  • rm

这几个就够用了。


12. 下一步怎么学 ​

掌握这篇后,建议继续看:

  1. Docker运行容器镜像指令 把高频命令表收熟
  2. Docker运行环境配置指南 宿主机安装、镜像加速、Daemon 配置
  3. Docker容器化部署实战 把镜像、Compose、Nginx、数据库串起来

13. 一句话总结 ​

零基础阶段先不要试图理解 Docker 的全部生态,只要把“拉镜像 -> 起容器 -> 看状态 -> 进容器 -> 停删容器”这个最小闭环跑通,后面很多概念都会自然落地。

方舟 · Ark