Docker 命令学习笔记:从入门到进阶的实战指南

Docker 命令学习笔记:从入门到进阶的实战指南

  • [Docker 命令学习笔记:从入门到进阶的实战指南](#Docker 命令学习笔记:从入门到进阶的实战指南)
    • [🚀 一、 基础信息与帮助](#🚀 一、 基础信息与帮助)
    • [📦 二、 镜像管理(Image)](#📦 二、 镜像管理(Image))
      • [1. 获取与查看](#1. 获取与查看)
      • [2. 构建与导出](#2. 构建与导出)
      • [3. 删除镜像](#3. 删除镜像)
    • [🐳 三、 容器管理(Container)](#🐳 三、 容器管理(Container))
      • [1. 创建与运行(核心:`docker run`)](#1. 创建与运行(核心:docker run))
      • [2. 查看与监控](#2. 查看与监控)
      • [3. 生命周期操作](#3. 生命周期操作)
      • [4. 进入容器与文件交互](#4. 进入容器与文件交互)
    • [🌐 四、 网络与数据卷(Network & Volume)](#🌐 四、 网络与数据卷(Network & Volume))
      • [1. 网络(Network)](#1. 网络(Network))
      • [2. 数据卷(Volume)](#2. 数据卷(Volume))
    • [🧹 五、 系统维护与清理](#🧹 五、 系统维护与清理)
    • [🛠️ 六、 Docker Compose 常用命令](#🛠️ 六、 Docker Compose 常用命令)
      • [💡 进阶小贴士:](#💡 进阶小贴士:)

Docker 命令学习笔记:从入门到进阶的实战指南

Docker 已经成为现代软件开发和运维的基石。掌握 Docker 命令,不仅能极大提高本地开发和测试的效率,也是构建 CI/CD 流水线的基础。本文整理了日常开发中最常用、最核心的 Docker 命令,并附带了使用示例和避坑指南。

🚀 一、 基础信息与帮助

在开始操作前,了解当前 Docker 环境的状态和寻求帮助至关重要。

  • 查看版本信息 :docker version(客户端与服务端分离显示) / docker info(显示更详细的系统级信息,如镜像数、容器数、存储驱动等)。
  • 万能帮助 :docker <命令> --help。例如 docker run --help,这是学习新命令最高效的方法。

📦 二、 镜像管理(Image)

镜像是容器的基石,是一个只读模板。

1. 获取与查看

  • 拉取镜像 :docker pull <镜像名>:<标签>
    • 示例 :docker pull nginx:latest(不指定标签默认拉取 latest,生产环境强烈建议指定明确的版本号,如 nginx:1.24)。
  • 查看本地镜像 :docker images 或 docker image ls
    • -a:显示所有(包含中间层镜像)。
    • -q:只显示镜像 ID(常用于批量操作)。
    • --filter:过滤,例如 --filter "dangling=true" 查看悬空镜像(无标签的临时镜像)。

2. 构建与导出

  • 构建镜像 :docker build -t <镜像名>:<标签> <上下文路径>
    • 示例 :docker build -t myapp:v1.0 .(. 表示当前目录,需包含 Dockerfile)。
    • -f:指定 Dockerfile 路径,如 -f ./docker/Dockerfile。
  • 导出/导入镜像 (常用于离线环境迁移):
    • 保存为 tar 包 :docker save -o myapp.tar myapp:v1.0
    • 从 tar 包加载 :docker load -i myapp.tar

3. 删除镜像

  • 删除指定镜像 :docker rmi <镜像名或ID>
    • -f:强制删除(即使有基于该镜像运行的容器)。
  • 批量清理悬空镜像 :docker image prune

🐳 三、 容器管理(Container)

容器是镜像的运行实例,这是日常操作最频繁的部分。

1. 创建与运行(核心:docker run)

docker run 是最复杂也最重要的命令,它等价于 docker create + docker start。

常用参数组合:

bash 复制代码
docker run -d \
  -p 8080:80 \
  -v /host/data:/container/data \
  -e ENV=production \
  --name my_nginx \
  --restart=always \
  nginx:latest
  • -d:后台运行(Detached mode)。
  • -it:交互式终端(通常用于运行 bash:docker run -it ubuntu /bin/bash)。
  • -p <宿主机端口>:<容器端口>:端口映射。
  • -v <宿主机路径>:<容器路径>:目录挂载(持久化数据)。
  • -e:设置环境变量。
  • --name:为容器指定一个易读的名字。
  • --restart=always:设置开机自启/崩溃自动重启策略。
  • --rm:容器退出后自动删除(适合临时测试)。

2. 查看与监控

  • 查看运行中的容器 :docker ps
    • -a:查看所有容器(包括已停止的)。
    • -q:只显示 ID(常用于停止/删除所有容器)。
    • -s:显示容器磁盘占用大小。
  • 查看容器日志 :docker logs <容器名或ID>
    • -f:实时滚动查看日志(类似 tail -f)。
    • --tail 100:只看最后 100 行。
  • 查看容器详细信息 :docker inspect <容器名或ID>(返回 JSON 格式,非常详细)。
  • 查看资源占用 :docker stats(实时显示 CPU、内存、网络 IO,类似 Linux 的 top)。

3. 生命周期操作

  • 启动/停止/重启 :docker start/stop/restart <容器名或ID>
  • 强制停止 :docker kill <容器名或ID>
  • 暂停/恢复 :docker pause/unpause <容器名或ID>
  • 删除容器 :docker rm <容器名或ID>
    • -f:强制删除运行中的容器。
    • 一键清理所有停止的容器 :docker container prune

4. 进入容器与文件交互

  • 进入容器 :docker exec -it <容器名或ID> /bin/bash
    • 注意 :推荐使用 exec 而不是 attach。exec 会开启一个新的终端进程,退出时不会导致容器停止。
  • 宿主机与容器互拷文件 :docker cp <源路径> <目标路径>
    • 示例 :docker cp ./config.ini my_nginx:/etc/nginx/(宿主机拷入容器)

🌐 四、 网络与数据卷(Network & Volume)

1. 网络(Network)

  • 查看网络 :docker network ls
  • 创建自定义网络 :docker network create my_network
    • 注:同一自定义网络下的容器可以通过容器名直接互相通信(DNS 解析),这是微服务部署的关键。
  • 将容器连接到网络 :docker network connect my_network <容器名>
  • 查看网络详情 :docker network inspect my_network

2. 数据卷(Volume)

  • 查看数据卷 :docker volume ls
  • 创建数据卷 :docker volume create my_volume
  • 删除未使用的数据卷 :docker volume prune
    • 注 :如果 docker run 时使用了 -v my_volume:/data(未指定宿主机绝对路径),Docker 会自动创建并管理该数据卷。

🧹 五、 系统维护与清理

长期运行 Docker 会产生大量无用数据,定期清理很重要。

  • 查看磁盘占用 :docker system df(非常直观地显示镜像、容器、数据卷占用的空间)。

  • 一键清理(⚠️危险操作,请谨慎) :

    bash 复制代码
    docker system prune -a --volumes
    • 警告 :这会删除所有停止的容器、所有未被使用的网络、所有悬空镜像(-a 会删除所有未被容器使用的镜像)以及所有未被使用的数据卷。执行前请确保数据已备份!

🛠️ 六、 Docker Compose 常用命令

虽然单独讲解 Compose 可以写一篇文章,但作为日常常用命令,记住以下几个即可:

  • 启动服务 :docker-compose up -d(-d 后台运行,首次会自动拉取和构建)。
  • 停止并移除服务 :docker-compose down(会删除容器和网络,但不会删除数据卷)。
  • 重启服务 :docker-compose restart
  • 查看服务状态 :docker-compose ps
  • 查看服务日志 :docker-compose logs -f <服务名>
  • 构建或重新构建服务 :docker-compose build 或 docker-compose up -d --build

💡 进阶小贴士:

  1. 格式化输出 :docker ps --format "table {``{.Names}}\t{``{.Status}}\t{``{.Ports}}",可以定制化输出列,让输出更加清爽。
  2. 别名加速 :在 ~/.bashrc 或 ~/.zshrc 中设置别名,如 alias dps='docker ps --format "table {``{.Names}}\t{``{.Status}}\t{``{.Ports}}"'。
  3. 清理空间 :如果系统提示磁盘空间不足,优先使用 docker system df 排查,再使用 docker system prune 进行清理。

建议将这篇文章收藏,在遇到不熟悉的 Docker 命令时随时查阅。不断实践,这些命令就会成为你的肌肉记忆。

相关推荐
Canmag 兴隆磁性2 小时前
回复磁导率 μ_R:永磁体在动态磁路中的关键参数
开发语言·学习·r语言·永磁材料·充磁·磁导率
He BianGu2 小时前
【笔记】C# 中BindingFlags的详细作用
笔记·c#
lengxuenong2 小时前
区间覆盖问题 · 简明学习手册1
java·学习·算法
AI视觉网奇2 小时前
turtle 入门教程笔记
笔记
跨知易知识产权3 小时前
美国专利确权是什么,和专利诉讼有什么不一样?
笔记
杨逢昌工厂6S管理3 小时前
126-杨逢昌6S三环体系:越做越乱的现场熵增机理与基准化治理——一线现场诊断笔记
经验分享·笔记·职场和发展·学习方法
悟道书生3 小时前
若依 RBAC 权限控制学习笔记
java·网络·笔记·sql·学习·vue
Starry-sky(jing)3 小时前
crane 下载镜像:不连接 Docker,3 步准备并校验 ARM64 离线包
运维·docker·arm64·crane
Be for thing4 小时前
PyTorch自动求导Autograd详解|requires_grad、backward、grad、梯度清零
pytorch·学习·1024程序员节
陈哈哈11114 小时前
折腾了半天,总算把 Vim 9.2 装明白了
笔记