忘机山人
一直想写一本容器小书,真好懒猫基本都做了容器化,所以把这部分分享出来。不同的是,懒猫微服中使用pg-docker来替代docker命令,使用dockge来执行docker-compose。以下讲解以标准docker为主,这样子既学会了docker知识,也能够在懒猫微服上启动Docker服务。
小李是一名后端工程师,刚完成一个用 Flask 编写的内部管理系统。他信心满满地将代码提交,交给测试工程师老赵部署。
可没想到——
“报错了!你是不是少传文件了?”
“我这边 Python 是 3.6,怎么你这代码用了
match case?”“你数据库呢?你 Redis 配了?环境变量在哪?”
这一刻,小李陷入了一个叫「部署地狱」的世界。
这个世界里,每一台服务器都是独一无二的“宠物”,需要手动配置、手动部署、手动踩坑,稍有不慎就会陷入版本冲突、依赖缺失、环境不一致的深渊。
小李心里想:有没有一种办法,能让我把代码和环境一起打包起来,无论在哪运行都能保持一致?
在公司茶水间,小李邂逅了一个带着黑框眼镜的大叔,大家都叫他老周。
老周是个技术老炮,在各种部署大灾难中杀出血路。他听完小李的吐槽后,轻轻地推了一份文档过来,只写了五个字母:
Docker
“这是个魔法容器,”老周说,“把你代码和环境都打包进去,哪怕放在火星,也能跑。”
“以后别再‘它在我电脑上可以跑’了,Docker 能让所有环境变得一致。”
小李的眼睛亮了。
Docker 是一个开源的容器化平台,它允许开发者将应用及其所有依赖打包成一个“容器”,保证在任何平台上都可以一致运行。
你可以把 Docker 想象成:
程序员的打包箱子:把你写的程序、环境、库、配置都放进去,打包成一个“镜像”;
程序员的快递服务:运行镜像就像打开快递,内容和你寄出时一模一样。
☑️ 一句话总结:Docker 解决了“在我电脑上能跑”的问题。
老周拍了拍小李的肩膀,说:“先装起来,动手最重要。”
docker --version
如果看到 Docker 的版本信息,说明安装成功。
sudo apt update
sudo apt install docker.io
sudo systemctl start docker
sudo systemctl enable docker
🔐 建议将当前用户加入 docker 组,以免每次都要用 sudo:
sudo usermod -aG docker $USER
| 概念 | 说明 |
|---|---|
| 镜像(Image) | 应用和其依赖的静态快照模板(如:打包好的 Python 环境 + Flask 项目) |
| 容器(Container) | 镜像运行出来的实例,是真正“活着”的程序 |
| Dockerfile | 编写镜像的“配方”,定义如何构建镜像 |
| Docker Hub | 类似 GitHub 的公共镜像仓库,可上传/下载别人做好的镜像 |
docker 命令 | Docker 的主命令工具,用于操作镜像、容器、网络、卷等 |
老周指导小李敲下第一行命令:
docker run hello-world
如果docker run/pull 有问题,那么可以通过
lzc-cli appstore copy-image your-images来使用懒猫的镜像仓库。
这个命令会做三件事:
hello-world 镜像(如果本地没有)这是验证 Docker 是否正常运行的“点灯测试”。
老周笑着说:“现在,把你那个 Flask 管理系统也丢进 Docker 试试。”
小李在项目根目录下写了一个 Dockerfile:
# 使用 Python 官方基础镜像
FROM python:3.11-slim
# 设置工作目录
WORKDIR /app
# 复制项目文件
COPY . /app
# 安装依赖
RUN pip install -r requirements.txt
# 设置启动命令
CMD ["python", "main.py"]
docker build -t my-flask-app .
docker run -p 5000:5000 my-flask-app
现在访问浏览器 http://localhost:5000,你的项目上线了!
docker ps 查看运行中容器,docker images 查看已有镜像;.dockerignore 文件忽略不想加入镜像的文件,比如 .git 和日志。这次,小李把打好的镜像发给了测试老赵:
docker run -p 5000:5000 my-flask-app
老赵只运行了一行命令,项目便神奇地跑了起来。
“不改配置?不用装 Python?数据库也连上了?”
“你这是什么魔法!”
小李笑了笑,第一次感觉部署是件简单的事。
| 技术点 | 命令 |
|---|---|
| 安装 Docker | Mac/Win 下载 Docker Desktop / Ubuntu 安装 docker.io |
| 查看版本 | docker --version |
| 运行测试容器 | docker run hello-world |
| 编写 Dockerfile | FROM / COPY / RUN / CMD |
| 构建镜像 | docker build -t name . |
| 运行容器 | docker run -p 宿主:容器 镜像名 |
评论
0暂无评论