Docker 命令行与 Docker Compose 全面指南

  • 时间:2025-10-30 15:43 作者: 来源: 阅读:0
  • 扫一扫,手机访问
摘要:1 Docker 容器状态管理与优化Docker 容器的生命周期包含多个状态:Created(已创建)、Running(运行中)、Paused(暂停)、Stopped(停止)和 Deleted(删除)。理解这些状态及其转换是有效管理 Docker 容器的基础。1.1 容器生命周期管理 (高频常用)命令功能描述实际示例使用频率docker run创建并启动新容

Docker 命令行与 Docker Compose 全面指南


1 Docker 容器状态管理与优化

Docker 容器的生命周期包含多个状态:Created(已创建)、Running(运行中)、Paused(暂停)、Stopped(停止)和 Deleted(删除)。理解这些状态及其转换是有效管理 Docker 容器的基础。

1.1 容器生命周期管理 (高频常用)



命令

功能描述

实际示例

使用频率

docker run

创建并启动新容器

docker run -d --name my-nginx nginx:alpine

⭐⭐⭐⭐⭐

docker start

启动已存在的停止容器

docker start my-nginx

⭐⭐⭐⭐⭐

docker stop

优雅停止运行中的容器 (发送 SIGTERM)

docker stop my-nginx(等待10秒)

⭐⭐⭐⭐⭐

docker restart

重启容器

docker restart my-nginx

⭐⭐⭐⭐

docker pause/unpause

暂停/恢复容器

docker pause my-nginx

⭐⭐⭐

docker kill

强制停止容器 (发送 SIGKILL)

docker kill my-nginx(立即停止)

⭐⭐

docker rm

删除已停止的容器

docker rm my-nginx

⭐⭐⭐⭐⭐

docker create

创建容器但不立即启动

docker create --name my-nginx nginx:alpine

⭐⭐

1.2 容器状态查看与监控 (高频常用)



命令

功能描述

实际示例

使用频率

docker ps

查看运行中的容器

docker ps -a(查看所有容器)

⭐⭐⭐⭐⭐

docker logs

查看容器日志输出

docker logs -f my-nginx(实时跟踪)

⭐⭐⭐⭐⭐

docker stats

实时监控容器资源使用 (CPU/内存/网络)

docker stats my-nginx

⭐⭐⭐⭐

docker top

查看容器内运行的进程

docker top my-nginx

⭐⭐⭐

docker inspect

查看容器详细信息 (配置/状态/网络)

docker inspect my-nginx

⭐⭐⭐⭐⭐

docker events

查看实时事件流 (创建/启动/停止等)

docker events --filter event=die

⭐⭐

docker wait

等待容器停止并获取退出状态码

docker wait my-nginx

1.3 容器优化策略

  • 资源限制:使用 -m、--cpus等参数限制容器资源,防止单个容器耗尽主机资源。

  • docker run -it --memory=512m --cpus=1.5 alpine

  • 自动重启策略:根据容器退出状态配置自动重启。

  • docker run --restart=always nginx # 总是重启 docker run --restart=on-failure:5 nginx # 失败时最多重启5次

  • 健康检查:在 Dockerfile 中定义健康检查指令,或在运行容器时指定。

  • # Dockerfile 中定义 HEALTHCHECK --interval=30s --timeout=3s  CMD curl -f http://localhost/ || exit 1

  • 清理机制:使用 --rm选项运行临时容器,或定期使用 prune命令清理。

  • docker run --rm -it ubuntu # 退出后自动删除 docker system prune -a # 清理所有停止的容器、未使用的镜像和网络

2 Docker 容器部署及配置设置

容器部署涉及运行时的各种配置,包括网络、存储、环境变量等。

2.1 容器运行与配置 (高频常用)

docker run命令是启动容器的核心,选项繁多。



选项

功能描述

实际示例

使用频率

-d/--detach

后台运行容器

docker run -d nginx

⭐⭐⭐⭐⭐

