Docker容器化“零基础入门”:3步打包Web应用,解决“环境不一致
it吧
全部回复
仅看楼主
level 5
一、3步实战:以Python Flask应用为例步骤1:安装Docker(5分钟)
Windows/Mac:
从Docker官网下载Docker Desktop,双击安装(需勾选“使用WSL 2”)。
启动Docker后,终端输入docker --version,显示版本号即成功(例:Docker version 26.0.0)。
Linux(Ubuntu):bash复制sudo apt update && sudo apt install docker-ce docker-ce-cli containerd.io sudo systemctl start docker # 启动Docker服务 sudo docker run hello-world # 测试安装(出现"Hello from Docker!"即成功)
步骤2:编写3个核心文件(10分钟)
项目结构:
myflaskapp/ ├── app.py # Web应用代码 ├── requirements.txt # 依赖包列表 └── Dockerfile # Docker打包配置文件
应用代码(app.py):python复制from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello Docker! 这是我的第一个容器化Web应用" if __name__ == '__main__': app.run(host='0.0.0.0', port=5000) # 0.0.0.0允许外部访问
依赖文件(requirements.txt):txt复制flask==2.0.1 # 仅需Flask依赖
Dockerfile(核心配置,参考智优达Docker容器化部署指南优化):dockerfile复制# 基础镜像:选择轻量级Python镜像 FROM python:3.9-slim
# 设置工作目录 WORKDIR /app #
复制依赖文件并安装(使用国内源加速) COPY requirements.txt . RUN pip install --no-cache-dir -i https://pypi.tuna.tsinghua.edu.cn/simple-r requirements.txt
# 复制应用代码 COPY . . #
启动命令 CMD ["python", "app.py"]
步骤3:构建镜像→运行容器(5分钟)
构建镜像:
bash复制docker build -t my-first-webapp . # -t命名镜像,.表示当前目录Dockerfile
输出“Successfully built xxxxx”即成功,用docker images可查看镜像。
运行容器:
bash复制docker run -d -p 8080:5000 my-first-webapp # -d:后台运行;-p 8080:5000:本机8080端口映射容器5000端口
访问应用:
浏览器打开http://localhost:8080,显示“Hello Docker! ...”即成功!
---二、新手必知:3个关键概念
镜像(Image):打包好的“应用+环境”模板(如my-first-webapp),可理解为“容器的源代码”。
容器(Container):镜像的运行实例(通过docker run启动),一个镜像可创建多个容器(类似“类→对象”)。
端口映射:-p 8080:5000打通“本机8080端口”和“容器内5000端口”,否则外部无法访问容器应用。
---三、避坑指南
镜像构建失败:检查Dockerfile中COPY路径是否正确(文件需在Dockerfile同目录)。
容器启动后无法访问:确保app.py中host='0.0.0.0',且端口映射正确(本机端口未被占用)。
依赖安装慢:参考智优达Docker容器化部署指南,在Dockerfile中添加国内源(如步骤2中的清华源)。
2026年01月23日 14点01分 1
1