说明:[] 代表可选参数,<> 代表必填;-d 后台运行,-p 端口映射,-v 数据卷,--name 指定容器名。

一、基础信息查看

# docker版本信息
docker version
系统信息,镜像、容器、存储驱动
docker info
帮助
docker --help
docker 命令 --help

二、镜像操作(image)

# 搜索镜像
docker search nginx
拉取镜像,不加tag默认latest
docker pull nginx
docker pull nginx:1.25
列出本地镜像
docker images
docker image ls
删除镜像(镜像ID/镜像名:tag)
docker rmi 镜像ID
docker rmi nginx:1.25
强制删除镜像
docker rmi -f 镜像ID
删除所有未使用镜像
docker image prune
删除所有未使用(包括未被容器使用)
docker image prune -a
导出镜像为tar包
docker save -o nginx.tar nginx:1.25
导入tar镜像
docker load -i nginx.tar
根据容器制作镜像(提交)
docker commit [参数] 容器ID 新镜像名:tag
示例
docker commit -a="author" -m="test"  容器ID mynginx:v1
查看镜像分层历史
docker history nginx:1.25

三、容器操作(container)

1. 创建并启动容器 docker run

# 常用完整示例
docker run -d \
--name nginx-demo \
-p 8080:80 \
-v /data/nginx/html:/usr/share/nginx/html \
-v /data/nginx/conf:/etc/nginx/conf.d \
--restart always \
nginx:1.25
参数解释
-d           后台守护进程运行
--name       容器名字
-p 宿主机端口:容器内部端口   端口映射
-v 宿主机目录:容器目录      数据卷挂载
--restart always 开机自启;可选 no/on-failure/unless-stopped
--network host  使用主机网络,不需要-p映射端口
-e KEY=VALUE   设置环境变量,-e TZ=Asia/Shanghai 设置时区
--privileged=true 特权模式(慎用)
--rm 容器退出自动删除(测试用)
-it 交互式终端,进入容器

2. 容器生命周期

# 列出正在运行容器
docker ps
列出所有容器(包含停止的)
docker ps -a
启动已存在容器
docker start 容器ID/容器名
停止容器(优雅关闭)
docker stop 容器ID
强制杀死容器
docker kill 容器ID
重启容器
docker restart 容器ID
删除停止的容器
docker rm 容器ID
强制删除正在运行容器
docker rm -f 容器ID
清理所有停止的容器
docker container prune

3. 进入容器

# 最常用,推荐
docker exec -it 容器ID /bin/bash
如果容器没有bash,用sh
docker exec -it 容器ID /bin/sh
attach(不推荐,退出会停止容器)
docker attach 容器ID

4. 容器文件拷贝

# 宿主机 → 容器
docker cp 本地文件路径 容器ID:/容器内路径
容器 → 宿主机
docker cp 容器ID:/容器内文件 宿主机路径
示例
docker cp index.html nginx-demo:/usr/share/nginx/html/
docker cp nginx-demo:/etc/nginx/nginx.conf ./

5. 查看容器详情、日志、资源

# 容器详细json信息(IP、挂载、环境变量等)
docker inspect 容器ID
查看容器日志
docker logs 容器ID
-f 实时跟踪日志,--tail 行数,--since 指定时间
docker logs -f --tail 200 容器ID
docker logs -f --since "2026-08-25" 容器ID
查看容器cpu内存实时资源占用
docker stats
docker stats 容器ID
查看容器内部进程
docker top 容器ID

四、数据卷 volume(持久化)

# 创建数据卷
docker volume create nginx-data
查看所有数据卷
docker volume ls
查看数据卷详情(宿主机实际路径)
docker volume inspect nginx-data
删除未使用数据卷
docker volume prune
删除指定数据卷
docker volume rm nginx-data
使用数据卷启动容器
docker run -d --name nginx -v nginx-data:/usr/share/nginx/html nginx

两种挂载区别:

  • -v 卷名:/容器路径:docker 管理数据卷,存放在 docker 目录
  • -v /宿主机绝对路径:/容器路径:绑定挂载 bind mount,自定义宿主机目录

五、网络 docker network

# 查看docker网络
docker network ls
创建自定义网络
docker network create my-net
查看网络详情
docker network inspect my-net
将容器连接到网络
docker network connect my-net 容器名
断开网络
docker network disconnect my-net 容器名
清理未使用网络
docker network prune
启动容器指定网络
docker run -d --name app --network my-net nginx
host网络模式:直接复用宿主机网络栈,无需-p
docker run -d --network host nginx

网络模式:

  • bridge:默认,容器之间隔离
  • host:主机网络
  • none:无网络
  • custom:自定义桥接,容器可通过容器名互相访问DNS解析

六、Dockerfile构建镜像

# -t 指定镜像名:tag  .代表Dockerfile所在当前目录
docker build -t myapp:v1 .
指定Dockerfile文件名
docker build -f Dockerfile-prod -t myapp:v2 .

简单Dockerfile示例

FROM nginx:1.25
COPY index.html /usr/share/nginx/html/
EXPOSE 80
CMD ["nginx","-g","daemon off;"]

七、Docker Compose(运维高频)

管理多容器,docker-compose.yml 配置文件

# 前台启动
docker-compose up
后台启动
docker-compose up -d
停止容器,不删除
docker-compose stop
停止并删除容器、网络,保留卷
docker-compose down
down同时删除数据卷
docker-compose down -v
查看日志
docker-compose logs -f
重启服务
docker-compose restart
构建镜像并启动
docker-compose up -d --build
列出compose容器
docker-compose ps
进入compose容器
docker-compose exec 服务名 bash

八、系统清理(运维常用,磁盘满的时候)

# 清理全部:停止容器、无用镜像、网络、未使用卷
docker system prune
危险!清理所有没有被使用的资源(包括未使用镜像、卷)
docker system prune -a --volumes

九、运维实战高频示例

1启动mysql

docker run -d \
--name mysql8 \
-p 3306:3306 \
-e MYSQL_ROOT_PASSWORD=123456 \
-v /data/mysql:/var/lib/mysql \
--restart always \
mysql:8.0

2修改已经运行容器端口:

docker run一旦启动,不能直接修改参数,两种方案

  1. docker inspect拿到配置,导出配置修改,重启(麻烦)
  2. 推荐:重新run新容器,复制挂载配置

3导出容器配置

docker inspect 容器ID > container.json

十、排错常用命令总结

# 容器启动失败,先看日志
docker logs 容器ID
看完整元数据,找IP、挂载、环境变量
docker inspect 容器ID
看磁盘占用
docker system df
看实时资源
docker stats

常用参数速查表

参数作用
-d后台运行
-it交互式终端
-p hostPort:containerPort端口映射
-v hostPath:containerPath挂载目录
-e K=V设置环境变量
--name设置容器名称
--restart always开机自启
--network指定网络

更多推荐