跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Shell / Bash

Docker 安装部署与核心使用指南(Linux 通用版)

Docker 在 Linux 系统上的通用安装方法(涵盖 apt 与 yum/dnf),配置国内镜像加速源。详细讲解了容器、卷、日志的默认存储路径及修改方式,包括绑定挂载与卷挂载的区别。重点阐述了 Docker 日志管理策略(驱动配置、轮转设置、持久化与清理)。此外,提供了基于 Dockerfile 构建自定义镜像的完整流程与优化技巧,并汇总了常用核心命令速查表,适用于 Debian/Ubuntu 及 CentOS/RHEL 等主流发行版。

板砖工程师发布于 2026/3/29更新于 2026/10/1594 浏览
Docker 安装部署与核心使用指南(Linux 通用版)

一、Linux 通用版 Docker 安装

1. 前置准备:卸载旧版本
# 通用卸载命令(适配 apt/yum/dnf)
sudo apt remove -y docker docker-engine docker.io containerd runc # Debian/Ubuntu
# 或
sudo yum remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine containerd runc # CentOS/RHEL
2. 分体系安装(apt/yum)
方式 1:Debian/Ubuntu(apt 体系)
# 1. 安装依赖
sudo apt update && sudo apt install -y ca-certificates curl gnupg lsb-release
# 2. 添加 Docker 官方 GPG 密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
# 3. 配置 Docker 源
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/trusted.gpg.d/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 安装 Docker 核心组件
sudo apt update && sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 5. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
方式 2:CentOS/RHEL(yum/dnf 体系)
# 1. 安装依赖
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
# 2. 配置 Docker 源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
# 3. 安装 Docker 核心组件
sudo yum install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# 4. 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
3. 验证安装成功
# 查看 Docker 版本
docker --version
# 运行测试容器
sudo docker run hello-world
# 输出'Hello from Docker!'即为安装成功

二、镜像加速配置(通用版)

默认从 Docker 官方仓库拉取镜像速度慢,配置国内镜像源是必做优化:

# 1. 创建 Docker 配置目录
sudo mkdir -p /etc/docker
# 2. 写入国内镜像加速源(通用高效源)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com",
    "https://dockerhub.azk8s.cn",
    "https://mirror.baidubce.com/docker-registry/"
  ]
}
EOF
# 3. 重启 Docker 使配置生效
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证加速配置
docker info | grep "Registry Mirrors"
# 输出配置的镜像源即为生效

三、Docker 核心使用详解

1. 镜像 / 容器 / 卷的默认存储路径

Docker 的镜像、容器、卷共享同一个根存储目录,不同类型数据为该目录下的子文件夹:

数据类型通用默认路径说明
镜像/var/lib/docker/image/镜像分层存储,不同存储驱动(如 overlay2)对应子目录
容器/var/lib/docker/containers/每个容器对应一个目录,包含日志、配置、容器运行时数据
卷(Volume)/var/lib/docker/volumes/自定义卷的默认存储位置,推荐优先使用卷而非直接挂载本地目录
容器日志/var/lib/docker/containers/<容器 ID>/<容器 ID>-json.log默认日志文件(json-file 驱动),按容器 ID 存储

查看路径的通用方法:

# 1. 查看 Docker 根存储目录(最核心)
docker info | grep "Docker Root Dir"
# 2. 查看存储目录结构
ls -lh /var/lib/docker/
# 3. 查看镜像/容器/卷占用空间
docker system df
# 4. 查看指定容器的日志文件路径(示例:容器名为 demo-app)
docker inspect --format='{{.LogPath}}' demo-app
2. 容器文件映射(本地 ↔ 容器)

核心分 2 种方式,优先使用卷挂载(生产环境),绑定挂载适合开发调试:

方式 1:绑定挂载(直接映射本地目录)

语法:docker run -v 本地绝对路径:容器内路径 [镜像名]

# 示例 1:将本地/opt/nginx/html 映射到容器 nginx 默认页面目录
sudo docker run -d -p 80:80 -v /opt/nginx/html:/usr/share/nginx/html nginx
# 示例 2:持久化容器日志到本地
sudo docker run -d -p 80:80 -v /var/log/nginx-container:/var/log/nginx nginx

