Docker 从零入门:一篇笔记搞定核心命令
2026/9/6 11:30:58 网站建设 项目流程

前言:Docker 是什么?为什么你需要它?

在软件开发中,环境问题一直是让人头疼的痛点——"我电脑上明明跑得好好的,怎么到你那里就不行了?" 这种对话几乎每个开发者都经历过。

Docker 就是来解决这个问题的。它通过容器化技术,把应用程序和它所需要的运行环境(操作系统、依赖库、配置文件等)打包在一起,形成一个可移植的镜像。这个镜像可以在任何安装了 Docker 的机器上运行,保证运行结果完全一致。

你可以把 Docker 想象成一个轻量级的虚拟机,但它比虚拟机快得多、资源消耗小得多,启动时间以秒计算。

Docker 的核心概念就三个:

概念通俗理解
镜像(Image)相当于一个"安装包",包含了程序和环境。只读,不能修改
容器(Container)镜像跑起来之后就是容器。相当于"正在运行的程序"
仓库(Registry)存放镜像的地方,就像代码托管平台存代码一样

下面我会按照「镜像 → 容器 → 数据卷 → 镜像构建 → 仓库推送 → Docker Compose」这条主线,带你一步步掌握 Docker 的常用操作。

第一部分:镜像操作

镜像是 Docker 的基石,所有容器都从镜像启动。

1. 查看本地所有镜像

bash

docker images

输出示例:

text

可以看到镜像的仓库名、标签、ID、创建时间和大小。这个命令会列出你本地已经下载好的所有镜像。

2. 搜索镜像

如果你想找某个镜像,可以先搜索看看:

bash

docker search nginx

输出中重点关注两列:

  • OFFICIAL:显示[OK]表示官方镜像,安全性更高,优先选择

  • STARS:星数越多,说明使用的人越多,口碑越好

搜索可以帮助你发现有哪些可用的镜像版本,以及社区对它的认可程度。

3. 下载镜像

bash

# 下载最新版本(标签名默认是 latest) docker pull nginx # 下载指定版本 docker pull mysq:8.4

如果不指定标签,默认下载latest(最新版本)。docker pull是使用镜像的第一步,只有下载到本地才能创建容器。

4. 删除镜像

bash

# 删除指定镜像 docker rmi 镜像名:latest # 如果镜像正在被容器使用,需要先删除容器,或者加 -f 强制删除 docker rmi -f nginx:latest

如果镜像还在被某个容器使用(哪怕容器已经停止),直接删除会报错。要么先删除容器,要么用-f强制删除。

第二部分:容器操作

镜像是"模板",容器是"运行起来的实例"。你可以把镜像理解成一个类,容器就是那个类 new 出来的对象。

1. 创建并运行容器

bash

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

参数解释:

参数含义
--name my-nginx给容器起个名字,方便后续管理
-p 8080:80端口映射:宿主机的 8080 端口 → 容器内的 80 端口
-d后台运行(detach 模式),不会占用终端
nginx:latest使用哪个镜像来创建容器

运行后打开浏览器访问http://你的服务器IP:8080,就能看到 Nginx 的欢迎页面了。如果是在本地虚拟机,访问http://localhost:8080

补充说明-p参数可以多次使用,比如-p 8080:80 -p 8443:443可以同时映射多个端口。

2. 查看容器

bash

# 查看正在运行的容器 docker ps # 查看所有容器(包括已停止的) docker ps -a

docker ps -a会列出所有容器,包括已经停止的,方便你找到容器的 ID 或名字。输出中可以看到容器 ID、镜像、创建时间、状态、端口映射等信息

3. 进入正在运行的容器

有时候你需要进容器里面查看文件、修改配置或者调试程序,可以用这个命令:

bash

docker exec -it my-nginx bash
  • -it:交互式终端(i 表示保持输入流,t 表示分配伪终端)

  • my-nginx:容器名(也可以用容器 ID)

  • bash:进入后使用的 shell

进入之后,你就相当于在容器内部的操作系统里了,可以执行各种 Linux 命令——查看文件、安装软件、修改配置等。退出时输入exit即可。

4. 启动 / 停止 / 重启容器

bash

# 停止容器 docker stop my-nginx # 启动已停止的容器 docker start my-nginx # 重启容器 docker restart my-nginx

注意docker run是创建并启动,而docker start是用来启动已经创建但停止了的容器。docker restart则相当于先 stop 再 start。

5. 删除容器

bash

# 删除已停止的容器 docker rm my-nginx # 强制删除运行中的容器 docker rm -f my-nginx

容器删除后,里面的数据会全部丢失(除非使用了数据卷)。所以生产环境的重要数据一定要挂载到数据卷里。

第三部分:数据卷(Volume)

容器是"无状态"的——当容器被删除,里面的所有数据都会丢失。但很多场景下我们需要持久化数据,比如:

  • 数据库文件(MySQL、PostgreSQL)

  • 网站上传的图片和附件

  • 日志文件

  • 配置文件

这时候就需要用到数据卷。数据卷相当于宿主机上一个由 Docker 管理的目录,被挂载到容器内部,容器删除后数据依然保留。

1. 查看所有数据卷

bash

docker volume ls

显示当前系统中所有数据卷的列表。

2. 创建数据卷

bash

docker volume create my-data

