Docker容器化遗留应用(二):容器化三步走

Docker容器化遗留应用(二):容器化三步走

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

阿里云专属加速器

  1. 访问 阿里云容器镜像服务
  2. 获取专属加速器地址(格式:https://xxx.mirror.aliyuncs.com
  3. 添加到 daemon.jsonregistry-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

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Index