--name

为容器指定名称

docker run --name my-web nginx

⭐⭐⭐⭐⭐

-p/--publish

端口映射 (主机端口:容器端口)

docker run -p 8080:80 nginx

⭐⭐⭐⭐⭐

-v/--volume

挂载数据卷或主机目录

docker run -v /host/path:/container/path nginx

⭐⭐⭐⭐⭐

-e/--env

设置环境变量

docker run -e MY_VAR=value nginx

⭐⭐⭐⭐⭐

--rm

容器退出后自动删除

docker run --rm -it ubuntu bash

⭐⭐⭐⭐

-it

交互式运行容器 (组合选项)

docker run -it ubuntu bash

⭐⭐⭐⭐⭐

--network

指定容器网络

docker run --network=my-bridge nginx

⭐⭐⭐⭐

--restart

设置重启策略

docker run --restart=on-failure:3 nginx

⭐⭐⭐

-u/--user

指定运行用户

docker run -u 1000:1000 nginx

⭐⭐

--env-file

从文件读取环境变量

docker run --env-file .env nginx

⭐⭐⭐

2.2 网络配置管理

Docker 提供了多种网络模式来适应不同场景。



网络模式

描述

适用场景

使用频率

bridge

默认模式。容器通过 Docker 桥接网络与主机和其他容器通信。

单主机内容器通信,需要端口映射

⭐⭐⭐⭐⭐

host

容器直接使用主机网络,无隔离。性能最好,但安全性较低。

高性能需求场景,如网络密集型应用

⭐⭐⭐

none

禁用所有网络。容器完全隔离。

安全隔离要求极高的场景

overlay

支持多主机容器通信。

Docker Swarm 或 Kubernetes 集群环境

⭐⭐⭐ (集群)

macvlan

为容器分配 MAC 地址,使其在物理网络上像一台物理设备。

需要容器直接暴露在物理网络的场景

⭐⭐

常用网络管理命令

# 查看网络列表docker network ls# 创建自定义桥接网络docker network create --driver bridge --subnet 192.168.1.0/24 my-bridge# 将运行中的容器连接到网络docker network connect my-bridge my-container# 断开容器与网络的连接docker network disconnect my-bridge my-container# 查看网络详细信息docker network inspect my-bridge# 删除网络docker network rm my-bridge

2.3 数据持久化与卷管理

容器本身是临时的,数据持久化需要依赖卷(Volume)或绑定挂载(Bind Mount)。



方式

描述

优点

缺点

Volume

Docker 管理的持久化数据存储,与容器生命周期分离。

易于备份、迁移和管理,是 Docker 推荐的方式。

位置在 Docker 存储区域,主机上直接访问稍复杂。

Bind Mount

将主机上的特定目录或文件直接挂载到容器中。

主机和容器之间共享文件方便,如配置文件、源代码。

依赖主机目录结构,可移植性较差。

tmpfs

将数据存储在内存中,仅适用于 Linux 主机。

速度快,但容器停止后数据丢失。

非持久化,适用于临时敏感数据。

常用数据卷命令

# 查看卷列表docker volume ls# 创建命名卷docker volume create my-vol# 查看卷详细信息docker volume inspect my-vol# 使用卷启动容器docker run -d -v my-vol:/app/data nginx# 删除未使用的卷docker volume prune# 绑定挂载主机目录docker run -d -v /host/path:/container/path nginx

3 Docker 镜像管理:打包、发布、推送和拉取

镜像是容器的基础,管理镜像是 Docker 使用中的重大环节。

3.1 基础镜像操作 (高频常用)



命令

功能描述

实际示例

使用频率

docker pull

从仓库拉取镜像到本地

docker pull nginx:latest

⭐⭐⭐⭐⭐

docker images

列出本地镜像

docker images

⭐⭐⭐⭐⭐

docker rmi

删除本地镜像

docker rmi nginx:latest

⭐⭐⭐⭐

docker build

