从“本地能跑”到“到处能跑”——Docker如何让Web应用“搬家不翻车”
一、步骤一:搞懂Docker核心概念——3个词让你入门
1. 镜像(Image):应用的“安装光盘”
本质:只读模板,包含应用运行所需的所有内容(代码、依赖、配置)。 类比:就像Windows安装光盘,里面有系统文件和安装程序,用它能装出多个相同的系统。 举例:Python官方镜像(python:3.9-slim)包含Python解释器和基础库,你可以基于它添加自己的代码。2. 容器(Container):镜像的“运行实例”
本质:镜像启动后的独立进程,有自己的文件系统和网络,与其他容器隔离。 类比:用安装光盘(镜像)装出来的Windows系统(容器),可以同时装多个,互不影响。 特点:启动快(秒级)、资源占用少(共享主机内核)、删除后数据不残留(除非挂载外部存储)。3. 仓库(Repository):镜像的“应用商店”
作用:存储和分发镜像,类似GitHub存代码。 常用仓库:Docker Hub(官方,有Python、Nginx等官方镜像)、阿里云镜像仓库(国内访问快)。展开剩余78%二、步骤二:编写Dockerfile——给应用“定制集装箱”
以Python Flask应用为例,项目结构如下:
my_flask_app/
├── app.py # Flask应用代码
├── requirements.txt # 依赖库列表(如flask==2.0.1)
└── Dockerfile # 镜像构建脚本(重点)
Dockerfile编写详解(逐行解释):
dockerfile
复制
# 1. 选择基础镜像(从仓库拉取Python 3.9环境)
FROM python:3.9-slim
# 2. 设置工作目录(后续命令在此目录执行)
WORKDIR /app
# 3. 复制本地文件到镜像(把代码和依赖文件复制进去)
COPY . .
# 4. 安装依赖(用pip安装requirements.txt里的库)
RUN pip install --no-cache-dir -r requirements.txt
# 5. 声明端口(告诉Docker容器会监听5000端口,仅声明)
EXPOSE 5000
# 6. 容器启动命令(运行Flask应用)
CMD ["python", "app.py"]
核心指令避坑点:
FROM:选官方镜像(如python:3.9-slim),避免非官方镜像的安全风险; COPY:.表示当前目录,确保Dockerfile和代码在同一目录; RUN:安装依赖时加--no-cache-dir,减小镜像体积; CMD:只能有一个,若写多个,只有最后一个生效。三、步骤三:构建镜像+运行容器——让应用“跑起来”
1. 构建镜像(把Dockerfile变成可运行的“集装箱”)
打开终端,进入my_flask_app目录,执行:
bash
复制
docker build -t my-flask-app:1.0 .
参数说明: -t my-flask-app:1.0:给镜像起名“my-flask-app”,版本号“1.0”; .:指定Dockerfile所在目录(当前目录)。 构建成功标志:终端显示“Successfully built [镜像ID]”。2. 运行容器(启动应用,对外提供服务)
执行以下命令,将容器的5000端口映射到主机的5000端口:
bash
复制
docker run -p 5000:5000 my-flask-app:1.0
参数说明: -p 5000:5000:主机端口:容器端口(访问http://localhost:5000即可打开应用); 验证成功:浏览器输入http://localhost:5000,看到Flask应用页面。3. 常用操作:查看/停止容器
查看运行中的容器:bash
复制
docker ps # 列出所有运行中的容器
停止容器(需替换<容器ID>):bash
复制
docker stop <容器ID> # 容器ID可通过docker ps查看
发布于:日本热点资讯
- 人社部原副部长王少峰当选中国国际人才交流与开发研究会会长
- 半场被换下!罗德里戈比赛中与帕雷德斯互怼,当前进球荒超半年
- 如果老乡们都像这位老乡一样,上海会是幸运,还是不幸?_外地人
- 凯迪拉克官宣:正式获准参与2026赛季F1锦标赛!
- 北京:白天高温“伏笔” 夜晚冰雹来袭
- 青岛西海岸新区举行“学习劳模当先锋 建设品质西海岸”“五一”
- 从“本地能跑”到“到处能跑”——Docker如何让Web应用
- 太荒诞了,一支差点解散的队,竟成了保级的生死判官
- 恒学云凭什么成为留学生进名企的“通关秘籍”?
- Facebook广告投放优化卡在CTR不动?试试‘首屏信息密