⚠️ 注意:本地路径必须写绝对路径,容器内路径需匹配应用实际路径。

方式 2:卷挂载(Docker 管理的存储卷,推荐)

语法:先创建卷 → 挂载到容器

# 1. 创建自定义卷
sudo docker volume create nginx-data
# 2. 挂载卷到容器
sudo docker run -d -p 80:80 -v nginx-data:/usr/share/nginx/html nginx
# 3. 查看卷详情(含实际存储路径)
sudo docker volume inspect nginx-data
两种挂载方式对比
特性绑定挂载卷挂载
路径管理手动管理本地路径Docker 自动管理
跨平台 / 迁移差(依赖本地路径)优(可直接备份 / 迁移卷)
权限 / 稳定性易出权限问题适配 Docker 权限,更稳定
适用场景开发调试、实时同步生产环境、数据持久化
3. Docker 日志管理(核心)
3.1 日志默认机制

Docker 默认使用 json-file 日志驱动,将容器日志以 JSON 格式存储在本地文件(路径见 1. 存储路径),核心特点:

  • 日志按容器独立存储,无集中管理;
  • 默认无大小 / 数量限制,易导致磁盘占满(需手动配置轮转);
  • 支持通过 docker logs 命令便捷查看。
3.2 查看容器日志的常用命令

docker logs 是查看容器日志的核心命令,支持多种筛选方式:

# 基础用法:查看指定容器的所有日志(容器名/容器 ID 均可)
docker logs demo-app
# 1. 实时查看日志(类似 tail -f)
docker logs -f demo-app
# 2. 查看最后 N 行日志(示例:最后 100 行)
docker logs --tail=100 demo-app
# 3. 查看指定时间后的日志(支持绝对时间/相对时间)
docker logs --since="2024-01-01 08:00:00" demo-app # 绝对时间
docker logs --since=1h demo-app # 1 小时内的日志
# 4. 查看指定时间范围的日志
docker logs --since="2024-01-01 08:00:00" --until="2024-01-01 09:00:00" demo-app
# 5. 显示日志时间戳
docker logs -t demo-app
# 6. 组合用法:实时查看最后 50 行带时间戳的日志
docker logs -f -t --tail=50 demo-app
3.3 配置日志驱动(全局 / 容器级)

日志驱动决定 Docker 如何存储 / 输出容器日志,常用驱动及场景:

驱动类型核心特点适用场景
json-file本地 JSON 文件存储,默认驱动单机、小规模部署
local本地日志轮转存储(自动切割),性能优于 json-file单机、需日志轮转的场景
journald集成系统 journald 日志服务,支持系统级日志管理基于 systemd 的 Linux 系统
syslog输出到 syslog 服务器,支持集中日志管理多机、集中日志收集
none禁用日志存储无需日志的临时容器
配置方式 1:全局配置(所有容器生效)

修改 daemon.json,重启 Docker 后生效:

# 示例:全局使用 local 驱动,并配置日志轮转
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ],
  "log-driver": "local", # 全局日志驱动
  "log-opts": {
    "max-size": "100m", # 单个日志文件最大 100MB
    "max-file": "5", # 最多保留 5 个日志文件
    "compress": "true" # 压缩旧日志文件
  }
}
EOF
# 重启生效
sudo systemctl daemon-reload
sudo systemctl restart docker
配置方式 2:容器级配置(覆盖全局,仅当前容器生效)

运行容器时通过 --log-driver 和 --log-opt 指定:

# 示例:运行 nginx 容器,单独配置日志轮转(json-file 驱动)
docker run -d -p 80:80 \
  --name nginx-app \
  --log-driver=json-file \
  --log-opt max-size=50m \
  --log-opt max-file=3 \
  nginx
3.4 日志持久化与清理
方式 1:日志文件绑定挂载(持久化到本地指定目录)
# 示例:将 nginx 容器的日志同时输出到本地/var/log/nginx-docker 目录
docker run -d -p 80:80 \
  --name nginx-app \
  -v /var/log/nginx-docker:/var/log/nginx \
  # 容器内日志目录映射到本地
  nginx
