DukeDuke
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
主页
项目文档
技术文档
  • 单机版
  • 微服务
  • 代办项目
  • 优鲜项目
项目管理
关于我们
  • 技术文档

    • 网络原理

      • 交换机
      • 路由器
      • TCP/IP协议
      • HTTP 与 HTTPS
    • 软件架构

      • 什么是软件架构
      • 分层架构
      • 微服务架构
      • 事件驱动架构
      • 领域驱动设计(DDD)
      • 架构图
      • 高并发系统
    • Vue3

      • Vue3简介
      • Vue3响应式系统
      • Vue3组合式API
      • Vue3生命周期
      • Vue3模板语法
      • Vue3组件系统
      • Vue3 路由系统
      • Vue3 状态管理
      • Vue3 性能优化
      • Vue3 TypeScript 支持
      • Vue3 项目实战
      • VUE 面试题大全
      • Node.js 安装
    • JAVA

      • JVM

        • 认识JVM
        • JVM类加载器
        • 运行时数据区
        • 执行引擎
        • 本地方法接口
        • 本地方法库
        • JVM垃圾回收
        • JVM性能监控
        • JVM调优
      • 设计模式
        • 单例模式
        • 工厂模式
        • 策略模式
        • 适配器模式
        • 建造者模式
        • 原型模式
        • 装饰器模式
        • 代理模式
        • 外观模式
        • 享元模式
        • 组合模式
        • 桥接模式
      • Java多线程

        • Java 线程基础详解
        • Java 线程池详解
        • Java ThreadLocal 详解
        • Java volatile 详解
        • Java 线程间通信详解
        • Java 线程安全详解
        • Java 线程调度详解
        • Java 线程优先级详解

        • Java 线程中断详解
        • Java 线程死锁详解
      • Java反射
      • Java 面试题

        • Java 基础概念面试题
        • Java 面向对象编程面试题
        • Java 集合框架面试题
        • Java 多线程与并发面试题
        • JVM 与内存管理面试题
        • Java I/O 与 NIO 面试题
        • Java 异常处理面试题
        • Java 反射与注解面试题
        • Java Spring 框架面试题
        • Java 数据库与 JDBC 面试题
        • Java 性能优化面试题
        • Java 实际项目经验面试题
        • Java 高级特性面试题
        • Java 面试准备建议
    • Python

      • Python简介
      • Python安装
      • Python hello world
      • Python基础语法
      • Python数据类型
      • Python数字
      • Python字符串
      • Python列表
      • Python元组
      • Python字典
      • Python日期时间
      • Python文件操作
      • Python异常处理
      • Python函数
      • Python类
      • Python模块
      • Python包
      • Python多线程
      • Python面向对象
      • Python爬虫
      • Django web框架
      • Python 面试题

        • Python 面试题导航
        • Python 基础概念
        • Python 面向对象编程
        • Python 数据结构
        • Python 高级特性
        • Python 框架
        • Python 性能优化
        • Python 项目经验
    • Spring

      • Spring
      • Springboot
      • Spring Security 安全框架
      • SpringBoot 中的事件详解
      • SpringBoot 中的定时任务详解
      • SpringBoot 自动装配原理与源码解释
    • Mybatis

      • Mybatis
      • Mybatis-Plus
    • 数据库

      • Redis

        • Redis简介
        • Redis(单机)安装
        • Redis配置
        • Redis数据结构
        • RDB、AOF 和混合持久化机制
        • Redis内存管理
        • Redis缓存一致性
        • Redis缓存穿透
        • Redis缓存击穿
        • Redis缓存雪崩
        • Redis Lua脚本
        • Redis主从复制
        • Redis哨兵模式
        • Redis集群
        • Redis数据分片
        • Redis CPU使用率过高
        • Redis面试题
      • MySQL

        • MySQL简介
        • MySQL安装
        • MySQL配置
        • MYSQL日常维护
        • MYSQL优化-慢查询
        • MYSQL优化-索引
        • MYSQL数据库设计规范
    • 消息队列

      • RocketMQ
      • Kafka
      • RabbitMQ
      • 消息队列面试题
    • 微服务

      • SpringCloud 微服务
      • Eureka 注册中心
      • Nacos 注册中心
      • Gateway 网关
      • Feign 服务调用
      • Sentinel 限流 与 熔断
      • Seata 分布式事务
      • CAP 理论
      • Redis 分布式锁
      • 高并发系统设计
    • ELK日志分析系统

      • Elasticsearch 搜索引擎
      • Logstash 数据处理
      • Kibana 可视化
      • ELK 实战
    • 开放API

      • 开放API设计
      • 开放API示例项目
    • 人工智能

      • 人工智能简介
      • 机器学习

      • 深度学习

      • 自然语言处理

      • 计算机视觉

        • CUDA与cuDNN详细安装
        • Conda 安装
        • Pytorch 深度学习框架
        • yolo 目标检测
        • TensorRT 深度学习推理优化引擎
        • TensorFlow 机器学习
        • CVAT 图像标注
        • Windows 下安装 CUDA、cuDNN、TensorRT、TensorRT-YOLO 环境
        • Windows10+CUDA+cuDNN+TensorRT+TensorRT-YOLO 部署高性能YOLO11推理
    • 大数据

      • 大数据简介
      • Hadoop 数据存储
      • Flume 数据采集
      • Sqoop 数据导入导出
      • Hive 数据仓库
      • Spark 数据处理
      • Flink 数据处理
      • Kafka 数据采集
      • HBase 数据存储
      • Elasticsearch 搜索引擎
    • 图像处理

      • 图像处理简介
      • 医学图像web呈现
      • 医学图像处理
      • 切片细胞分离问题
    • 服务器&运维

      • Linux 系统

        • Linux 系统管理
        • Linux 网络管理
        • Linux 文件管理
        • Linux 命令大全
      • Nginx Web 服务器

        • Nginx 安装 与 配置
        • Nginx 负载均衡
        • Nginx SSL证书配置
        • Nginx Keepalived 高可用
      • Docker 容器

        • Docker 简介
        • Docker 安装与配置
        • Docker 命令
        • Docker 部署 Nginx
        • Docker 部署 MySQL
        • Docker 部署 Redis
      • 服务器

        • 塔式服务器
        • 机架式服务器
        • 刀片服务器
      • Git 版本控制
      • Jenkins 持续集成
      • Jmeter 性能测试
      • Let's Encrypt 免费SSL证书
    • 简历

      • 项目经理简历
      • 开发工程师简历