创建一个名为my-data的数据卷。Docker 会在宿主机上为它分配一个存储位置(通常在/var/lib/docker/volumes/下)。

3. 使用数据卷启动容器

bash

docker run --name my-nginx -p 8080:80 -v my-data:/usr/share/nginx/html -d nginx:latest

-v my-data:/usr/share/nginx/html表示把my-data这个数据卷挂载到容器内的/usr/share/nginx/html目录。这个目录是 Nginx 的默认网页根目录。

你在宿主机上修改数据卷里的内容,容器里的网页就会同步更新。反过来,容器里写入的数据也会持久化到数据卷中。

4. 删除数据卷

bash

docker volume rm my-data

⚠️ 删除数据卷会永久丢失所有数据,操作前请确认是否需要备份。

第四部分:使用 Dockerfile 构建镜像

当你需要定制自己的镜像时,就需要用到 Dockerfile。它就是一个文本文件,里面写满了构建镜像的指令,告诉 Docker 如何一步步"组装"出你想要的镜像。

1. 项目结构

text

/workspace/ ├── home.conf # Nginx 站点配置文件 ├── home.html # 网站首页 ├── img/ # 图片资源 ├── my_font/ # 自定义字体 └── nosleep/ # 子页面目录

home.conf内容如下:

nginx

server { listen 10000; root /usr/share/nginx/html; index home.html index.htm; }

3. 构建镜像

/workspace目录执行:

bash

docker build -t my-site:v1 .
  • -t my-site:v1:指定镜像名为my-site,标签为v1

  • .:表示使用当前目录的 Dockerfile

4. 运行容器

bash

docker run --name my-site -p 10000:10000 -d my-site:v1

5. 验证容器状态

bash

# 查看容器是否正常运行 docker ps # 查看容器日志 docker logs my-site # 进入容器内部检查文件 docker exec -it my-site bash ls -la /usr/share/nginx/html/

第五部分:推送镜像到仓库

自己构建的镜像,可以推送到远程仓库,方便在别的机器上下载使用。Docker 官方提供免费的镜像仓库 Docker Hub。

1. 给镜像打标签

Docker Hub 要求镜像名以用户名开头,所以需要重新打一个标签:

bash

docker tag my-site:v1 你的用户名/my-site:v1

举个例子,如果你的 Docker Hub 用户名是yourname

bash

docker tag my-site:v1 yourname/my-site:v1

2. 登录 Docker Hub

bash

docker login -u 你的用户名

执行后会提示输入密码(或 access token),正确输入后登录成功。

3. 推送镜像

bash

docker push 你的用户名/my-site:v1

推送完成后,你就可以在 Docker Hub 上看到这个镜像了。在其他机器上直接用docker pull 你的用户名/my-site:v1就能下载使用。

2. 启动所有服务

bash

docker compose up -d

-d表示后台运行。执行后,两个容器会同时启动,并且通过同一个网络互相连通。

3. 停止所有服务

bash

docker compose down

4. 其他常用命令

docker compose ps # 重启所有服务 docker compose restart # 查看实时日志 docker compose logs -f

第七部分:实用工具命令

1. 从容器拷贝文件到本地

docker cp my-nginx:/etc/nginx/nginx.conf ./nginx.conf

2. 从本地拷贝文件到容器

bash

docker cp ./index.html my-nginx:/usr/share/nginx/html/

3. 查看容器日志

bash

# 查看完整日志 docker logs my-nginx # 实时跟踪日志 docker logs -f my-nginx # 查看最近 100 行日志 docker logs --tail 100 my-nginx

第八部分:常用命令速查表

镜像命令

命令说明
docker images查看所有镜像
docker pull 镜像名:标签下载镜像
docker rmi 镜像名:标签删除镜像
docker search 关键词搜索镜像
docker build -t 镜像名:标签 .构建镜像

容器命令

命令说明
docker run --name 容器名 -p 宿主机:容器 -d 镜像名创建并运行容器
docker ps查看运行中的容器
docker ps -a查看所有容器
docker start 容器ID启动容器
docker stop 容器ID停止容器
docker restart 容器ID重启容器
docker exec -it 容器名 bash进入容器
docker rm 容器ID删除容器
docker logs 容器名查看日志

数据卷命令

命令说明
docker volume ls显示所有数据卷
docker volume create 名字创建数据卷
docker volume rm 名字删除数据卷

仓库命令

命令说明
docker tag 镜像名:标签 用户/镜像名:标签打标签
docker login -u 用户名登录
docker push 用户/镜像名:标签推送镜像

Docker Compose 命令

命令说明
docker compose up -d启动所有服务
docker compose down停止所有服务
docker compose ps查看状态
docker compose logs -f查看日志

Docker 的学习曲线比 Git 要平缓得多,核心命令也就那么十几个。只要理解了「镜像 → 容器 → 仓库」这条主线,再配合数据卷做持久化、Dockerfile 做定制化、Compose 做编排,Docker 就算入门了。

在实际开发中,Docker 最大的价值在于环境一致性——你再也不用担心"在我电脑上能跑"这种问题了。而且现在几乎所有云平台都支持容器化部署,学会 Docker 已经成了一项必备技能。

文中的命令都是我自己日常使用中反复敲过的,你可以放心地在自己的环境里练习。如果遇到任何问题,回头看看速查表,或者用docker --help查看命令帮助,都能找到答案。

希望这篇博客能帮到你。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询