根据 Dockerfile 构建镜像

docker build -t my-app:latest .

⭐⭐⭐⭐⭐

docker tag

给镜像打标签

docker tag my-app:latest my-registry/my-app:v1.0

⭐⭐⭐⭐

docker push

将镜像推送到远程仓库

docker push my-registry/my-app:v1.0

⭐⭐⭐⭐

docker save

将镜像保存为 tar 文件

docker save -o my-app.tar my-app:latest

⭐⭐

docker load

从 tar 文件加载镜像

docker load -i my-app.tar

⭐⭐

docker history

查看镜像构建历史

docker history my-app:latest

⭐⭐

docker search

在 Docker Hub 中搜索镜像

docker search nginx

⭐⭐

3.2 镜像构建 (Dockerfile)

Dockerfile 是一个包含构建镜像所需指令的文本文件。

常见 Dockerfile 指令

# 指定基础镜像FROM alpine:3.7# 更新系统并安装包RUN apk update && apk add curl# 设置工作目录WORKDIR /app# 复制应用程序文件COPY app.sh .# 设置入口点ENTRYPOINT ["./app.sh"]

构建镜像:

docker build -t my-image:latest .

docker build支持一些有用选项:

  • --no-cache:构建时不使用缓存。

  • --pull:总是尝试拉取基础镜像的最新版本。

3.3 镜像推送与拉取

要分享镜像,需要将其推送到镜像仓库(如 Docker Hub、私有仓库)。

  • 登录仓库

docker login
  • 标记镜像:镜像需要符合仓库的命名规范([registry-url]/[username]/[repository]:[tag])。

docker tag my-image:latest your-username/your-repo:your-tag
  • 推送镜像

docker push your-username/your-repo:your-tag
  • 拉取镜像(在其他机器上):

docker pull your-username/your-repo:your-tag

Docker 命令行与 Docker Compose 全面指南


4 Docker Compose 详细讲解

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件(默认名为 docker-compose.yml)来配置所有服务,然后用一条命令即可启动所有服务。

4.1 核心概念与优势

  • 单文件配置:使用 YAML 文件定义应用的所有服务、网络、卷。

  • 一键操作:一条命令启动、停止、重建所有服务。

  • 环境隔离:Compose 默认会为项目创建独立的网络,避免项目间干扰。

  • 变量与扩展:支持环境变量和扩展字段,便于配置复用。

4.2 docker-compose.yml 文件结构解析

一个典型的 docker-compose.yml文件包含以下部分:

version: '3'  # 指定 Compose 文件格式的版本services:     # 定义各个服务(容器)  web:        # 服务名称    image: nginx:latest  # 使用的镜像    ports:      - "8080:80"       # 端口映射 (主机:容器)    volumes:      - ./html:/usr/share/nginx/html  # 挂载数据卷或目录    networks:      - my-network      # 连接到的网络    depends_on:      - database        # 依赖关系,先启动 database  database:   # 另一个服务    image: mysql:5.7    environment:      MYSQL_ROOT_PASSWORD: example_password    volumes:      - db_data:/var/lib/mysql  # 使用命名卷    networks:      - my-networkvolumes:      # 定义卷(如果不在上面声明,Compose 会自动创建)  db_data:networks:     # 定义网络(如果不在上面声明,Compose 会自动创建)  my-network:

4.3 常用 Docker Compose 命令 (高频常用)



命令

功能描述

使用频率

docker-compose up

创建并启动所有服务。-d在后台运行。

⭐⭐⭐⭐⭐

docker-compose down

停止并删除所有容器、网络。-v同时删除卷。

⭐⭐⭐⭐⭐

docker-compose ps

列出本项目中的所有容器。

⭐⭐⭐⭐

docker-compose logs

查看所有服务的日志。-f实时跟踪。

⭐⭐⭐⭐

docker-compose start

启动已存在的服务容器。

⭐⭐⭐

docker-compose stop