Docker 命令

系统信息命令

# 查看 Docker 版本
docker version

# 输出示例:
# Client: Docker Engine - Community
#  Version:           24.0.7
#  API version:       1.43
#  Go version:        go1.20.10
#  Git commit:        afdd53b
#  Built:             Thu Oct 26 09:07:41 2023
#  OS/Arch:           linux/amd64
#  Context:           default
#
# Server: Docker Engine - Community
#  Engine:
#   Version:          24.0.7
#   API version:      1.43 (minimum version 1.12)
#   Go version:       go1.20.10
#   Git commit:       a61a2ff
#   Built:            Thu Oct 26 09:07:41 2023
#   OS/Arch:          linux/amd64
#   Experimental:     false

# 查看系统信息
docker info

# 输出示例:
# Client:
#  Context:    default
#  Debug Mode: false
#  Plugins:
#   buildx: Docker Buildx (Docker Inc., v0.11.2)
#   compose: Docker Compose (Docker Inc., v2.23.3)
#   extension: Manages extensions (Docker Inc., v0.2.19)
#   sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc., v0.6.0)
#   scan: Docker Scan (Docker Inc., v0.25.0)
#
# Server:
#  Containers: 5
#   Running: 2
#   Paused: 0
#   Stopped: 3
#  Images: 15
#  Server Version: 24.0.7
#  Storage Driver: overlay2
#   Backing Filesystem: extfs
#   Supports d_type: true
#   Using metacopy: false
#   Native Overlay Diff: true
#   userxattr: false

# 查看磁盘使用情况
docker system df

# 输出示例:
# TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
# Images          15        8         2.123GB   1.456GB (68%)
# Containers      5         2         156.2MB   156.2MB (100%)
# Local Volumes   3         2         1.234GB   0B (0%)
# Build Cache     0         0         0B        0B

# 查看 Docker 守护进程状态
docker system info

# 输出示例:
# Containers: 5
#  Running: 2
#  Paused: 0
#  Stopped: 3
# Images: 15
# Server Version: 24.0.7
# Storage Driver: overlay2
#  Backing Filesystem: extfs
#  Supports d_type: true
#  Using metacopy: false
#  Native Overlay Diff: true
#  userxattr: false

