智睿享
白蓝主题五 · 清爽阅读
首页  > 电脑设置

运维自动化中的Docker操作实战

运维自动中的ref="/tag/2019/" style="color:#3D6345;font-weight:bold;">Docker操作实战

公司新上线的项目越来越多,每次部署都要手动装环境、配依赖、启动服务,光是这些重复操作就让人头疼。上周同事小李又因为漏配一个环境变量,导致服务跑不起来,排查了两个小时。其实这些问题,用Docker做运维自动化,早就不是难题了。

Docker把应用和它需要的运行环境打包成镜像,一次构建,到处运行。不管是开发、测试还是生产环境,只要能跑Docker,结果都一样。再也不用担心“我本地好好的,怎么一上线就出问题”这种经典问题。

从写Dockerfile开始

最基础的操作就是写Dockerfile。比如你要部署一个简单的Node.js服务,可以这样写:

FROM node:16-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["npm", "start"]

这个文件定义了镜像的构建步骤:基于Node.js 16环境,复制代码,安装依赖,最后暴露端口并启动服务。保存后执行docker build -t myapp:latest .,镜像就生成好了。

一键启动服务

有了镜像,启动容器就简单了。比如要把刚才的服务跑起来,命令如下:

docker run -d -p 8080:3000 --name my-running-app myapp:latest

-d是后台运行,-p把宿主机8080端口映射到容器的3000端口,访问http://localhost:8080就能看到页面了。如果服务挂了,还能加上--restart=always让它自动重启。

批量管理靠脚本

项目多了,一个个手动操作太累。写个Shell脚本批量处理更省心。比如每天早上自动拉取最新镜像并重启服务:

#!/bin/bash
docker pull registry.example.com/myapp:latest
docker stop my-running-app || true
docker rm my-running-app || true
docker run -d -p 8080:3000 --name my-running-app registry.example.com/myapp:latest

把这个脚本加到cron里,每天定时执行,更新服务就跟呼吸一样自然。

再复杂点的场景可以用Docker Compose。多个服务之间有依赖关系,比如前端、后端、数据库,写个docker-compose.yml统一管理,一条docker-compose up -d全搞定。

运维自动化不是什么高深技术,关键是把重复的事情交给机器去做。Docker就像个会听话的助手,你告诉它要什么,它就把环境给你准备好。时间久了你会发现,花点时间学这些操作,换来的不只是效率,还有更稳定的系统和更轻松的心情。