当前位置: 首页 > news >正文

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

http://www.dtcms.com/a/344439.html

相关文章:

  • VsCode 上的Opencv(C++)环境配置(Linux)
  • 四种方法把 Proxy 对象代理数组处理成普通数组
  • URP+Unistorm5.3.0 -> webGL天空黑屏的处理
  • 如何精准高效地比对两份合同的差异?
  • Java数据结构——7.2 二叉树-二叉树
  • MPLS原理
  • 新能源知识库(84)什么是IEC白皮书
  • 初识数据结构——Map和Set:哈希表与二叉搜索树的魔法对决
  • CoreShop微信小程序商城框架开启多租户-添加一个WPF客户端以便进行本地操作--读取店铺信息(6)
  • 循环神经网络实战:GRU 对比 LSTM 的中文情感分析(三)
  • UE5关卡蓝图能不能保存副本呀?
  • Pandas 合并数据集:concat 和 append
  • 2025年城市建设与公共管理国际会议(UCPM 2025)
  • Linux之Ubuntu入门:Vmware中虚拟机中的Ubuntu中的shell命令-常用命令
  • C++实现简易线程池:理解 function 与 bind 的妙用
  • CMake进阶:Ninja环境搭建与加速项目构建
  • JVM-(8)JVM启动的常用命令以及参数
  • 期货Level-2五档订单簿每250毫秒高频数据及分时、日度历史行情深度解析
  • 【大模型采样策略(Greedy、Top-k、Top-p、温度调节)三化学习】
  • 旧物新生,交易无界——探索二手交易小程序系统的绿色革命
  • 优考试局域网系统V6.0.0版
  • 谁才是多快好省的数据分析选择:SelectDB vs. ClickHouse vs. Snowflake
  • 关于常用线程池CompletableFuture和Future的介绍
  • 我从零开始学习C语言(13)- 循环语句 PART2
  • QT-左右侧边栏动画
  • 动态代理保姆级别
  • 大模型微调:从理论到实践的全面指南
  • 数据结构与算法之数组篇leetcode704 - 二分查找
  • kubernetes中pod的管理及优化
  • Spring Boot 自动配置全流程深度解析