wordpress模版做网站黑镜wordpress主题破解
wordpress模版做网站,黑镜wordpress主题破解,网络系统管理与维护电大考试题,网站开发需要有什么证书Docker 从入门到精通教程
目录
Docker 简介Docker 核心概念Docker 安装Docker 基础命令Docker 常用命令详解Dockerfile 编写Docker Compose实际应用场景常见问题与解决方案最佳实践学习路径建议常用命令速查表 Docker 简介
什么是 Docker#xff1f;
Docker 是一个开源的容…Docker 从入门到精通教程目录Docker 简介Docker 核心概念Docker 安装Docker 基础命令Docker 常用命令详解Dockerfile 编写Docker Compose实际应用场景常见问题与解决方案最佳实践学习路径建议常用命令速查表Docker 简介什么是 DockerDocker 是一个开源的容器化平台允许开发者将应用程序及其依赖项打包到一个轻量级、可移植的容器中。容器可以在任何支持 Docker 的环境中运行确保应用程序在不同环境中表现一致。Docker 的优势轻量级容器共享主机操作系统内核比虚拟机更轻量可移植性一次构建到处运行隔离性容器之间相互隔离互不影响快速部署秒级启动快速扩展版本控制可以像代码一样管理容器镜像Docker 核心概念1. 镜像Image镜像是一个只读的模板用于创建容器。可以理解为容器的蓝图。类比镜像 类Class容器 实例Instance2. 容器Container容器是镜像的运行实例。容器可以被创建、启动、停止、删除。类比容器 运行中的虚拟机但更轻量3. 仓库Repository仓库是存储镜像的地方类似于 Git 仓库。Docker Hub官方的公共仓库私有仓库可以搭建自己的私有仓库4. DockerfileDockerfile 是一个文本文件包含构建镜像的指令。Docker 安装Windows 安装下载 Docker Desktop for Windows运行安装程序重启计算机启动 Docker DesktopLinux 安装Ubuntu/Debian:# 更新包索引sudoapt-getupdate# 安装依赖sudoapt-getinstall-y ca-certificatescurlgnupg lsb-release# 添加 Docker 官方 GPG 密钥sudomkdir-p /etc/apt/keyringscurl-fsSL https://download.docker.com/linux/ubuntu/gpg|sudogpg --dearmor -o /etc/apt/keyrings/docker.gpg# 设置仓库echodeb [arch$(dpkg --print-architecture)signed-by/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu$(lsb_release -cs)stable|sudotee/etc/apt/sources.list.d/docker.list/dev/null# 安装 Docker Enginesudoapt-getupdatesudoapt-getinstall-y docker-ce docker-ce-cli containerd.io docker-compose-pluginCentOS/RHEL:# 安装 yum-utilssudoyuminstall-y yum-utils# 添加 Docker 仓库sudoyum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo# 安装 Docker Enginesudoyuminstall-y docker-ce docker-ce-cli containerd.io docker-compose-plugin# 启动 Dockersudosystemctl start dockersudosystemctlenabledockermacOS 安装下载 Docker Desktop for Mac运行安装程序启动 Docker Desktop验证安装docker --version docker info docker compose version# Docker Compose V2Docker 基础命令系统信息命令# 查看 Docker 版本docker --version docker version# 查看 Docker 系统信息docker info# 查看 Docker 帮助docker --help dockercommand--helpDocker 常用命令详解镜像相关命令1. 搜索镜像docker search镜像名示例docker search nginx docker search python输出说明NAME: 镜像名称DESCRIPTION: 镜像描述STARS: 星标数受欢迎程度OFFICIAL: 是否为官方镜像AUTOMATED: 是否自动构建2. 拉取镜像docker pull镜像名[:标签]示例docker pull nginx# 拉取最新版本docker pull nginx:1.21# 拉取指定版本docker pull ubuntu:20.04# 拉取 Ubuntu 20.04docker pull python:3.9-slim# 拉取 Python 3.9 精简版常用镜像标签latest: 最新版本默认alpine: 基于 Alpine Linux体积小slim: 精简版版本号如1.21,3.93. 列出本地镜像docker images docker imagels参数docker images -a# 显示所有镜像包括中间层docker images --digests# 显示摘要信息docker images --formattable {{.Repository}}\t{{.Tag}}\t{{.Size}}docker images --filterdanglingtrue# 显示悬空镜像输出说明REPOSITORY: 仓库名TAG: 标签版本IMAGE ID: 镜像 IDCREATED: 创建时间SIZE: 镜像大小4. 删除镜像docker rmi镜像名或IDdocker imagerm镜像名或ID示例docker rmi nginx:1.21 docker rmi abc123def456 docker rmi -f nginx# 强制删除即使有容器在使用docker rmi$(docker images -q)# 删除所有镜像参数-f, --force: 强制删除5. 构建镜像docker build[选项]路径示例docker build -t myapp:1.0.docker build -t myapp:1.0 -f Dockerfile.prod.常用参数-t, --tag: 指定镜像名称和标签-f, --file: 指定 Dockerfile 路径--no-cache: 不使用缓存构建--build-arg: 传递构建参数6. 查看镜像历史dockerhistory镜像名或ID7. 标记镜像docker tag源镜像新镜像名:标签示例docker tag nginx:latest mynginx:v1.08. 导出/导入镜像# 导出镜像为 tar 文件docker save -o文件名.tar镜像名# 导入镜像docker load -i文件名.tar示例docker save -o nginx.tar nginx:latest docker load -i nginx.tar容器相关命令1. 运行容器docker run[选项]镜像名[命令]基础示例docker run nginx docker run -d nginx# 后台运行docker run -it ubuntubash# 交互式运行docker run --name mynginx nginx# 指定容器名称常用参数详解基础参数-d, --detach: 后台运行容器docker run -d nginx-i, --interactive: 保持 STDIN 打开即使没有附加docker run -i ubuntubash-t, --tty: 分配一个伪终端docker run -t ubuntubash通常-it一起使用用于交互式容器docker run -it ubuntubash--name: 指定容器名称docker run --name mycontainer nginx--rm: 容器退出时自动删除docker run --rm nginx端口映射-p, --publish: 映射容器端口到主机端口# 格式主机端口:容器端口docker run -p8080:80 nginx# 主机8080 - 容器80docker run -p127.0.0.1:8080:80 nginx# 只绑定本地docker run -p80:80 -p443:443 nginx# 映射多个端口数据卷挂载-v, --volume: 挂载数据卷# 格式主机路径:容器路径docker run -v /host/path:/container/path nginx docker run -v /data:/app/data nginx# 使用命名卷docker run -v myvolume:/app/data nginx# 只读挂载docker run -v /host/path:/container/path:ro nginx环境变量-e, --env: 设置环境变量docker run -eMYSQL_ROOT_PASSWORD123456mysql docker run -eVAR1value1 -eVAR2value2 nginx# 从文件读取环境变量docker run --env-file .env nginx网络设置--network: 指定网络docker run --network bridge nginx# 桥接网络默认docker run --networkhostnginx# 主机网络docker run --network none nginx# 无网络docker run --network mynetwork nginx# 自定义网络资源限制--memory或-m: 限制内存docker run -m 512m nginx# 限制 512MBdocker run --memory1gnginx# 限制 1GB--cpus: 限制 CPUdocker run --cpus1.5nginx# 限制 1.5 个 CPUdocker run --cpus0.5nginx# 限制 0.5 个 CPU--cpu-shares: CPU 权重相对值docker run --cpu-shares512nginx其他常用参数--restart: 重启策略docker run --restartno nginx# 不自动重启默认docker run --restartalways nginx# 总是重启docker run --restarton-failure nginx# 失败时重启docker run --restartunless-stopped nginx# 除非手动停止--workdir或-w: 设置工作目录docker run -w /app nginx--user或-u: 指定运行用户docker run -u1000:1000 nginx docker run -u root nginx--entrypoint: 覆盖入口点docker run --entrypoint /bin/bash nginx--link: 链接到其他容器已废弃建议使用网络docker run --link mysql:db nginx2. 列出容器dockerps# 运行中的容器dockerps-a# 所有容器包括已停止docker containerls# 同上参数dockerps-q# 只显示容器 IDdockerps--formattable {{.ID}}\t{{.Names}}\t{{.Status}}dockerps--filterstatusexited# 过滤已退出的容器dockerps--filternamenginx# 按名称过滤输出说明CONTAINER ID: 容器 IDIMAGE: 使用的镜像COMMAND: 执行的命令CREATED: 创建时间STATUS: 状态PORTS: 端口映射NAMES: 容器名称3. 启动/停止/重启容器docker start容器名或ID# 启动已停止的容器docker stop容器名或ID# 停止运行中的容器docker restart容器名或ID# 重启容器docker pause容器名或ID# 暂停容器docker unpause容器名或ID# 恢复暂停的容器参数docker stop -t10容器# 等待 10 秒后强制停止4. 删除容器dockerrm容器名或IDdocker containerrm容器名或ID示例dockerrmmycontainer dockerrm-f mycontainer# 强制删除运行中的容器dockerrm$(dockerps-aq)# 删除所有已停止的容器参数-f, --force: 强制删除运行中的容器-v, --volumes: 同时删除关联的数据卷5. 查看容器日志docker logs容器名或ID参数docker logs -f mycontainer# 跟踪日志输出类似 tail -fdocker logs --tail100mycontainer# 显示最后 100 行docker logs --since 10m mycontainer# 显示最近 10 分钟的日志docker logs --until2023-01-01T00:00:00 mycontainer docker logs -t mycontainer# 显示时间戳6. 进入运行中的容器dockerexec[选项]容器名或ID命令示例dockerexec-it mycontainerbash# 进入容器并执行 bashdockerexec-it mycontainersh# 进入容器并执行 shdockerexecmycontainerls/app# 在容器中执行命令dockerexec-u root mycontainerbash# 以 root 用户进入参数-i, --interactive: 保持 STDIN 打开-t, --tty: 分配伪终端-u, --user: 指定用户-e, --env: 设置环境变量注意docker exec用于运行中的容器docker run用于创建新容器7. 查看容器详情docker inspect容器名或ID示例docker inspect mycontainer docker inspect --format{{.NetworkSettings.IPAddress}}mycontainer docker inspect --format{{json .Config}}mycontainer# 查看容器 IP 地址常用docker inspect -f{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}mycontainer# 查看容器状态docker inspect --format{{.State.Status}}mycontainer# 查看容器挂载点docker inspect --format{{json .Mounts}}mycontainer8. 查看容器资源使用docker stats docker stats容器名或ID参数docker stats --no-stream# 只显示一次不持续更新docker stats --formattable {{.Container}}\t{{.CPUPerc}}\t{{.MemUsage}}11. 查看容器进程dockertop容器名或ID示例dockertopmycontainer dockertopmycontainer -aux# 显示详细信息12. 查看容器事件docker events docker events --filtercontainer容器名13. 等待容器退出dockerwait容器名或ID14. 更新容器配置docker update[选项]容器名或ID示例docker update --memory512mmycontainer docker update --cpus1.0mycontainer docker update --restartalways mycontainer9. 复制文件# 从容器复制到主机dockercp容器名或ID:容器路径主机路径# 从主机复制到容器dockercp主机路径容器名或ID:容器路径示例dockercpmycontainer:/app/config.json ./config.json dockercp./file.txt mycontainer:/app/file.txt10. 导出/导入容器# 导出容器为 tar 文件dockerexport-o文件名.tar容器名或ID# 导入容器会创建镜像dockerimport文件名.tar镜像名:标签示例dockerexport-o mycontainer.tar mycontainer dockerimportmycontainer.tar myimage:v1.0数据卷相关命令1. 创建数据卷docker volume create卷名示例docker volume create myvolume docker volume create --driverlocalmyvolume2. 列出数据卷docker volumels3. 查看数据卷详情docker volume inspect卷名4. 删除数据卷docker volumerm卷名docker volume prune# 删除未使用的数据卷网络相关命令1. 创建网络docker network create网络名示例docker network create mynetwork docker network create --driver bridge mynetwork docker network create --subnet192.168.0.0/16 mynetwork2. 列出网络docker networkls3. 查看网络详情docker network inspect网络名4. 连接/断开容器到网络docker network connect网络名容器名docker network disconnect网络名容器名5. 删除网络docker networkrm网络名docker network prune# 删除未使用的网络清理命令# 清理未使用的数据docker system prune# 清理所有未使用的镜像、容器、网络和数据卷docker system prune -a# 清理未使用的镜像docker image prune# 清理未使用的容器docker container prune# 清理未使用的数据卷docker volume prune# 清理未使用的网络docker network prune参数-a, --all: 清理所有未使用的资源-f, --force: 不提示确认--volumes: 同时清理数据卷Dockerfile 编写Dockerfile 指令FROM指定基础镜像FROM ubuntu:20.04 FROM python:3.9-slim FROM nginx:latestRUN执行命令RUN apt-get update apt-get install -y nginx RUN pip install flask RUN mkdir /appCOPY / ADD复制文件COPY app.py /app/ COPY requirements.txt /app/ ADD https://example.com/file.tar.gz /tmp/ # ADD 支持 URL区别COPY: 只能复制本地文件ADD: 支持 URL 和自动解压WORKDIR设置工作目录WORKDIR /appENV设置环境变量ENV PYTHON_VERSION3.9 ENV APP_HOME/app ENV PATH$PATH:/app/binEXPOSE声明端口EXPOSE 80 EXPOSE 8080 443CMD容器启动时执行的命令可被覆盖CMD [nginx, -g, daemon off;] CMD [python, app.py]ENTRYPOINT容器启动时执行的命令不可被覆盖ENTRYPOINT [nginx, -g, daemon off;]CMD vs ENTRYPOINTCMD: 可被docker run的命令覆盖ENTRYPOINT: 不会被覆盖docker run的参数会追加ARG构建参数ARG VERSIONlatest ARG USERappUSER指定运行用户USER app USER 1000:1000VOLUME创建数据卷VOLUME [/data]HEALTHCHECK定义健康检查# 方式1: 使用命令 HEALTHCHECK --interval30s --timeout3s --start-period5s --retries3 \ CMD curl -f http://localhost/ || exit 1 # 方式2: 禁用健康检查 HEALTHCHECK NONE参数说明--interval: 检查间隔默认 30s--timeout: 超时时间默认 3s--start-period: 启动等待时间默认 0s--retries: 失败重试次数默认 3LABEL添加元数据标签LABEL version1.0 LABEL descriptionMy application LABEL maintaineryour.emailexample.comONBUILD设置构建触发器ONBUILD COPY . /app ONBUILD RUN npm install.dockerignore 文件类似于.gitignore用于排除不需要的文件减小构建上下文。示例 .dockerignore:node_modules npm-debug.log .git .gitignore .env *.md .DS_Store dist build *.log多阶段构建多阶段构建可以减小最终镜像体积只保留运行时需要的文件。示例# 第一阶段构建阶段 FROM node:16 AS builder WORKDIR /app COPY package*.json ./ RUN npm install COPY . . RUN npm run build # 第二阶段运行阶段 FROM node:16-alpine WORKDIR /app # 从构建阶段复制构建产物 COPY --frombuilder /app/dist ./dist COPY --frombuilder /app/node_modules ./node_modules COPY --frombuilder /app/package*.json ./ EXPOSE 3000 CMD [node, dist/server.js]Python 多阶段构建示例# 构建阶段 FROM python:3.9-slim AS builder WORKDIR /app COPY requirements.txt . RUN pip install --user -r requirements.txt # 运行阶段 FROM python:3.9-slim WORKDIR /app # 从构建阶段复制已安装的包 COPY --frombuilder /root/.local /root/.local COPY . . ENV PATH/root/.local/bin:$PATH EXPOSE 8000 CMD [python, app.py]Dockerfile 示例Python 应用示例# 使用 Python 3.9 作为基础镜像 FROM python:3.9-slim # 设置工作目录 WORKDIR /app # 设置环境变量 ENV PYTHONUNBUFFERED1 # 复制依赖文件 COPY requirements.txt . # 安装依赖 RUN pip install --no-cache-dir -r requirements.txt # 复制应用代码 COPY . . # 暴露端口 EXPOSE 8000 # 启动命令 CMD [python, app.py]Node.js 应用示例FROM node:16-alpine WORKDIR /app COPY package*.json ./ RUN npm install --production COPY . . EXPOSE 3000 CMD [node, server.js]Nginx 示例FROM nginx:alpine COPY nginx.conf /etc/nginx/nginx.conf COPY html/ /usr/share/nginx/html/ EXPOSE 80 CMD [nginx, -g, daemon off;]Docker Compose什么是 Docker ComposeDocker Compose 是一个用于定义和运行多容器 Docker 应用的工具。注意Docker Compose 有两个版本V1: 使用docker-compose命令带连字符V2: 使用docker compose命令不带连字符作为 Docker CLI 插件Docker Desktop 默认包含 V2 版本。如果系统同时安装了 V1 和 V2V2 优先。docker-compose.yml 示例注意Docker Compose V2 不再需要version字段V1 需要。以下示例兼容两种版本# version: 3.8 # V2 中可选V1 中必需services:web:image:nginx:alpineports:-8080:80volumes:-./html:/usr/share/nginx/htmlnetworks:-mynetworkdb:image:mysql:8.0environment:MYSQL_ROOT_PASSWORD:rootpasswordMYSQL_DATABASE:mydbvolumes:-db_data:/var/lib/mysqlnetworks:-mynetworkapp:build:.ports:-5000:5000depends_on:-dbnetworks:-mynetworkvolumes:db_data:networks:mynetwork:driver:bridgeDocker Compose 常用命令Docker Compose V2推荐# 启动服务docker compose up docker compose up -d# 后台运行# 停止服务docker compose down docker compose down -v# 同时删除数据卷# 查看服务状态docker composeps# 查看日志docker compose logs docker compose logs -f web# 跟踪特定服务日志# 构建镜像docker compose build# 执行命令docker composeexecwebbash# 重启服务docker compose restart# 扩展服务docker compose up --scaleweb3# 查看配置docker compose config# 暂停/恢复服务docker compose pause docker compose unpauseDocker Compose V1旧版本# 使用 docker-compose带连字符docker-compose up docker-compose down docker-composeps# ... 其他命令类似只需将 docker compose 替换为 docker-compose提示如果docker compose命令不可用可以安装 Docker Compose V2 或使用 V1 版本的docker-compose命令。实用技巧与调试查看容器 IP 地址# 方法1: 使用 inspect推荐docker inspect -f{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}容器名# 方法2: 格式化输出docker inspect --format{{.NetworkSettings.IPAddress}}容器名# 方法3: 查看网络详情docker network inspect bridge|grep-A5容器名调试容器问题# 1. 查看容器日志docker logs容器名docker logs -f容器名# 实时跟踪# 2. 进入容器调试dockerexec-it容器名/bin/bash dockerexec-it容器名/bin/sh# 如果 bash 不可用# 3. 以前台模式运行查看错误docker run镜像名# 不使用 -d 参数# 4. 检查容器状态dockerps-a docker inspect容器名# 5. 查看容器资源使用docker stats容器名# 6. 查看容器进程dockertop容器名# 7. 查看容器事件docker events --filtercontainer容器名常用调试命令组合# 快速查看容器信息dockerps--formattable {{.Names}}\t{{.Status}}\t{{.Ports}}# 查看所有容器的 IPdockerps-q|xargs-I{}docker inspect -f{{.Name}} - {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}{}# 清理所有停止的容器docker container prune -f# 查看镜像大小排序docker images --formattable {{.Repository}}\t{{.Tag}}\t{{.Size}}|sort-k3 -h# 查看容器启动时间dockerps-a --formattable {{.Names}}\t{{.Status}}\t{{.CreatedAt}}网络调试# 测试容器间网络连通性dockerexec容器1ping容器2的IP或名称# 查看容器网络配置docker network inspect网络名# 查看容器端口映射docker port容器名# 测试端口是否开放dockerexec容器名nc-zv localhost端口数据卷调试# 查看数据卷使用情况docker systemdf-v# 查看数据卷内容需要进入容器docker run --rm -v卷名:/data alpinels-la /data# 备份数据卷docker run --rm -v卷名:/data -v$(pwd):/backup alpinetarczf /backup/backup.tar.gz /data# 恢复数据卷docker run --rm -v卷名:/data -v$(pwd):/backup alpinetarxzf /backup/backup.tar.gz -C /data实际应用场景场景 1: 运行 Web 服务器# 运行 Nginxdocker run -d -p80:80 --name mynginx nginx# 访问 http://localhost场景 2: 运行数据库# 运行 MySQLdocker run -d\--name mysql\-eMYSQL_ROOT_PASSWORD123456\-eMYSQL_DATABASEtestdb\-p3306:3306\-v mysql_data:/var/lib/mysql\--restartunless-stopped\mysql:8.0# 运行 PostgreSQLdocker run -d\--name postgres\-ePOSTGRES_PASSWORD123456\-ePOSTGRES_DBtestdb\-p5432:5432\-v postgres_data:/var/lib/postgresql/data\--restartunless-stopped\postgres:14# 运行 Redisdocker run -d\--name redis\-p6379:6379\-v redis_data:/data\--restartunless-stopped\redis:7-alpine场景 3: 运行 Python 应用# 构建镜像docker build -t myapp:1.0.# 运行容器# Linux/macOS:docker run -d\--name myapp\-p5000:5000\-v$(pwd)/app:/app\myapp:1.0# Windows PowerShell:docker run -d--name myapp-p5000:5000-v ${PWD}/app:/appmyapp:1.0# Windows CMD:docker run -d ^ --name myapp ^ -p5000:5000 ^ -v %cd%/app:/app ^ myapp:1.0场景 4: 开发环境# Linux/macOS:docker run -it\--name dev\-v$(pwd):/workspace\-w /workspace\python:3.9bash# Windows PowerShell:docker run -it--name dev-v${PWD}:/workspace-w /workspacepython:3.9bash常见问题与解决方案1. 容器无法启动问题容器启动后立即退出解决方案# 查看日志docker logs容器名# 检查容器状态dockerps-a# 以前台模式运行查看错误docker run镜像名2. 端口被占用问题Error: bind: address already in use解决方案# 更改端口映射docker run -p8080:80 nginx# 或停止占用端口的容器docker stop容器名3. 权限问题问题容器内无法写入文件解决方案# 使用 root 用户运行docker run -u root镜像名# 或修改文件权限dockerexec-u root容器名chown-R user:user /path4. 数据持久化问题容器删除后数据丢失解决方案# 使用数据卷docker run -v myvolume:/data镜像名# 使用绑定挂载docker run -v /host/path:/container/path镜像名5. 网络连接问题问题容器无法访问其他容器解决方案# 使用自定义网络docker network create mynetwork docker run --network mynetwork镜像名# 使用 Docker Compose推荐6. 镜像拉取慢问题从 Docker Hub 拉取镜像很慢解决方案Windows (Docker Desktop):打开 Docker Desktop进入 Settings → Docker Engine添加镜像加速器配置{registry-mirrors:[https://docker.mirrors.ustc.edu.cn,https://hub-mirror.c.163.com,https://mirror.baidubce.com]}点击 Apply RestartLinux:编辑/etc/docker/daemon.json不存在则创建{registry-mirrors:[https://docker.mirrors.ustc.edu.cn,https://hub-mirror.c.163.com,https://mirror.baidubce.com]}然后重启 Dockersudosystemctl daemon-reloadsudosystemctl restart dockermacOS (Docker Desktop):同 Windows 配置方法验证配置docker info|grep-A10Registry Mirrors7. 清理磁盘空间问题Docker 占用磁盘空间过大解决方案# 查看磁盘使用情况docker systemdfdocker systemdf-v# 详细显示# 清理未使用的资源docker system prune# 清理未使用的容器、网络、镜像悬空镜像docker system prune -a# 清理所有未使用的镜像docker system prune -a --volumes# 同时清理数据卷# 清理特定资源docker image prune -a# 清理所有未使用的镜像docker container prune# 清理所有已停止的容器docker volume prune# 清理未使用的数据卷docker network prune# 清理未使用的网络docker builder prune# 清理构建缓存8. 容器无法访问外部网络问题容器内无法访问互联网解决方案# 检查网络配置docker network inspect bridge# 使用主机网络Linuxdocker run --networkhost镜像名# 检查 DNS 配置docker run --dns8.8.8.8镜像名9. 容器内时区不正确问题容器内时间与主机不一致解决方案# 方法1: 挂载时区文件docker run -v /etc/localtime:/etc/localtime:ro镜像名# 方法2: 设置环境变量docker run -eTZAsia/Shanghai镜像名# 方法3: 在 Dockerfile 中设置ENVTZAsia/Shanghai RUNln-snf /usr/share/zoneinfo/$TZ/etc/localtimeecho$TZ/etc/timezone10. 查看容器 IP 地址问题需要获取容器的 IP 地址解决方案# 方法1: 使用 inspectdocker inspect -f{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}容器名# 方法2: 使用 inspect 格式化输出docker inspect --format{{.NetworkSettings.IPAddress}}容器名# 方法3: 查看网络详情docker network inspect bridge最佳实践1. 镜像优化使用.dockerignore排除不需要的文件减小构建上下文使用多阶段构建减小镜像体积只保留运行时需要的文件使用 Alpine 或 Slim 版本的基础镜像减小镜像大小合并 RUN 命令减少镜像层数例如# 不好 RUN apt-get update RUN apt-get install -y nginx RUN apt-get clean # 好 RUN apt-get update \ apt-get install -y nginx \ apt-get clean \ rm -rf /var/lib/apt/lists/*按需安装依赖只安装应用运行所需的包清理缓存和临时文件在同一个 RUN 命令中完成使用特定版本标签避免使用latest标签确保构建可重现2. 安全建议不要以 root 用户运行容器定期更新基础镜像扫描镜像漏洞使用最小权限原则3. 性能优化合理设置资源限制使用--memory和--cpus限制容器资源使用数据卷而非绑定挂载生产环境提高 I/O 性能使用健康检查确保容器正常运行自动重启异常容器合理使用缓存将变化频率低的层放在前面利用 Docker 层缓存使用 .dockerignore减小构建上下文加快构建速度多阶段构建减小最终镜像体积加快拉取和启动速度使用构建缓存合理组织 Dockerfile最大化利用缓存4. 开发建议使用 Docker Compose管理多容器应用简化开发环境使用环境变量管理配置通过.env文件或环境变量传递配置使用命名卷而非匿名卷便于管理和备份编写清晰的 Dockerfile添加注释说明每个步骤的作用使用健康检查确保服务正常运行版本控制为镜像打上版本标签便于回滚日志管理使用日志驱动集中管理容器日志开发时使用绑定挂载方便代码热更新生产环境使用数据卷学习路径建议入门阶段理解 Docker 基本概念学会拉取和运行镜像掌握常用命令run, ps, stop, rm, logs学会端口映射和数据卷挂载进阶阶段学习编写 Dockerfile理解镜像构建过程掌握 Docker Compose学习网络和数据卷管理高级阶段多阶段构建镜像优化容器编排KubernetesCI/CD 集成监控和日志管理常用命令速查表镜像操作docker pull镜像# 拉取镜像docker images# 列出镜像docker rmi镜像# 删除镜像docker build -t镜像.# 构建镜像docker tag源新# 标记镜像docker save -o文件镜像# 导出镜像docker load -i文件# 导入镜像容器操作docker run[选项]镜像# 运行容器dockerps# 列出容器docker start容器# 启动容器docker stop容器# 停止容器docker restart容器# 重启容器dockerrm容器# 删除容器docker logs容器# 查看日志dockerexec-it容器bash# 进入容器docker inspect容器# 查看详情dockercp源目标# 复制文件数据卷操作docker volume create卷# 创建数据卷docker volumels# 列出数据卷docker volumerm卷# 删除数据卷docker volume inspect卷# 查看详情网络操作docker network create网络# 创建网络docker networkls# 列出网络docker network inspect网络# 查看详情docker networkrm网络# 删除网络清理操作docker system prune# 清理未使用的资源docker systemdf# 查看磁盘使用总结Docker 是一个强大的容器化工具掌握它需要理解核心概念镜像、容器、仓库、Dockerfile熟练使用命令run, ps, exec, logs, build 等掌握参数含义-d, -it, -p, -v, -e 等编写 Dockerfile构建自己的镜像使用 Docker Compose管理多容器应用实践项目在实际项目中应用持续练习和实践是掌握 Docker 的关键Docker 官方文档https://docs.docker.com/