方式 2:清理无用日志(释放磁盘空间)
# 1. 清理单个容器的日志文件(需先停止容器)
docker stop demo-app
sudo rm -rf $(docker inspect --format='{{.LogPath}}' demo-app)
docker start demo-app
# 2. 批量清理所有容器的日志(谨慎执行)
sudo find /var/lib/docker/containers/ -name "*.log" -type f -delete
# 3. 使用 Docker 系统清理命令(清理未运行容器、无用镜像、日志等)
docker system prune -a # 加-f 可免确认,谨慎执行
3.5 日志常见问题解决
  1. 日志文件过大占满磁盘:配置 max-size/max-file 日志轮转(推荐 local 驱动);
  2. 日志乱码:容器内程序输出编码与终端不一致,运行容器时添加 -e LANG=C.UTF-8;
  3. 日志实时查看卡顿:日志文件过大导致,先清理旧日志,配置轮转;
  4. 日志丢失:容器重启后日志消失→检查日志驱动(json-file/local 不会丢失,none 会禁用日志)。
4. 使用 Dockerfile 构建自定义镜像(完整流程)
4.1 Dockerfile 核心认知

Dockerfile 是一个纯文本配置文件,包含一系列按顺序执行的指令,Docker 通过读取这些指令自动构建镜像。核心特点:

  • 每一条指令对应镜像的一个 '分层',分层存储是 Docker 镜像的核心特性(可复用、减少冗余);
  • 构建镜像时,Docker 会从 Docker Hub 拉取基础镜像(若本地没有),再逐层执行指令;
  • 构建结果是一个可直接运行的自定义镜像,可推送到仓库或本地运行。
4.2 Dockerfile 核心指令(必掌握)
指令核心作用示例注意事项
FROM指定基础镜像(必填,所有镜像都基于某个基础镜像构建)FROM nginx:1.24-alpine优先选择轻量镜像(如 alpine 版本),减少镜像体积;scratch表示空镜像(仅用于编译后的二进制程序)
WORKDIR设置容器的工作目录(后续指令均在此目录执行)WORKDIR /usr/app推荐用绝对路径,多次使用会切换目录;若目录不存在,Docker 会自动创建
COPY复制本地文件 / 目录到容器中(最常用)COPY ./app.py /usr/app/第一个参数是 '构建上下文' 内的路径,第二个是容器内路径;仅复制文件,不解压
ADD复制文件 / 目录,支持解压压缩包、拉取远程文件(慎用)ADD ./app.tar.gz /usr/app/会自动解压.tar/.gz等压缩包;远程文件建议用RUN wget替代,更可控
RUN构建镜像时执行命令(如安装依赖、创建目录)RUN pip install flask多行RUN建议用&&合并,减少镜像分层(如RUN yum install -y nginx && yum clean all)
ENV设置环境变量(容器运行时也生效)ENV PYTHONPATH=/usr/app PORT=8080可通过docker run -e覆盖;建议集中定义,便于维护
EXPOSE声明容器暴露的端口(仅 '声明',不实际映射)EXPOSE 8080仅用于说明镜像的端口用途,实际映射需靠docker run -p
CMD容器启动时执行的命令(可被docker run后的参数覆盖)CMD ["python", "app.py"]推荐用 JSON 数组格式;一个 Dockerfile 仅最后一个CMD生效
ENTRYPOINT容器启动的 '入口命令'(不可被覆盖,仅可追加参数)ENTRYPOINT ["python", "app.py"]结合CMD可实现 '默认参数'(如ENTRYPOINT ["nginx"] + CMD ["-g", "daemon off;"])
VOLUME声明容器的匿名卷(避免容器数据丢失)VOLUME ["/usr/app/logs"]运行时可通过-v绑定本地目录 / 卷,覆盖匿名卷
4.3 完整构建步骤(实战示例:Python Web 应用)
步骤 1:准备构建环境(构建上下文)

创建专属目录存放 Dockerfile 和应用文件,构建上下文是 Docker 构建时可访问的文件目录(不能引用外部文件):

