学习笔记
📚AI大数据相关
00. Ai大数据模型
模型整理
使用 DeepSeek 通用公式
学会这8招,让DeepSeek变得超好用!
大数据购物分析选优
Windows和Ubuntu部署DeepSeek性能差距
本地部署 Ollam+DeepSeek 探索爬坑
模型对比测试
React Native 和 native 半屏弹窗
React Native Modal + WebView
01. Ai 提示词
00. 🌟提示词黄金公式:让 AI 秒变专家的通用指令框架
01. 🚀 AI短篇小说创作:大神级实操指南与提示词模板
02. Gemini专用Agent:今日头条硬核技术博主
03. Gemini专用Agent:小红书金牌育儿养生博主
04. Gemini专业Agent:全栈架构导师 & 终极面试官
05. Gemini专业Agent:资深私募操盘手 & 首席证券分析师
06. 🤖IDE&&CLI使用Agent:单元测试
07. 高度自主化开发提示词
Java基础相关
JVM内存模型及线程空间
动态代理
java并发编程
Java基础知识
Java中Future
Java中9种常见的CMS GC问题分析与解决
移动端相关
杂乱整理
HarmonyOS 鸿蒙开发知识
ArkTS中如何自定义组件和复用统一样式
Android开发相关
WebView设置圆角
📄 Android 实时屏幕共享技术方案文档
Android线程与线程池全面解析:从使用到源码剖析
🔥 RecyclerView全面解析:从架构原理到性能优化与面试指南
🔥 OkHttp全面解析:从架构原理到性能优化与面试指南
🔥 Retrofit全面解析:从设计架构与核心思想到常见问题
开发工具相关
Git cmd学习整理
Markdown用法大全集
【2023年12月】工作常用
Git如何单独合并某次提交到另一个分支
Debina/Ubuntu安装Node环境
🐳 Docker 命令行与 Docker Compose 全面指南
使用Podman来替代Docker
中文注释提交git后变成"\u0087\u0079..."问题
macOS 容器化工具深度解析:Docker Desktop、OrbStack、Podman 及其他替代方案对比
前端开发相关
Node+TypeScript相关记录
TypeScript 读写 MariaDB
Node TypeScript项目 token生成、管理及拦截校验的实现
TypeScript+Express创建和实现一个服务示例
Express接口处理器抽取注册方式
Express 实现 RESTful API
创建 TypeScript Express 项目,并配置直接用 npm start 运行
TypeScript + Express 实现文件下载接口
export 和 export default的区别
TypeScript+Express 实现用户注册和登录接口
TypeScript 和 JavaScript 中,`===` 和 `==`
CSS中的尺寸大小标准
小程序px和rpx
使用Python快速处理Excel的合并拆分
读书写作相关
一些句子01
李敖语录
罗翔老师的一些经典语句
周易相关知识
周易是对自然描述还是为自然立法
40句落寞诗词,穿透柔魂弱魄
杂玩整理
黑苹果睿频问题
基于纯Linux自己部署Nas构思
Ubuntu换源
Ubuntu挂载tf卡
Ubuntu运行Docker报错
Ubuntu安装运行Docker报错处理
官方镜像安装Docker
Docker 设置root dir 切换数据到其他存储位置
systemctl stop docker 报错
NextCloud安装ffmpeg 显示视频缩略图
Docker源不生效解决方式
Docker源不生效解决方式II——搭建docker-hub镜像
搞定群晖总Docker部署gitea启用ssh协议
MacOS一键安装命令软件列表
群晖ssl证书目录
Android通过ADB命令播放视频
[完成] 群晖自动更新https证书项目
Linux设备整机限速
Linux限速2
Gitea部署Runner服务
精选网站
有声主播知识
学习笔记
有声主播入门到进阶
有声主播新手的入门练手内容推荐
DeepSeek分析喜马拉雅旗下 喜播平台 的有声主播培训
录书设备资料1
典故专辑资料整理
0B. 脚本和大纲
0A. 前置准备资料
临时
Linux下对设备进行限速
C++ 学习
01 Android开发学习C++
其他资料分组
【面试相关】💡 面试后、Offer前,可以主动了解和确认的信息
【工作经验】会计师事务所工作中如何有效管理和规避法律风险
职业发展规划
-
+
home page
🐳 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、私有仓库)。 1. **登录仓库**: ``` docker login ``` 2. **标记镜像**:镜像需要符合仓库的命名规范(`[registry-url]/[username]/[repository]:[tag]`)。 ``` docker tag my-image:latest your-username/your-repo:your-tag ``` 3. **推送镜像**: ``` docker push your-username/your-repo:your-tag ``` 4. **拉取镜像**(在其他机器上): ``` docker pull your-username/your-repo:your-tag ``` ## 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-network volumes: # 定义卷(如果不在上面声明,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-content volumes: 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` |
嘿手大叔
Sept. 24, 2025, 10:47 a.m.
转发文档
Collection documents
Last
Next
手机扫码
Copy link
手机扫一扫转发分享
Copy link
Markdown文件
share
link
type
password
Update password