# 查看 Docker 上下文
docker context ls
# 输出示例:
# NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT               KUBERNETES ENDPOINT                ORCHESTRATOR
# default *           moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock   https://kubernetes.docker.internal:6443   swarm
# my-remote-context   docker             Remote Docker daemon                     ssh://user@remote-host:22

docker context use [上下文名]
# 示例:docker context use my-remote-context
# 输出:my-remote-context

镜像管理

# 搜索镜像
docker search [镜像名]
docker search nginx
# 输出示例:
# NAME                   DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
# nginx                  Official build of Nginx.                       19500     [OK]
# jwilder/nginx-proxy   Automated nginx proxy for Docker containers     3000      [OK]
# richarvey/nginx-php-fpm   Container running Nginx + PHP-FPM + PHP   800       [OK]

docker search --filter=stars=10 [镜像名]  # 搜索星数大于10的镜像
docker search --filter=is-official=true [镜像名]  # 搜索官方镜像

# 拉取镜像
docker pull [镜像名]:[标签]
docker pull nginx:latest
# 输出示例:
# Using default tag: latest
# latest: Pulling from library/nginx
# 7b1a6ab2e44d: Pull complete
# 33c188fd4f7d: Pull complete
# 9e5e79b546b4: Pull complete
# 8c0120a6f8c7: Pull complete
# 8c0120a6f8c7: Pull complete
# Digest: sha256:2b7d6430f40b1a3ab14580f6cc93653d649f406d63e924953d98605b4b359cd7
# Status: Downloaded newer image for nginx:latest

docker pull nginx:1.21-alpine
# 输出示例:
# 1.21-alpine: Pulling from library/nginx
# 59bf1c3509f3: Pull complete
# 719ad85d4fd8: Pull complete
# 1e987daa7652: Pull complete
# Digest: sha256:2b7d6430f40b1a3ab14580f6cc93653d649f406d63e924953d98605b4b359cd7
# Status: Downloaded newer image for nginx:1.21-alpine

# 查看本地镜像
docker images
# 输出示例:
# REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
# nginx               latest              2b7d6430f40b        2 weeks ago         133MB
# mysql               8.0                 8b8c9d4c5120        3 weeks ago         514MB
# ubuntu              20.04               ba6acccedd29        4 weeks ago         72.8MB
# redis               alpine              a89cb8156933        5 weeks ago         32.4MB

docker image ls
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"  # 格式化输出
# 输出示例:
# REPOSITORY          TAG                 SIZE
# nginx               latest              133MB
# mysql               8.0                 514MB
# ubuntu               20.04              72.8MB
# redis               alpine              32.4MB

# 删除镜像
docker rmi [镜像ID/名称]
docker rmi nginx:latest
# 输出示例:
# Untagged: nginx:latest
# Deleted: sha256:2b7d6430f40b1a3ab14580f6cc93653d649f406d63e924953d98605b4b359cd7

docker image rm [镜像ID/名称]
docker rmi -f [镜像ID/名称]  # 强制删除

# 批量删除镜像
docker rmi $(docker images -q)  # 删除所有镜像
docker rmi $(docker images -f "dangling=true" -q)  # 删除悬空镜像
# 输出示例:
# Deleted: sha256:1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef
# Deleted: sha256:abcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890

# 构建镜像
docker build -t [镜像名]:[标签] [Dockerfile路径]
docker build -t myapp:latest .
# 输出示例:
# Sending build context to Docker daemon  2.048kB
# Step 1/5 : FROM node:16-alpine
#  ---> 1234567890ab
# Step 2/5 : WORKDIR /app
#  ---> Running in abcdef123456
#  ---> 2345678901bc
# Step 3/5 : COPY package*.json ./
#  ---> 3456789012cd
# Step 4/5 : RUN npm install
#  ---> Running in def123456789
#  ---> 4567890123de
# Step 5/5 : COPY . .
#  ---> 5678901234ef
# Successfully built 5678901234ef
# Successfully tagged myapp:latest

docker build -f Dockerfile.prod -t myapp:prod .

