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)。

相关推荐
CTRA王大大1 小时前
【golang】制作linux环境+golang的Dockerfile | 如何下载golang镜像源
linux·开发语言·docker·golang
运维开发王义杰7 小时前
GitLab CI:深度解析 Runner的Shell与Docker执行器
ci/cd·docker·gitlab
qq_364371728 小时前
Docker 常见命令
运维·docker·容器
照物华8 小时前
k8s之 Pod 资源管理与 QoS
云原生·容器·kubernetes
hhzz8 小时前
重温 K8s 基础概念知识系列八( K8S 高级网络)
网络·容器·kubernetes
Insist7538 小时前
K8s--调度管理:node节点、Pod亲和性、污点与容忍
linux·容器·kubernetes
Insist7539 小时前
k8s——持久化存储 PVC
java·容器·kubernetes
无级程序员12 小时前
kubernetes-dashboard使用http不登录
http·容器·kubernetes
月熊13 小时前
Kubernetes笔记整合-1
笔记·容器·kubernetes