一、镜像管理(核心:拉取、构建、查看、删除)
镜像是容器的 “模板”,这部分命令是操作 Docker 的基础:
bash
# 1. 拉取镜像(从Docker Hub/私有仓库)
docker pull <镜像名:标签> # 标签默认latest(最新版)
docker pull nginx:1.25 # 拉取指定版本的nginx镜像
docker pull mysql:8.0 # 拉取MySQL 8.0镜像# 2. 查看本地镜像
docker images # 查看所有本地镜像(简写:docker image ls)
docker images -a # 查看所有镜像(包括中间层)
docker images -q # 只显示镜像ID(批量删除时常用)
docker inspect <镜像ID/名称> # 查看镜像详细信息(如构建历史、配置)# 3. 构建镜像(通过Dockerfile)
docker build -t <镜像名:标签> <Dockerfile目录> # -t指定镜像标签
docker build -t my-app:v1.0 ./ # 从当前目录的Dockerfile构建镜像,标签v1.0
docker build -f ./Dockerfile.prod -t my-app:prod ./ # 指定自定义Dockerfile名称# 4. 删除镜像
docker rmi <镜像ID/名称> # 删除单个镜像(简写:docker image rm)
docker rmi $(docker images -q) # 删除所有本地镜像(慎用!)
docker rmi -f <镜像ID> # 强制删除(镜像被容器占用时)# 5. 推送镜像到仓库(私有仓库/Docker Hub)
docker tag <本地镜像名:标签> <仓库地址>/<镜像名:标签> # 先打标签
docker tag my-app:v1.0 registry.example.com/my-app:v1.0
docker push registry.example.com/my-app:v1.0 # 推送# 6. 清理无用镜像(悬空镜像:无标签、无容器引用)
docker image prune -a # -a清理所有未使用镜像,不加只清理悬空镜像
二、容器管理(核心:创建、启动、停止、进入、删除)
容器是镜像的运行实例,这部分是日常使用最频繁的命令:
bash
# 1. 创建并启动容器(最常用:run)
# 核心参数:
# -d:后台运行(守护进程)
# -p:端口映射(主机端口:容器端口)
# -v:数据卷挂载(主机目录:容器目录)
# --name:指定容器名称(避免随机名称)
# -it:交互式运行(配合/bin/bash进入容器)
# --rm:容器停止后自动删除(测试用)docker run -d -p 8080:80 --name my-nginx nginx:1.25 # 后台运行nginx,映射8080→80
docker run -it --rm ubuntu /bin/bash # 交互式运行ubuntu,退出后删除容器
docker run -d -v /host/data:/container/data --name my-mysql mysql:8.0 # 挂载数据卷# 2. 查看容器
docker ps # 查看运行中的容器(简写:docker container ls)
docker ps -a # 查看所有容器(包括停止的)
docker ps -q # 只显示运行中容器的ID
docker ps -l # 查看最后创建的容器# 3. 启动/停止/重启容器
docker start <容器ID/名称> # 启动停止的容器
docker stop <容器ID/名称> # 停止运行中的容器
docker restart <容器ID/名称> # 重启容器
docker kill <容器ID/名称> # 强制停止容器(类似kill -9)# 4. 进入运行中的容器(调试用)
docker exec -it <容器ID/名称> /bin/bash # 进入容器(bash)
docker exec -it <容器ID/名称> sh # 轻量容器(如alpine)用sh
docker attach <容器ID/名称> # 附加到容器(退出会停止容器,慎用)# 5. 查看容器日志
docker logs <容器ID/名称> # 查看日志
docker logs -f <容器ID/名称> # 实时跟踪日志(类似tail -f)
docker logs --tail=100 <容器ID/名称> # 查看最后100行日志
docker logs -t <容器ID/名称> # 显示日志时间戳# 6. 删除容器
docker rm <容器ID/名称> # 删除停止的容器(简写:docker container rm)
docker rm -f <容器ID/名称> # 强制删除运行中的容器
docker rm $(docker ps -aq) # 删除所有容器(慎用!)# 7. 查看容器详情/资源使用
docker inspect <容器ID/名称> # 查看容器详细配置(网络、挂载、环境变量)
docker stats <容器ID/名称> # 实时查看容器CPU/内存/网络使用情况# 8. 容器内文件复制(主机↔容器)
docker cp <主机文件路径> <容器ID/名称>:<容器路径> # 主机→容器
docker cp <容器ID/名称>:<容器路径> <主机文件路径> # 容器→主机
三、网络管理(自定义网络、端口映射)
Docker 网络用于容器间通信,默认桥接网络(bridge),也可自定义:
bash
# 1. 查看网络
docker network ls # 查看所有网络
docker network inspect <网络名称> # 查看网络详情(包含连接的容器)# 2. 创建自定义网络(推荐:容器间用名称通信,无需IP)
docker network create my-network # 创建桥接网络
docker run -d --name nginx1 --network my-network nginx # 容器加入自定义网络
docker run -d --name nginx2 --network my-network nginx # 同一网络内,nginx1可直接ping通nginx2# 3. 容器连接/断开网络
docker network connect my-network <容器ID/名称> # 容器加入网络
docker network disconnect my-network <容器ID/名称> # 容器断开网络# 4. 删除网络
docker network rm <网络名称>
docker network prune # 清理未使用的网络
四、数据卷管理(持久化数据,避免容器删除丢失)
数据卷是 Docker 的持久化方案,独立于容器生命周期:
bash
# 1. 查看数据卷
docker volume ls # 查看所有数据卷
docker volume inspect <卷名称> # 查看数据卷详情(存储路径)# 2. 创建数据卷
docker volume create my-volume # 创建命名数据卷# 3. 挂载数据卷到容器(推荐用--mount,更清晰)
docker run -d -v my-volume:/data --name my-app my-app:v1.0 # 简写方式
docker run -d --mount source=my-volume,target=/data --name my-app my-app:v1.0 # 推荐方式# 4. 删除数据卷
docker volume rm <卷名称>
docker volume prune # 清理未使用的数据卷(容器已删除但卷残留)
五、系统运维(清理、信息查看)
bash
# 1. 清理所有无用资源(容器、镜像、网络、数据卷)
docker system prune -a # -a包含未使用镜像,不加只清理容器/网络/悬空镜像
docker system prune --volumes # 同时清理未使用的数据卷(慎用)# 2. 查看Docker系统信息
docker info # 查看Docker版本、驱动、节点数(集群)等
docker system df # 查看Docker磁盘使用情况(镜像/容器/数据卷)
六、常用快捷技巧
- 命令别名:设置别名简化输入,如
alias d=docker、alias dps='docker ps -a'; - 批量操作:结合
$(docker ps -aq)实现批量删除容器,$(docker images -q)批量删除镜像; - 后台运行 + 自动重启:
docker run -d --restart=always --name my-nginx nginx(容器退出自动重启); - 查看容器 IP:
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器ID>。
总结
- 核心高频命令:
- 镜像:
docker pull/build/images/rmi; - 容器:
docker run/ps/exec/logs/stop/rm; - 数据卷 / 网络:
docker volume/network ls/create/rm;
- 镜像:
- 关键参数:
-d(后台)、-p(端口)、-v(挂载)、-it(交互)、--name(命名)是docker run的核心; - 运维重点:定期用
docker system prune清理无用资源,避免磁盘占用过高;数据持久化优先用数据卷(volume)而非主机目录挂载。