# 构建时传递参数
docker build --build-arg VERSION=1.0 -t myapp:latest .
# 输出示例:
# Sending build context to Docker daemon  2.048kB
# Step 1/5 : FROM node:16-alpine
#  ---> 1234567890ab
# Step 2/5 : ARG VERSION
#  ---> Running in abcdef123456
#  ---> 2345678901bc
# Step 3/5 : ENV VERSION=$VERSION
#  ---> Running in def123456789
#  ---> 3456789012cd
# Step 4/5 : WORKDIR /app
#  ---> Running in 4567890123de
#  ---> 5678901234ef
# Step 5/5 : COPY . .
#  ---> 6789012345fg
# Successfully built 6789012345fg
# Successfully tagged myapp:latest

容器管理

# 运行容器
docker run [选项] [镜像名] [命令]

# 常用选项详解:
# -d, --detach: 后台运行
# -p, --publish: 端口映射 (主机端口:容器端口)
# -P, --publish-all: 发布所有暴露的端口
# -v, --volume: 挂载卷 (主机路径:容器路径)
# -e, --env: 环境变量
# --name: 容器名称
# --rm: 容器停止后自动删除
# -it: 交互式终端
# --network: 指定网络
# --restart: 重启策略 (no, always, unless-stopped, on-failure)

# 运行示例
docker run -d --name my-nginx -p 80:80 nginx
docker run -it --rm ubuntu:20.04 bash
docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password mysql:8.0
docker run -d -v /host/path:/container/path nginx
docker run -d --restart=unless-stopped nginx

# 查看运行中的容器
docker ps
docker ps --format "table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}}"

# 查看所有容器
docker ps -a
docker ps -a --filter "status=exited"  # 查看已退出的容器

# 启动容器
docker start [容器ID/名称]
docker start -a [容器ID/名称]  # 启动并附加到容器

# 停止容器
docker stop [容器ID/名称]
docker stop -t 10 [容器ID/名称]  # 设置停止超时时间

# 重启容器
docker restart [容器ID/名称]
docker restart -t 10 [容器ID/名称]

# 暂停/恢复容器
docker pause [容器ID/名称]
docker unpause [容器ID/名称]

# 删除容器
docker rm [容器ID/名称]
docker rm -f [容器ID/名称]  # 强制删除运行中的容器
docker rm -v [容器ID/名称]  # 同时删除关联的卷

# 批量删除容器
docker rm $(docker ps -aq)  # 删除所有容器
docker rm $(docker ps -f "status=exited" -q)  # 删除已退出的容器

# 重命名容器
docker rename [旧名称] [新名称]

容器操作

# 进入容器
docker exec -it [容器ID/名称] bash
docker exec -it [容器ID/名称] sh
docker exec -it [容器ID/名称] /bin/bash

# 在容器中执行命令
docker exec [容器ID/名称] ls /app
docker exec -u root [容器ID/名称] whoami

# 查看容器日志
docker logs [容器ID/名称]
docker logs -f [容器ID/名称]  # 实时查看
docker logs --tail 100 [容器ID/名称]  # 查看最后100行
docker logs --since "2023-01-01" [容器ID/名称]  # 查看指定时间后的日志
docker logs --timestamps [容器ID/名称]  # 显示时间戳

# 复制文件
docker cp [本地路径] [容器ID/名称]:[容器路径]
docker cp [容器ID/名称]:[容器路径] [本地路径]
docker cp ./config.json mycontainer:/app/
docker cp mycontainer:/app/logs/ ./local-logs/

# 查看容器详细信息
docker inspect [容器ID/名称]
docker inspect --format='{{.NetworkSettings.IPAddress}}' [容器ID/名称]
docker inspect --format='{{.Config.Env}}' [容器ID/名称]

# 查看容器资源使用情况
docker stats [容器ID/名称]
docker stats --no-stream [容器ID/名称]  # 只显示一次
docker stats --format "table {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# 查看容器进程
docker top [容器ID/名称]

# 提交容器为镜像
docker commit [容器ID/名称] [镜像名]:[标签]
docker commit -m "添加新功能" -a "作者" [容器ID/名称] myapp:v2.0

# 查看容器文件系统变化
docker diff [容器ID/名称]

网络管理

# 查看网络列表
docker network ls
docker network ls --format "table {{.ID}}\t{{.Name}}\t{{.Driver}}\t{{.Scope}}"

# 创建网络
docker network create [网络名]
docker network create --driver bridge my-network
docker network create --subnet=172.18.0.0/16 my-network
docker network create --driver overlay --attachable my-overlay-network

# 查看网络详细信息
docker network inspect [网络名]
docker network inspect --format='{{.IPAM.Config}}' [网络名]