# 1. 创建构建目录并进入
mkdir -p /opt/python-demo && cd /opt/python-demo
# 2. 编写简单的 Python 应用文件(app.py)
tee app.py <<-'EOF'
from flask import Flask
import os
app = Flask(__name__)
port = int(os.getenv("PORT", 8080))
@app.route('/')
def hello():
    return "Hello Docker! This is a custom image built by Dockerfile."
if __name__ == '__main__':
    app.run(host='0.0.0.0', port=port)
EOF
# 3. (可选)创建.dockerignore 文件,精简构建上下文
tee .dockerignore <<-'EOF'
# 排除无关文件,减少构建体积
__pycache__/
*.pyc
.git/
.venv/
EOF
步骤 2:编写 Dockerfile

在构建目录下创建 Dockerfile 文件(文件名必须是 Dockerfile,无后缀):

# 步骤 1:指定基础镜像(Python 3.9 轻量版)
FROM python:3.9-alpine
# 步骤 2:设置工作目录
WORKDIR /usr/app
# 步骤 3:设置环境变量(避免 Python 输出缓冲,解决日志乱码)
ENV PYTHONUNBUFFERED=1 PORT=8080 LANG=C.UTF-8
# 步骤 4:安装依赖(Alpine 系统用 apk,合并 RUN 减少分层)
RUN pip install flask --no-cache-dir
# 步骤 5:复制本地 app.py 到容器工作目录
COPY app.py .
# 步骤 6:声明暴露端口
EXPOSE 8080
# 步骤 7:容器启动命令
CMD ["python", "app.py"]
步骤 3:执行构建命令

核心语法:docker build [选项] <构建上下文路径>

# -t:给镜像打标签(格式:镜像名:版本),. 表示构建上下文为当前目录
docker build -t python-demo:v1 .

构建成功会输出:

Successfully built xxxxxxxx(镜像 ID)
Successfully tagged python-demo:v1
步骤 4:验证镜像并运行容器
# 1. 查看构建好的镜像
docker images | grep python-demo
# 2. 运行镜像,映射 8080 端口,配置日志轮转
docker run -d -p 8080:8080 \
  --name demo-app \
  --log-opt max-size=50m \
  --log-opt max-file=3 \
  python-demo:v1
# 3. 验证容器运行结果
curl http://localhost:8080
# 预期输出:Hello Docker! This is a custom image built by Dockerfile.
# 4. 查看容器日志(带时间戳)
docker logs -t demo-app
4.4 Dockerfile 构建优化技巧

新手易写出体积大、分层多的镜像,掌握以下技巧可大幅优化:

  1. 合并 RUN 指令:将多个 RUN 用 && 合并,减少镜像分层(如 RUN apt update && apt install -y nginx && apt clean all);
  2. 使用轻量基础镜像:优先选择 alpine、slim 版本(如 nginx:alpine 比 nginx 体积小 90%);
  3. 清理缓存文件:安装依赖后清理包管理器缓存(如 yum clean all、apt clean、pip --no-cache-dir);
  4. 精简构建上下文:通过 .dockerignore 排除无关文件(如日志、缓存、源码管理目录);

多阶段构建(进阶):用于编译型语言(如 Go、Java),编译阶段用完整镜像,运行阶段用轻量镜像,示例:

# 阶段 1:编译 Go 程序
FROM golang:1.21 as builder
WORKDIR /app
COPY main.go .
RUN go build -o myapp main.go
# 阶段 2:运行程序(仅复制编译结果)
FROM alpine:3.18
COPY --from=builder /app/myapp /usr/bin/
CMD ["/usr/bin/myapp"]
4.5 常见问题与解决
  1. 构建时报'找不到文件':检查 COPY/ADD 的源路径是否在构建上下文内(不能用 ../ 引用上下文外的文件);
  2. 镜像体积过大:检查是否未清理缓存、是否用了过重的基础镜像、是否复制了无关文件;
  3. 容器启动后立即退出:检查 CMD/ENTRYPOINT 指令是否正确(如命令执行完就退出,需确保进程前台运行,如 nginx -g daemon off;);
  4. 权限问题:容器内文件权限不足时,可通过 RUN chmod/RUN chown 调整(如 RUN chmod 755 /usr/app/app.py);
  5. 日志乱码:Dockerfile 中添加 ENV LANG=C.UTF-8,统一编码。

