Docker 命令大全
Docker 命令大全(分类详解)
一、基础命令
1. 版本信息
docker version # 显示Docker客户端和服务器版本
docker info # 显示Docker系统信息(包括镜像、容器数量等)
二、镜像(Image)管理
1. 拉取镜像
docker pull [选项] 镜像名[:标签]
# 示例:拉取指定版本的Nginx
docker pull nginx:1.23-alpine
# 示例:拉取最新版本
docker pull redis:latest
2. 查看镜像
docker images # 列出本地所有镜像(旧版命令)
docker image ls # 列出本地所有镜像(新版推荐)
docker image ls -a # 包括中间层镜像
docker image ls --filter "dangling=true" # 列出悬空镜像(无标签)
3. 构建镜像
docker build [选项] 构建上下文路径
# 示例:从当前目录的Dockerfile构建,命名为myapp:v1
docker build -t myapp:v1 .
# 示例:指定Dockerfile路径,添加构建参数
docker build -f ./docker/Dockerfile --build-arg VERSION=1.0 -t myapp:v1 .
4. 推送镜像
docker push [选项] 镜像名[:标签]
# 示例:推送到私有仓库
docker push registry.example.com/myapp:v1
5. 删除镜像
docker rmi [选项] 镜像名[:标签]|镜像ID # 旧版命令
docker image rm [选项] 镜像名[:标签]|镜像ID # 新版推荐
# 示例:强制删除(即使有容器依赖)
docker rmi -f nginx:1.23-alpine
# 示例:删除所有悬空镜像
docker image prune
6. 镜像详情与历史
docker inspect 镜像名[:标签] # 查看镜像详细信息
docker history 镜像名[:标签] # 查看镜像构建历史(分层信息)
7. 镜像导出 / 导入
# 导出镜像为tar文件
docker save -o nginx.tar nginx:alpine
# 从tar文件导入镜像
docker load -i nginx.tar
三、容器(Container)操作
1. 创建并启动容器
docker run [选项] 镜像名[:标签] [命令] [参数]
# 核心选项:
# -d:后台运行
# -it:交互式终端(通常一起使用)
# --name:指定容器名
# -p:端口映射(宿主端口:容器端口)
# -v:挂载数据卷或目录(宿主路径:容器路径[:权限])
# --network:指定网络
# --rm:容器退出后自动删除# 示例1:启动交互式Ubuntu容器
docker run -it --name ubuntu-test ubuntu:22.04 /bin/bash# 示例2:后台启动Nginx,映射80端口,挂载配置文件
docker run -d --name nginx-web -p 8080:80 -v ./nginx.conf:/etc/nginx/nginx.conf:ro nginx:alpine
2. 查看容器
docker ps # 列出运行中的容器(旧版)
docker container ls # 列出运行中的容器(新版推荐)
docker ps -a # 列出所有容器(包括停止的)
docker ps -q # 只显示容器ID(用于批量操作)
docker ps --filter "status=exited" # 过滤出已退出的容器
3. 容器生命周期管理
# 启动已停止的容器
docker start 容器名|容器ID
# 停止运行中的容器
docker stop 容器名|容器ID
# 强制停止容器(类似kill)
docker kill 容器名|容器ID
# 重启容器
docker restart 容器名|容器ID
# 删除容器(需先停止,或用-f强制删除运行中容器)
docker rm 容器名|容器ID
docker rm -f 容器名|容器ID # 强制删除
# 删除所有已停止容器
docker container prune
4. 容器交互
# 进入运行中的容器(交互式终端)
docker exec -it 容器名|容器ID /bin/bash # bash终端
docker exec -it 容器名|容器ID sh # sh终端(轻量镜像)# 在容器内执行单条命令
docker exec 容器名|容器ID ls /app# 查看容器日志
docker logs [选项] 容器名|容器ID
# 选项:-f 实时跟踪,-t 显示时间戳,--tail 100 显示最后100行
docker logs -ft --tail 50 nginx-web
5. 容器详情与状态
# 查看容器详细信息(配置、网络、挂载等)
docker inspect 容器名|容器ID# 查看容器资源使用情况(实时)
docker stats 容器名|容器ID# 查看容器端口映射
docker port 容器名|容器ID
6. 容器与宿主文件传输
# 从容器复制文件到宿主
docker cp 容器名|容器ID:/app/logs.txt ./local-log.txt# 从宿主复制文件到容器
docker cp ./local-config.ini 容器名|容器ID:/app/config.ini
7. 容器提交为镜像
# 将容器当前状态保存为新镜像
docker commit [选项] 容器名|容器ID 新镜像名[:标签]
# 示例:提交修改后的Nginx容器为自定义镜像
docker commit -m "添加自定义配置" nginx-web my-nginx:v1
四、网络(Network)管理
1. 查看网络
docker network ls # 列出所有网络
docker network inspect 网络名 # 查看网络详细信息(包含连接的容器)
2. 创建网络
docker network create [选项] 网络名
# 常用选项:
# --driver:网络驱动(bridge/overlay/macvlan等,默认bridge)
# --subnet:指定子网
# --gateway:指定网关# 示例1:创建自定义桥接网络
docker network create my-bridge-net# 示例2:创建带指定子网的网络
docker network create --driver bridge --subnet 192.168.100.0/24 --gateway 192.168.100.1 my-subnet-net
3. 容器连接 / 断开网络
# 将容器连接到网络
docker network connect 网络名 容器名|容器ID# 将容器从网络断开
docker network disconnect 网络名 容器名|容器ID
4. 删除网络
docker network rm 网络名 # 删除指定网络
docker network prune # 删除所有未使用的网络
五、数据卷(Volume)管理
1. 查看数据卷
docker volume ls # 列出所有数据卷
docker volume inspect 卷名 # 查看卷详细信息(存储路径等)
2. 创建数据卷
docker volume create [选项] 卷名
# 示例:创建带标签的数据卷
docker volume create --label app=mysql mysql-data
3. 删除数据卷
docker volume rm 卷名 # 删除指定数据卷
docker volume prune # 删除所有未使用的数据卷
六、Docker Compose 命令
(需安装 Docker Compose,用于管理多容器应用)
docker compose up # 创建并启动所有服务(前台运行)
docker compose up -d # 后台启动服务
docker compose down # 停止并删除服务、网络(保留数据卷)
docker compose down -v # 停止并删除服务、网络和数据卷docker compose start # 启动已创建的服务
docker compose stop # 停止服务(不删除)
docker compose restart # 重启服务docker compose ps # 查看服务容器状态
docker compose logs [服务名] # 查看服务日志(-f实时跟踪)
docker compose exec 服务名 命令 # 进入服务容器执行命令
# 示例:进入web服务的bash终端
docker compose exec web bashdocker compose build # 构建服务镜像
docker compose pull # 拉取服务镜像
七、Swarm 集群命令
(Docker 原生集群管理,需初始化 Swarm 模式)
1. 集群初始化与加入
# 初始化Swarm(成为管理节点)
docker swarm init --advertise-addr 主机IP# 获取工作节点加入令牌
docker swarm join-token worker# 获取管理节点加入令牌
docker swarm join-token manager# 工作节点/管理节点加入集群
docker swarm join --token 令牌 管理节点IP:2377
2. 节点管理
docker node ls # 列出集群所有节点
docker node inspect 节点名 # 查看节点详情
docker node update --availability drain 节点名 # 标记节点为不可调度(排水)
docker node update --availability active 节点名 # 恢复节点调度
3. 服务(Service)管理
# 创建服务
docker service create [选项] 镜像名 [命令]
# 示例:创建3副本的Nginx服务,映射80端口
docker service create --name web --replicas 3 -p 80:80 nginx:alpine# 查看服务
docker service ls # 列出所有服务
docker service ps 服务名 # 查看服务的容器实例# 扩展服务副本数
docker service scale 服务名=5 # 调整为5个副本# 更新服务(镜像、配置等)
docker service update --image nginx:latest web # 更新镜像
docker service update --replicas 4 web # 更新副本数# 删除服务
docker service rm 服务名
4. 退出集群
# 工作节点退出
docker swarm leave# 管理节点退出(需先确保不是最后一个管理节点)
docker swarm leave --force
八、系统维护命令
# 清理所有未使用的资源(镜像、容器、网络、卷)
docker system prune
# 清理所有资源(包括未引用的)
docker system prune -a# 查看Docker磁盘使用情况
docker system df# 强制删除所有镜像(谨慎使用)
docker rmi -f $(docker images -q)# 强制删除所有容器(谨慎使用)
docker rm -f $(docker ps -aq)
命令速查表(核心高频)
功能 | 命令示例 |
---|---|
拉取镜像 | docker pull nginx:alpine |
启动容器 | docker run -d -p 80:80 --name nginx nginx |
查看运行中容器 | docker ps |
进入容器 | docker exec -it nginx sh |
查看容器日志 | docker logs -f nginx |
停止容器 | docker stop nginx |
删除容器 | docker rm nginx |
构建镜像 | docker build -t myapp:v1 . |
启动 Compose 服务 | docker compose up -d |
通过上述命令,可覆盖 Docker 从基础到进阶的绝大多数操作场景。实际使用中,可通过docker 命令 --help
查看更详细的选项说明(例如docker run --help
)。