Docker 容器化部署与镜像管理实战

刚接触 Docker 的时候,我也和你一样觉得这东西挺神秘。其实把它想成一个打包工具就明白了,你把代码和依赖都装进一个盒子里,这个盒子在哪台机器上都能跑,不会出兼容性问题。今天咱们就来聊聊怎么把项目容器化,还有怎么管理这些镜像。

先说最基础的,你得有个 Dockerfile。这玩意儿就是个文本文件,告诉 Docker 怎么构建你的镜像。假设你有个 Python 项目,第一行写 FROM python:3.9,意思是基于官方的 Python 3.9 镜像来构建。接着用 WORKDIR /app 设置工作目录,然后用 COPY 把你的代码复制进去。最后用 CMD 指定启动命令,比如 CMD [“python”, “app.py”]。写好后,在 Dockerfile 所在目录运行 docker build -t myapp:1.0 . 就能生成镜像了,-t 后面是镜像名和版本号。

镜像构建好了,怎么运行呢?用 docker run 命令。比如 docker run -d -p 8080:80 myapp:1.0,-d 表示后台运行,-p 是把容器的 80 端口映射到宿主机的 8080 端口。这样你访问宿主机的 8080 端口就能访问到容器里的服务了。如果容器需要持久化存储,记得用 -v 参数挂载卷,比如 -v /data:/app/data,这样容器里的数据就不会丢了。

镜像管理这块,很多人容易忽略版本控制。别总用 latest 标签,那玩意儿今天和明天可能就不是同一个东西了。给自己的镜像打上明确的版本号,像 1.0、1.1、2.0 这样,回滚的时候心里有底。定期清理不用的镜像也很重要,docker system prune 能帮你删掉那些悬空的镜像和停止的容器,但执行前一定要确认没有重要数据。

生产环境部署的时候,建议用 docker-compose。写个 docker-compose.yml 文件,把服务、网络、存储都定义清楚。比如 web 服务依赖 db 服务,db 服务用 mysql:8.0 镜像,数据存在 /var/lib/mysql 目录。这样一键 docker-compose up -d 就能启动整个应用栈,比一个个敲 docker run 命令方便多了,而且配置还能放进版本控制里。

最后说个实用技巧,多阶段构建能帮你把镜像体积压得很小。比如前端项目,第一阶段用 node 镜像打包,第二阶段用 nginx 镜像只复制打包好的静态文件。这样最终镜像可能只有几十兆,而不是好几百兆。部署快,传输也快,省资源。

Docker 这东西,用熟了就知道多香了。环境一致性、快速部署、资源隔离,这些好处用过就回不去了。刚开始可能会遇到各种坑,比如权限问题、网络问题,多查文档多试几次就明白了。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