四、查看 / 修改镜像 / 容器 / 卷默认路径(通用版)

Docker 的镜像、容器、卷共享同一个根存储目录,修改根目录即可统一调整所有数据的存储位置(包括日志文件)。

1. 查看默认路径(通用)
# 核心命令:查看 Docker 根存储目录
docker info | grep "Docker Root Dir"
# 默认输出:Docker Root Dir: /var/lib/docker
2. 修改默认路径(通用安全步骤)
步骤 1:停止 Docker 及相关服务
sudo systemctl stop docker
sudo systemctl stop containerd
步骤 2:迁移原有数据到新路径
# 示例:将默认路径/var/lib/docker 迁移到新路径/data/docker
# 1. 创建新目录(按需修改路径)
sudo mkdir -p /data/docker
# 2. 迁移数据(rsync 保留权限和符号链接,避免 Docker 启动失败)
sudo rsync -avz /var/lib/docker/ /data/docker/
步骤 3:配置新存储路径
# 编辑 daemon.json,添加 data-root 参数(保留日志驱动配置)
sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.mirrors.ustc.edu.cn",
    "https://hub-mirror.c.163.com"
  ],
  "log-driver": "local",
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  },
  "data-root": "/data/docker" # 核心:指定新的存储根目录
}
EOF
步骤 4:重启验证
# 重新加载配置并启动 Docker
sudo systemctl daemon-reload
sudo systemctl start docker
# 验证路径是否生效
docker info | grep "Docker Root Dir"
# 预期输出:Docker Root Dir: /data/docker
# 运行测试容器,确认新路径生成日志文件
docker run -d --name test-log hello-world
ls -lh /data/docker/containers/
# 有新容器日志目录即为生效
步骤 5:(可选)删除旧数据

确认新路径正常后,删除旧路径释放空间:

sudo rm -rf /var/lib/docker/
3. 注意事项(通用)
  1. 数据迁移必须用 rsync(而非 cp),保留文件权限和符号链接;
  2. 新路径的属主必须为 root,权限为 700(sudo chmod 700 /data/docker);
  3. 若修改后 Docker 无法启动,删除 daemon.json 中的 data-root 行,恢复数据后重启即可;
  4. 日志文件会随根目录迁移,无需单独配置。

五、Docker 核心命令速查(通用)

操作类型核心命令
镜像操作拉取:docker pull 镜像名:标签 查看:docker images 删除:docker rmi 镜像 ID
容器操作运行:docker run -d -p 端口映射 镜像名 查看运行中:docker ps 查看所有:docker ps -a 停止:docker stop 容器 ID 删除:docker rm 容器 ID
卷操作创建:docker volume create 卷名 查看:docker volume ls 删除:docker volume rm 卷名
日志操作查看:docker logs [容器名/ID] 实时查看:docker logs -f [容器名/ID] 查看日志路径:docker inspect --format='{{.LogPath}}' [容器名/ID]
镜像构建 / 推送构建:docker build -t 镜像名:标签 . 推送:docker push 镜像名:标签(需先登录仓库)
系统清理清理无用镜像 / 容器:docker system prune -a(谨慎执行,删除未使用资源) 清理日志:sudo find /var/lib/docker/containers/ -name "*.log" -type f -delete

总结

  1. 通用安装:分 apt/yum 体系,核心是安装 docker-ce 及配套组件,启动并设置开机自启;
  2. 镜像加速:通过 daemon.json 配置国内源,是提升拉取速度的核心优化;
  3. 核心使用:
    • 镜像 / 容器 / 卷 / 日志默认存储在 /var/lib/docker,文件映射优先用卷挂载;
    • 日志管理核心是 docker logs 命令,生产环境需配置 max-size/max-file 避免磁盘占满,推荐 local 日志驱动;
    • Dockerfile 构建镜像的核心是 FROM 为必填,指令按 '准备环境→安装依赖→复制文件→启动配置' 编写,优化重点是减少分层、精简体积,添加编码环境变量解决日志乱码;
  4. 路径修改:通过 daemon.json 的 data-root 统一修改根存储目录,迁移数据需用 rsync 保留权限;
  5. 命令速查:掌握镜像、容器、卷、日志的基础操作命令,可高效管理 Docker 资源。