停止运行中的服务容器,不删除。

⭐⭐⭐

docker-compose restart

重启服务容器。

⭐⭐⭐

docker-compose exec

在运行中的服务容器中执行命令。

⭐⭐⭐⭐

docker-compose build

构建或重新构建服务的镜像。

⭐⭐⭐

docker-compose pull

拉取服务所需的镜像。

⭐⭐

docker-compose config

验证并查看 Compose 文件配置。

⭐⭐

4.4 Docker Compose 实战示例:部署 WordPress

这是一个经典的多容器应用示例(WordPress + MySQL):

version: '3'services:  db:    image: mysql:5.7    volumes:
      - db_data:/var/lib/mysql    restart: always    environment:      MYSQL_ROOT_PASSWORD: somewordpress      MYSQL_DATABASE: wordpress      MYSQL_USER: wordpress      MYSQL_PASSWORD: wordpress  wordpress:    depends_on:
      - db    image: wordpress:latest    ports:
      - "8000:80"    restart: always    environment:      WORDPRESS_DB_HOST: db:3306      WORDPRESS_DB_USER: wordpress      WORDPRESS_DB_PASSWORD: wordpress      WORDPRESS_DB_NAME: wordpress    volumes:
      - ./wp-content:/var/www/html/wp-contentvolumes:  db_data:

部署步骤

  1. 将上述内容保存为 docker-compose.yml。

  2. 在终端中运行 docker-compose up -d。

  3. 打开浏览器访问 http://localhost:8000即可看到 WordPress 安装界面。

  4. 要停止并清理,运行 docker-compose down -v。

5 总结与高频命令速查表

5.1 学习提议

  • 先掌握基础:熟练使用 docker run, docker ps, docker logs, docker stop, docker rm, docker images, docker build等核心命令。

  • 理解生命周期:清楚容器的创建、运行、暂停、停止和删除状态及其转换。

  • 重点关注数据持久化:弄清 Volume 和 Bind Mount 的区别与适用场景。

  • 活用 Docker Compose:对于多容器应用,Compose 能极大提升效率。

  • 多实践:在本地尝试运行不同的容器(Nginx, MySQL, Redis等),修改配置,体验整个流程。

5.2 终极高频命令速查表



类别

超高频命令 (每天用)

次高频命令 (常常用)

容器生命周期

docker run, docker ps, docker stop, docker rm, docker logs

docker start, docker restart, docker exec

镜像管理

docker build, docker images, docker pull

docker tag, docker push, docker rmi

网络与存储

docker network ls, docker volume ls

docker network create, docker volume create

Compose

docker-compose up, docker-compose down, docker-compose logs

docker-compose ps, docker-compose exec

  • 全部评论(0)
最新发布的资讯信息
【系统环境|】Spring Boot3 中实现按模板导出 Word 文档合同的技术指南(2025-10-30 16:04)
【系统环境|】openPangu-Ultra-MoE-718B-V1.1今日正式开源,部署指南来啦!(2025-10-30 16:03)
【系统环境|】Ubuntu + vLLM + DeepSeek 本地部署完全指南(2025-10-30 16:03)
【系统环境|】如何用公众号AI编辑器实现一键排版?一份完整的5步指南(2025-10-30 16:02)
【系统环境|】Spring Boot 与 Nacos 完美整合指南(2025-10-30 16:01)
【系统环境|】Rust MCP开发指南:让AI与应用对话的桥梁(2025-10-30 16:00)
【系统环境|】MCP Server 开发实战指南(2025-10-30 15:59)
【系统环境|】入门指南:使用 Playwright MCP Server 为你的 AI Agent 赋予能力(2025-10-30 15:58)
【系统环境|】一个IT女搬砖工的情人节爱心礼物指南及衍伸 v16.02.14(2025-10-30 15:57)
【系统环境|】百元矿渣显卡淘金全指南(2025-10-30 15:57)
手机二维码手机访问领取大礼包
返回顶部