Docker 命令大全

Docker 命令大全(分类详解)

一、基础命令

1. 版本信息

bash 复制代码
docker version  # 显示Docker客户端和服务器版本
docker info     # 显示Docker系统信息(包括镜像、容器数量等)

二、镜像(Image)管理

1. 拉取镜像

bash 复制代码
docker pull [选项] 镜像名[:标签]
# 示例:拉取指定版本的Nginx
docker pull nginx:1.23-alpine
# 示例:拉取最新版本
docker pull redis:latest

2. 查看镜像

bash 复制代码
docker images               # 列出本地所有镜像(旧版命令)
docker image ls             # 列出本地所有镜像(新版推荐)
docker image ls -a          # 包括中间层镜像
docker image ls --filter "dangling=true"  # 列出悬空镜像(无标签)

3. 构建镜像

bash 复制代码
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. 推送镜像

bash 复制代码
docker push [选项] 镜像名[:标签]
# 示例:推送到私有仓库
docker push registry.example.com/myapp:v1

5. 删除镜像

bash 复制代码
docker rmi [选项] 镜像名[:标签]|镜像ID  # 旧版命令
docker image rm [选项] 镜像名[:标签]|镜像ID  # 新版推荐
# 示例:强制删除(即使有容器依赖)
docker rmi -f nginx:1.23-alpine
# 示例:删除所有悬空镜像
docker image prune

6. 镜像详情与历史

bash 复制代码
docker inspect 镜像名[:标签]  # 查看镜像详细信息
docker history 镜像名[:标签]  # 查看镜像构建历史(分层信息)

7. 镜像导出 / 导入

bash 复制代码
# 导出镜像为tar文件
docker save -o nginx.tar nginx:alpine
# 从tar文件导入镜像
docker load -i nginx.tar

三、容器(Container)操作

1. 创建并启动容器

bash 复制代码
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. 查看容器

bash 复制代码
docker ps               # 列出运行中的容器(旧版)
docker container ls     # 列出运行中的容器(新版推荐)
docker ps -a            # 列出所有容器(包括停止的)
docker ps -q            # 只显示容器ID(用于批量操作)
docker ps --filter "status=exited"  # 过滤出已退出的容器

3. 容器生命周期管理

bash 复制代码
# 启动已停止的容器
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. 容器交互

bash 复制代码
# 进入运行中的容器(交互式终端)
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. 容器详情与状态

bash 复制代码
# 查看容器详细信息(配置、网络、挂载等)
docker inspect 容器名|容器ID

# 查看容器资源使用情况(实时)
docker stats 容器名|容器ID

# 查看容器端口映射
docker port 容器名|容器ID

6. 容器与宿主文件传输

bash 复制代码
# 从容器复制文件到宿主
docker cp 容器名|容器ID:/app/logs.txt ./local-log.txt

# 从宿主复制文件到容器
docker cp ./local-config.ini 容器名|容器ID:/app/config.ini

7. 容器提交为镜像

bash 复制代码
# 将容器当前状态保存为新镜像
docker commit [选项] 容器名|容器ID 新镜像名[:标签]
# 示例:提交修改后的Nginx容器为自定义镜像
docker commit -m "添加自定义配置" nginx-web my-nginx:v1

四、网络(Network)管理

1. 查看网络

bash 复制代码
docker network ls                # 列出所有网络
docker network inspect 网络名    # 查看网络详细信息(包含连接的容器)

2. 创建网络

bash 复制代码
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. 容器连接 / 断开网络

bash 复制代码
# 将容器连接到网络
docker network connect 网络名 容器名|容器ID

# 将容器从网络断开
docker network disconnect 网络名 容器名|容器ID

4. 删除网络

bash 复制代码
docker network rm 网络名          # 删除指定网络
docker network prune             # 删除所有未使用的网络

五、数据卷(Volume)管理

1. 查看数据卷

bash 复制代码
docker volume ls                # 列出所有数据卷
docker volume inspect 卷名      # 查看卷详细信息(存储路径等)

2. 创建数据卷

bash 复制代码
docker volume create [选项] 卷名
# 示例:创建带标签的数据卷
docker volume create --label app=mysql mysql-data

3. 删除数据卷

bash 复制代码
docker volume rm 卷名            # 删除指定数据卷
docker volume prune             # 删除所有未使用的数据卷

六、Docker Compose 命令

(需安装 Docker Compose,用于管理多容器应用)

bash 复制代码
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 bash

docker compose build            # 构建服务镜像
docker compose pull             # 拉取服务镜像

七、Swarm 集群命令

(Docker 原生集群管理,需初始化 Swarm 模式)

1. 集群初始化与加入

bash 复制代码
# 初始化Swarm(成为管理节点)
docker swarm init --advertise-addr 主机IP

# 获取工作节点加入令牌
docker swarm join-token worker

# 获取管理节点加入令牌
docker swarm join-token manager

# 工作节点/管理节点加入集群
docker swarm join --token 令牌 管理节点IP:2377

2. 节点管理

bash 复制代码
docker node ls                  # 列出集群所有节点
docker node inspect 节点名      # 查看节点详情
docker node update --availability drain 节点名  # 标记节点为不可调度(排水)
docker node update --availability active 节点名  # 恢复节点调度

3. 服务(Service)管理

bash 复制代码
# 创建服务
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. 退出集群

bash 复制代码
# 工作节点退出
docker swarm leave

# 管理节点退出(需先确保不是最后一个管理节点)
docker swarm leave --force

八、系统维护命令

bash 复制代码
# 清理所有未使用的资源(镜像、容器、网络、卷)
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)。

相关推荐
脚踏实地的大梦想家9 小时前
【Docker】P5 Docker Compose 实战指南:一键部署 WordPress + MySQL
mysql·docker·容器
闲人编程10 小时前
现代Python开发环境搭建(VSCode + Dev Containers)
开发语言·vscode·python·容器·dev·codecapsule
醉卧雕龙舫 、10 小时前
一.docker基础概念
docker
帅帅梓17 小时前
docker图形化管理
docker·容器·eureka
努力搬砖的咸鱼1 天前
容器之间怎么通信?Docker 网络全解析
网络·docker·云原生·容器
liming4951 天前
Ubuntu18.04部署k8s
云原生·容器·kubernetes
元直数字电路验证1 天前
ASP.NET Core Web APP(MVC)开发中无法全局配置 NuGet 包,该怎么解?
前端·javascript·ui·docker·asp.net·.net
YC运维1 天前
Kubernetes资源管理全解析
java·容器·kubernetes
chinesegf1 天前
Docker篇6-项目app.py和flask_app.service配置和映射到docker中
docker·容器·flask
退役小学生呀1 天前
二十二、DevOps:基于Tekton的云原生平台落地(三)
linux·云原生·容器·kubernetes·k8s·devops·tekton