目录

  1. 一、Linux 通用版 Docker 安装
  2. 1. 前置准备:卸载旧版本
  3. 通用卸载命令(适配 apt/yum/dnf)
  4. 或
  5. 2. 分体系安装(apt/yum)
  6. 方式 1:Debian/Ubuntu(apt 体系)
  7. 1. 安装依赖
  8. 2. 添加 Docker 官方 GPG 密钥
  9. 3. 配置 Docker 源
  10. 4. 安装 Docker 核心组件
  11. 5. 启动并设置开机自启
  12. 方式 2:CentOS/RHEL(yum/dnf 体系)
  13. 1. 安装依赖
  14. 2. 配置 Docker 源
  15. 3. 安装 Docker 核心组件
  16. 4. 启动并设置开机自启
  17. 3. 验证安装成功
  18. 查看 Docker 版本
  19. 运行测试容器
  20. 输出“Hello from Docker!”即为安装成功
  21. 二、镜像加速配置(通用版)
  22. 1. 创建 Docker 配置目录
  23. 2. 写入国内镜像加速源(通用高效源)
  24. 3. 重启 Docker 使配置生效
  25. 验证加速配置
  26. 输出配置的镜像源即为生效
  27. 三、Docker 核心使用详解
  28. 1. 镜像 / 容器 / 卷的默认存储路径
  29. 1. 查看 Docker 根存储目录(最核心)
  30. 2. 查看存储目录结构
  31. 3. 查看镜像/容器/卷占用空间
  32. 4. 查看指定容器的日志文件路径(示例:容器名为 demo-app)
  33. 2. 容器文件映射(本地 ↔ 容器)
  34. 方式 1:绑定挂载(直接映射本地目录)
  35. 示例 1:将本地/opt/nginx/html 映射到容器 nginx 默认页面目录
  36. 示例 2:持久化容器日志到本地
  37. 方式 2:卷挂载(Docker 管理的存储卷,推荐)
  38. 1. 创建自定义卷
  39. 2. 挂载卷到容器
  40. 3. 查看卷详情(含实际存储路径)
  41. 两种挂载方式对比
  42. 3. Docker 日志管理(核心)
  43. 3.1 日志默认机制
  44. 3.2 查看容器日志的常用命令
  45. 基础用法:查看指定容器的所有日志(容器名/容器 ID 均可)
  46. 1. 实时查看日志(类似 tail -f)
  47. 2. 查看最后 N 行日志(示例:最后 100 行)
  48. 3. 查看指定时间后的日志(支持绝对时间/相对时间)
  49. 4. 查看指定时间范围的日志
  50. 5. 显示日志时间戳
  51. 6. 组合用法:实时查看最后 50 行带时间戳的日志
  52. 3.3 配置日志驱动(全局 / 容器级)
  53. 配置方式 1:全局配置(所有容器生效)
  54. 示例:全局使用 local 驱动,并配置日志轮转
  55. 重启生效
  56. 配置方式 2:容器级配置(覆盖全局,仅当前容器生效)
  57. 示例:运行 nginx 容器,单独配置日志轮转(json-file 驱动)
  58. 3.4 日志持久化与清理
  59. 方式 1:日志文件绑定挂载(持久化到本地指定目录)
  60. 示例:将 nginx 容器的日志同时输出到本地/var/log/nginx-docker 目录
  61. 容器内日志目录映射到本地
  62. 方式 2:清理无用日志(释放磁盘空间)
  63. 1. 清理单个容器的日志文件(需先停止容器)
  64. 2. 批量清理所有容器的日志(谨慎执行)
  65. 3. 使用 Docker 系统清理命令(清理未运行容器、无用镜像、日志等)
  66. 3.5 日志常见问题解决
  67. 4. 使用 Dockerfile 构建自定义镜像(完整流程)
  68. 4.1 Dockerfile 核心认知
  69. 4.2 Dockerfile 核心指令(必掌握)
  70. 4.3 完整构建步骤(实战示例:Python Web 应用)
  71. 步骤 1:准备构建环境(构建上下文)
  72. 1. 创建构建目录并进入
  73. 2. 编写简单的 Python 应用文件(app.py)
  74. 3. (可选)创建.dockerignore 文件,精简构建上下文
  75. 排除无关文件,减少构建体积
  76. 步骤 2:编写 Dockerfile
  77. 步骤 1:指定基础镜像(Python 3.9 轻量版)
  78. 步骤 2:设置工作目录
  79. 步骤 3:设置环境变量(避免 Python 输出缓冲,解决日志乱码)
  80. 步骤 4:安装依赖(Alpine 系统用 apk,合并 RUN 减少分层)
  81. 步骤 5:复制本地 app.py 到容器工作目录
  82. 步骤 6:声明暴露端口
  83. 步骤 7:容器启动命令
  84. 步骤 3:执行构建命令
  85. -t:给镜像打标签(格式:镜像名:版本),. 表示构建上下文为当前目录
  86. 步骤 4:验证镜像并运行容器
  87. 1. 查看构建好的镜像
  88. 2. 运行镜像,映射 8080 端口,配置日志轮转
  89. 3. 验证容器运行结果
  90. 预期输出:Hello Docker! This is a custom image built by Dockerfile.
  91. 4. 查看容器日志(带时间戳)
  92. 4.4 Dockerfile 构建优化技巧
  93. 阶段 1:编译 Go 程序
  94. 阶段 2:运行程序(仅复制编译结果)
  95. 4.5 常见问题与解决
  96. 四、查看 / 修改镜像 / 容器 / 卷默认路径(通用版)
  97. 1. 查看默认路径(通用)
  98. 核心命令:查看 Docker 根存储目录
  99. 默认输出:Docker Root Dir: /var/lib/docker
  100. 2. 修改默认路径(通用安全步骤)
  101. 步骤 1:停止 Docker 及相关服务
  102. 步骤 2:迁移原有数据到新路径
  103. 示例:将默认路径/var/lib/docker 迁移到新路径/data/docker
  104. 1. 创建新目录(按需修改路径)
  105. 2. 迁移数据(rsync 保留权限和符号链接,避免 Docker 启动失败)
  106. 步骤 3:配置新存储路径
  107. 编辑 daemon.json,添加 data-root 参数(保留日志驱动配置)
  108. 步骤 4:重启验证
  109. 重新加载配置并启动 Docker
  110. 验证路径是否生效
  111. 预期输出:Docker Root Dir: /data/docker
  112. 运行测试容器,确认新路径生成日志文件
  113. 有新容器日志目录即为生效
  114. 步骤 5:(可选)删除旧数据
  115. 3. 注意事项(通用)
  116. 五、Docker 核心命令速查(通用)
  117. 总结

