Docker容器化遗留应用(二):容器化三步走
系列导读
这是《Docker容器化遗留应用》系列的第二篇,上一篇介绍了容器化的优势,本篇将手把手教你完成容器化的三个基本步骤。
第一步:环境准备(5分钟)
安装Docker
# 一键安装(Ubuntu/Debian)
curl -fsSL https://get.docker.com | bash
# 验证安装
docker --version
# Docker version 24.0.7, build afdd53b
# Docker Compose已内置
docker compose version
# Docker Compose version v2.23.0
国内镜像加速配置(重要!)
国内访问Docker Hub速度较慢,必须配置镜像加速器。
可用的国内镜像源
| 镜像源 | 地址 | 推荐指数 |
|---|---|---|
| 阿里云 | https://xxx.mirror.aliyuncs.com | ⭐⭐⭐⭐⭐ |
| 中科大 | https://docker.mirrors.ustc.edu.cn | ⭐⭐⭐⭐ |
| 网易 | https://hub-mirror.c.163.com | ⭐⭐⭐ |
配置方法
# 创建配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
# 重启Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
# 验证
docker info | grep "Registry Mirrors" -A 1
阿里云专属加速器
- 访问 阿里云容器镜像服务
- 获取专属加速器地址(格式:
https://xxx.mirror.aliyuncs.com) - 添加到
daemon.json的registry-mirrors数组
第二步:编写Dockerfile(10分钟)
完整示例(Python Flask)
# 选择轻量级基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 先复制依赖文件(利用缓存)
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
# 复制应用代码
COPY . .
# 暴露端口
EXPOSE 5000
# 启动命令
CMD ["python", "app.py"]
关键指令
| 指令 | 说明 | 示例 |
|---|---|---|
| FROM | 基础镜像 | FROM python:3.11-slim |
| WORKDIR | 工作目录 | WORKDIR /app |
| COPY | 复制文件 | COPY . . |
| RUN | 执行命令 | RUN pip install flask |
| EXPOSE | 暴露端口 | EXPOSE 5000 |
| CMD | 启动命令 | CMD ["python", "app.py"] |
优化技巧:利用Docker缓存
错误做法(每次都重新安装依赖):
COPY . .
RUN pip install -r requirements.txt
正确做法(代码修改不重新安装):
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
第三步:构建与运行(1分钟)
构建镜像
# 构建镜像
docker build -t my-legacy-app:v1.0 .
# 查看镜像
docker images | grep my-legacy-app
运行容器
# 运行容器(-d 后台,-p 端口映射)
docker run -d -p 5000:5000 --name my-app my-legacy-app:v1.0
# 查看状态
docker ps
# 查看日志
docker logs -f my-app
测试访问
curl http://localhost:5000
常用命令速查
| 操作 | 命令 |
|---|---|
| 构建镜像 | docker build -t 镜像名:标签 . |
| 运行容器 | docker run -d -p 端口:端口 --name 容器名 镜像名 |
| 查看容器 | docker ps |
| 查看日志 | docker logs -f 容器名 |
| 停止容器 | docker stop 容器名 |
| 进入容器 | docker exec -it 容器名 /bin/bash |
下篇预告
下一篇:《Docker容器化遗留应用(三):网络与数据管理》
将介绍:
- 端口映射与容器间通信
- Docker Compose一键编排
- 数据持久化与卷管理
系列导航
- (一)为什么要容器化 - 容器化优势与基本概念
- (二)容器化三步走 ← 当前
- (三)网络与数据管理 - 容器间通信与持久化
- (四)实战案例 - Apache与数据库容器化
- (五)综合案例 - 遗留CRM系统容器化全流程
三步完成,你的第一个容器化应用已经运行起来了!
Views: 2