# 删除网络
docker network rm [网络名]
docker network prune  # 删除未使用的网络

# 连接容器到网络
docker network connect [网络名] [容器ID/名称]
docker network connect my-network my-container

# 断开容器与网络的连接
docker network disconnect [网络名] [容器ID/名称]
docker network disconnect my-network my-container

# 创建网络时指定选项
docker network create \
  --driver bridge \
  --subnet=172.20.0.0/16 \
  --gateway=172.20.0.1 \
  my-custom-network

数据卷管理

# 创建数据卷
docker volume create [卷名]
docker volume create my-data

# 查看数据卷列表
docker volume ls
docker volume ls --format "table {{.Name}}\t{{.Driver}}"

# 查看数据卷详细信息
docker volume inspect [卷名]
docker volume inspect --format='{{.Mountpoint}}' [卷名]

# 删除数据卷
docker volume rm [卷名]
docker volume rm -f [卷名]  # 强制删除

# 清理未使用的数据卷
docker volume prune
docker volume prune -f  # 不确认直接清理

# 挂载数据卷到容器
docker run -v [卷名]:[容器路径] [镜像名]
docker run -v my-data:/app/data nginx

# 绑定挂载
docker run -v [主机路径]:[容器路径] [镜像名]
docker run -v /host/path:/container/path nginx

# 只读挂载
docker run -v [主机路径]:[容器路径]:ro [镜像名]
docker run -v /host/path:/container/path:ro nginx

# 临时文件系统
docker run --tmpfs /tmp [镜像名]

系统清理

# 清理未使用的容器
docker container prune
docker container prune -f  # 不确认直接清理

# 清理未使用的镜像
docker image prune
docker image prune -a  # 清理所有未使用的镜像
docker image prune -a -f

# 清理未使用的网络
docker network prune
docker network prune -f

# 清理未使用的数据卷
docker volume prune
docker volume prune -f

# 清理所有未使用的资源
docker system prune -a
docker system prune -a -f

# 查看系统使用情况
docker system df -v  # 详细显示

# 清理构建缓存
docker builder prune
docker builder prune -a

高级命令

# 查看 Docker 事件
docker events
docker events --filter 'type=container'
docker events --since '2023-01-01' --until '2023-01-02'

# 查看 Docker 上下文
docker context ls
docker context use [上下文名]
docker context create [上下文名] --docker host=ssh://user@host

# 查看 Docker 插件
docker plugin ls
docker plugin install [插件名]

# 查看 Docker 构建历史
docker history [镜像名] --no-trunc

# 导出/导入容器
docker export [容器ID] > container.tar
docker import container.tar [镜像名]:[标签]

# 查看容器资源限制
docker stats --no-stream [容器ID]

# 设置容器资源限制
docker run --memory=512m --cpus=1.0 nginx
docker run --memory=1g --memory-swap=2g nginx
docker run --cpuset-cpus="0,1" nginx

# 查看容器端口映射
docker port [容器ID/名称]

# 查看容器日志驱动
docker inspect --format='{{.HostConfig.LogConfig.Type}}' [容器ID]

常用组合命令

# 清理所有停止的容器和未使用的镜像
docker system prune -a -f

# 查看容器IP地址
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器ID]

# 批量停止所有运行中的容器
docker stop $(docker ps -q)

# 批量删除所有容器
docker rm $(docker ps -aq)

# 查看容器环境变量
docker exec [容器ID] env

# 查看容器挂载的卷
docker inspect -f '{{range .Mounts}}{{.Source}} -> {{.Destination}}{{println}}{{end}}' [容器ID]

# 查看容器网络配置
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器ID]

故障排查命令

# 查看容器日志并跟踪
docker logs -f --tail 100 [容器ID]

# 进入容器进行调试
docker exec -it [容器ID] /bin/bash

# 查看容器资源使用情况
docker stats --no-stream [容器ID]

# 查看容器进程
docker top [容器ID]

# 检查容器健康状态
docker inspect --format='{{.State.Health.Status}}' [容器ID]

# 查看容器配置
docker inspect [容器ID] | grep -A 10 "Config"

# 查看容器网络配置
docker inspect [容器ID] | grep -A 20 "NetworkSettings"
最近更新:: 2025/8/14 09:20
Contributors: Duke
Prev
Docker 安装与配置
Next
Docker 部署 Nginx