docker实战指南
·
一、软件安装的两种方式与 Docker 镜像获取
1.1 普通软件的安装方式
在日常使用中,我们安装软件通常有两种途径:
方式一:应用市场安装
- 打开应用市场 → 搜索软件名称 → 点击安装
方式二:官网下载安装
- 访问软件官网 → 下载离线安装包 → 手动安装
1.2 Docker 镜像获取的两种对应方式
Docker 获取镜像的方式与普通软件安装有着相似的逻辑:
方式一:在线搜索下载(类似应用市场安装)
# 1. 搜索镜像(如搜索MySQL)
docker search mysql
# 返回结果格式:mysql:tag → 软件名称:版本号
# 2. 下载镜像
docker pull mysql:5.7
# 3. 运行容器
docker run mysql:5.7
适用场景:网络通畅环境,获取官方最新镜像
方式二:离线包安装(类似官网下载)
# 1. 上传镜像包到服务器
# 2. 从离线包加载镜像
docker load -f 镜像包名称
为什么需要这种方式?
- Docker 官方镜像在国外,下载速度慢或不稳定
- 内网环境无法访问外网
- 需要固定特定版本,避免自动更新带来的不兼容
推荐场景:生产环境、内网部署、网络受限情况
二、Docker 核心概念解析
2.1 镜像 vs 容器:通俗理解
镜像就像软件的安装包,容器就像安装好的软件:
- 安装软件需要对应的安装包 → 运行容器需要对应的镜像
- 一个安装包可以安装多个软件 → 一个镜像可以启动多个容器
- 删除软件不会影响安装包 → 删除容器不会影响镜像(但有容器运行时不能删除对应镜像)
三、常用 Docker 命令大全
3.1 基础管理命令
# 镜像管理
docker images # 查看所有镜像
docker rmi 镜像id # 删除指定镜像
# 容器管理
docker ps # 查看运行中的容器
docker ps -a # 查看所有容器(包括已停止的)
docker rm 容器id # 删除容器
docker start/stop/restart 容器id # 启动/停止/重启容器
3.2 运维调试命令
# 日志查看
docker logs -f 容器id # 实时查看容器日志
# 进入容器
docker exec -it 容器id /bin/bash # 进入容器内部
# 性能监控
docker stats # 查看容器资源占用情况
docker help # 查看所有命令帮助
四、Dockerfile 实战:SpringBoot 项目部署
4.1 为什么需要 Dockerfile?
Dockerfile 就像一份"烹饪菜谱",告诉 Docker 如何一步步构建出包含你应用程序的标准化镜像,实现环境一致性。
4.2 实战示例:SpringBoot 项目 Docker 化
项目结构:

Dockerfile 详解:
# 指定基础运行环境
FROM openjdk:8
# 设置容器内工作目录
WORKDIR /app
# 复制jar包到容器(注意路径匹配)
ADD ./data/docker-1.0-SNAPSHOT.jar /app/docker-1.0-SNAPSHOT.jar
# 容器启动命令
ENTRYPOINT ["java", "-jar", "docker-1.0-SNAPSHOT.jar"]
4.3 镜像构建与运行
# 在Dockerfile所在目录执行构建
docker build -t test:1.0 .
# 运行容器(-d 表示后台运行)
docker run -d test:1.0
五、Docker Compose:多容器编排利器
5.1 为什么需要 Docker Compose?
单纯使用 docker run 管理多个关联容器(如 MySQL + Redis + 应用)十分繁琐,Docker Compose 通过配置文件实现一键部署。
5.2 Docker Compose 文件详解
version: '3.3' # 配置文件格式版本
services:
# 应用服务定义
test:
image: "test:1.0" # 使用镜像
restart: always # 自动重启确保高可用
ports:
- "18090:8080" # 端口映射:宿主机18090 → 容器8080
volumes:
- ./data/:/app # 数据卷挂载:宿主机data目录→容器app目录
environment:
- TZ=Asia/Shanghai # 设置时区
networks:
- test # 连接到test网络
# 网络配置
networks:
test:
external: true # 使用外部已存在的网络
5.3 核心概念深度解析
🔄 数据卷挂载:数据的"双向传送门"
作用:在容器和宿主机之间建立持久化数据通道
- 数据安全:容器崩溃时数据不会丢失
- 方便调试:直接查看宿主机上的日志文件
- 持久存储:容器删除后数据依然保留
示例效果:
容器内 /app/application.log ←→ 宿主机 ./data/application.log
🌐 网络隔离:系统的"安全围墙"
# 创建专用网络
docker network create test
# 使用Compose部署
docker-compose up -d # 启动所有服务
docker-compose down # 停止并清理
5.4 生产环境重要提醒
💾 数据库持久化必须做!
MySQL等数据库容器必须配置数据卷挂载,否则:
- 容器重启 → 数据全部丢失
- 容器崩溃 → 业务数据不可恢复
🛡️ 网络隔离保障安全
- 不同系统使用不同网络组,避免相互干扰
- 外部网络需要提前手动创建
六、实战部署流程总结
6.1 单容器部署流程
- 编写 Dockerfile 定义环境
- 构建镜像:
docker build -t 镜像名 . - 运行容器:
docker run -d 镜像名
6.2 多容器编排流程
- 创建网络:
docker network create 网络名 - 编写 docker-compose.yml 配置文件
- 一键部署:
docker-compose up -d - 问题排查:
docker-compose down后重新部署
更多推荐

所有评论(0)