Docker 常用命令大全:从入门到实战

引言

在云原生时代,Docker 已经成为开发和运维的必备工具。无论是本地开发环境的搭建,还是生产环境的部署,Docker 都发挥着重要作用。然而,面对众多的 Docker 命令,很多初学者会感到困惑。本文将系统地整理 Docker 常用命令,帮助你快速掌握 Docker 的核心操作。

一、容器管理

1.1 容器的创建与运行

1
2
3
4
5
6
7
8
9
# 基础运行命令
docker run nginx # 运行nginx容器

# 常用选项组合
docker run -d --name mynginx nginx # 后台运行并命名
docker run -it --name myubuntu ubuntu bash # 交互式运行Ubuntu
docker run -p 8080:80 nginx # 端口映射:主机8080→容器80
docker run -v /宿主机路径:/容器路径 nginx # 数据持久化
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql # 设置环境变量

实际应用场景:

  • -d:用于运行后台服务,如 Web 服务器、数据库

  • -it:用于调试、安装软件或运行交互式应用

  • -p:将容器端口暴露给主机,实现服务访问

  • -v:实现数据持久化,防止容器删除后数据丢失

1.2 容器的生命周期管理

1
2
3
4
5
6
7
8
9
10
11
12
13
# 启动与停止
docker start mycontainer # 启动已停止的容器
docker stop mycontainer # 停止运行中的容器(发送SIGTERM信号)
docker restart mycontainer # 重启容器
docker kill mycontainer # 强制停止容器(发送SIGKILL信号)

# 暂停与恢复
docker pause mycontainer # 暂停容器内所有进程
docker unpause mycontainer # 恢复暂停的容器

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

1.3 容器信息查询与操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# 查看容器
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
docker ps -l # 查看最近创建的容器
docker ps -q # 只显示容器ID(常用于脚本)

# 进入容器内部
docker exec -it mycontainer bash # 进入bash终端
docker exec mycontainer ls -la # 在容器内执行单条命令

# 查看日志
docker logs mycontainer # 查看完整日志
docker logs -f mycontainer # 实时跟踪日志(类似tail -f)
docker logs --tail 100 mycontainer # 查看最后100行日志
docker logs --since 1h mycontainer # 查看最近1小时的日志

# 监控与检查
docker stats # 实时监控所有容器的资源使用
docker stats mycontainer # 监控特定容器
docker top mycontainer # 查看容器内进程
docker inspect mycontainer # 查看容器的详细配置信息

二、镜像管理

2.1 镜像的获取与查看

1
2
3
4
5
6
7
8
9
10
# 搜索和获取镜像
docker search ubuntu # 搜索Ubuntu相关镜像
docker pull ubuntu:20.04 # 拉取指定版本的Ubuntu
docker pull ubuntu # 拉取最新版(latest)

# 查看本地镜像
docker images # 列出所有镜像
docker images ubuntu # 列出特定镜像
docker images -q # 只显示镜像ID
docker images --digests # 显示镜像摘要信息

2.2 镜像的构建与推送

1
2
3
4
5
6
7
8
9
10
11
# 构建镜像
docker build -t myapp:v1.0 . # 构建并打标签
docker build -f Dockerfile.prod -t myapp:prod . # 指定Dockerfile

# 镜像标签与推送
docker tag myapp:v1.0 myregistry.com/myapp:v1.0 # 为镜像打新标签
docker push myregistry.com/myapp:v1.0 # 推送到镜像仓库

# 保存与加载
docker save myapp:v1.0 > myapp.tar # 导出镜像到文件
docker load < myapp.tar # 从文件导入镜像

2.3 镜像的删除与清理

1
2
3
4
5
6
7
# 删除镜像
docker rmi ubuntu:18.04 # 删除指定镜像
docker rmi $(docker images -q) # 删除所有镜像(危险!)

# 清理未使用的镜像
docker image prune # 删除悬空镜像(无标签)
docker image prune -a # 删除所有未使用的镜像

三、数据管理

3.1 数据卷操作

1
2
3
4
5
6
7
8
9
# 数据卷管理
docker volume ls # 列出所有数据卷
docker volume create mydata # 创建数据卷
docker volume inspect mydata # 查看数据卷详情
docker volume rm mydata # 删除数据卷

# 在运行容器时使用数据卷
docker run -v mydata:/app/data nginx # 使用命名卷
docker run -v /host/path:/container/path nginx # 绑定挂载

3.2 文件拷贝

1
2
3
# 容器与主机间的文件传输
docker cp file.txt mycontainer:/app/ # 主机→容器
docker cp mycontainer:/app/logs/ ./ # 容器→主机

四、网络管理

4.1 网络基础操作

1
2
3
4
5
6
7
8
9
# 网络管理
docker network ls # 列出所有网络
docker network create mynetwork # 创建自定义网络
docker network inspect bridge # 查看网络详情
docker network rm mynetwork # 删除网络

# 容器网络连接
docker network connect mynetwork mycontainer # 连接容器到网络
docker network disconnect mynetwork mycontainer # 从网络断开

4.2 网络模式

1
2
3
4
5
# 不同网络模式示例
docker run --network=bridge nginx # 桥接模式(默认)
docker run --network=host nginx # 主机模式(共享主机网络)
docker run --network=none nginx # 无网络模式
docker run --network=mynetwork nginx # 自定义网络

五、Docker Compose 管理

5.1 常用 Compose 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 服务管理
docker-compose up # 启动所有服务
docker-compose up -d # 后台启动
docker-compose down # 停止并清理所有服务
docker-compose down -v # 同时删除数据卷

# 服务操作
docker-compose ps # 查看服务状态
docker-compose logs # 查看所有服务日志
docker-compose logs -f web # 实时查看web服务日志
docker-compose exec db mysql -uroot -p # 进入数据库容器

# 构建与更新
docker-compose build # 重新构建镜像
docker-compose up --build # 构建镜像后启动
docker-compose restart # 重启所有服务
docker-compose restart web # 重启指定服务

六、系统管理

6.1 系统信息与清理

1
2
3
4
5
6
7
8
9
10
11
# 系统信息
docker info # 显示Docker系统信息
docker version # 显示Docker版本信息
docker system df # 查看磁盘使用情况

# 系统清理
docker system prune # 清理所有未使用的资源
docker system prune -a # 彻底清理(包括未使用的镜像)
docker container prune # 仅清理停止的容器
docker image prune # 仅清理未使用的镜像
docker volume prune # 仅清理未使用的数据卷

七、实用命令组合

7.1 批量操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 批量停止所有容器
docker stop $(docker ps -q)

# 批量删除所有停止的容器
docker rm $(docker ps -aq)

# 批量删除所有镜像
docker rmi $(docker images -q)

# 重启所有正在运行的容器
docker restart $(docker ps -q)
### 7.2 日常维护脚本
bash
# 清理所有未使用的资源
docker system prune -af

# 查看容器资源使用排名
docker stats --no-stream | sort -k3 -h -r

# 导出所有容器的配置
for container in $(docker ps -aq); do
docker inspect $container > config_${container}.json
done