更多推荐文章

查看全部
  • AIGC 产品经理面试高频问题与核心解答
  • Stable Diffusion 图生图与视频生成完整工作流
  • Ling Studio 使用指南:万亿参数 AI 模型实战技巧
  • VS Code 跨平台升级指南:Windows / macOS / Linux 稳定方案
  • WordPress 基础配置与 Spring Boot MyBatis-Plus 开发实战
  • 科学机器学习中的物理信息神经网络:现状与展望
  • C++ 继承进阶:友元、静态成员与菱形继承解析
  • Faster Whisper v1.7 本地视频字幕生成与翻译工具使用指南(含 AMD 支持)
  • 前端计算机基础
  • LeetCode 141 环形链表检测:哈希表与快慢指针法
  • LFM2.5-1.2B-Thinking 模型在 Ollama 上的多场景应用:写作、代码与学习
  • FLUX.1-dev FP8 量化技术解析:AI 绘画硬件优化实践
  • 2025年12月电子学会青少年软件编程Python三级等级考试真题
  • 使用 Layui 框架解决 Unity WebGL 渲染在 Tab 切换时黑屏问题
  • SheetJS JavaScript 电子表格数据处理与转换方案
  • ChatGPT-4o 在数学建模与论文优化中的应用
  • WSL(Windows Subsystem for Linux)安装教程
  • C++ STL 核心基础:迭代器、auto 与范围循环
  • Fast-GitHub GitHub 加速插件使用指南
  • 主流开源 AI 无人机巡检系统项目调研

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online