首页主机资讯Docker在CentOS上的自动化部署

Docker在CentOS上的自动化部署

时间2025-11-03 22:12:03发布访客分类主机资讯浏览548
导读:Docker在CentOS上的自动化部署指南 1. 准备Docker环境 在CentOS系统上部署Docker前,需先安装并配置Docker环境。以CentOS 7为例,可通过以下命令完成安装: # 添加Docker官方YUM源 curl...

Docker在CentOS上的自动化部署指南

1. 准备Docker环境

在CentOS系统上部署Docker前,需先安装并配置Docker环境。以CentOS 7为例,可通过以下命令完成安装:

# 添加Docker官方YUM源
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
# 安装Docker CE及必要组件
yum install -y docker-ce docker-ce-cli containerd.io
# 启动Docker服务并设置开机自启
systemctl start docker &
    &
 systemctl enable docker
# 验证Docker安装
docker --version

上述步骤确保系统具备Docker运行环境,为后续镜像构建与容器部署奠定基础。

2. 编写Dockerfile定义应用环境

Dockerfile是容器化的核心配置文件,用于描述应用的运行环境、依赖及启动命令。以下是常见场景的示例:

  • Node.js应用
    FROM node:14
    WORKDIR /usr/src/app
    COPY package*.json ./
    RUN npm install
    COPY . .
    EXPOSE 8080
    CMD ["node", "app.js"]
    
  • Python应用
    FROM python:3.8-slim
    WORKDIR /app
    COPY . /app
    RUN pip install --no-cache-dir -r requirements.txt
    EXPOSE 80
    CMD ["python", "app.py"]
    
  • CentOS基础镜像(用于自定义CentOS环境):
    FROM centos:latest
    ENV NAME World
    RUN echo "Hello, ${
    NAME}
        "
    EXPOSE 80
    CMD ["echo", "Custom CentOS container ready"]
    

根据应用类型调整Dockerfile内容,确保镜像包含应用运行所需的所有依赖。

3. 编写自动化部署脚本

通过Shell脚本自动化Docker镜像构建、容器运行及状态检查,减少手动操作误差。示例如下:

#!/bin/bash
# 定义镜像与容器名称
IMAGE_NAME="my-node-app"
CONTAINER_NAME="my-running-app"

# 构建Docker镜像
echo "Building Docker image: $IMAGE_NAME"
docker build -t $IMAGE_NAME .

# 检查容器是否已存在,存在则停止并删除
if docker ps -a | grep -q $CONTAINER_NAME;
     then
  echo "Container $CONTAINER_NAME exists. Stopping and removing..."
  docker stop $CONTAINER_NAME &
    &
 docker rm $CONTAINER_NAME
fi

# 运行新容器
echo "Running new container: $CONTAINER_NAME"
docker run -d -p 8080:8080 --name $CONTAINER_NAME $IMAGE_NAME

# 检查容器状态
echo "Container status:"
docker ps -a | grep $CONTAINER_NAME

保存为deploy.sh后,赋予执行权限:

chmod +x deploy.sh

运行脚本即可自动完成镜像构建与容器部署。

4. 使用CI/CD工具实现代码触发自动化

为实现代码提交后自动部署,可集成Jenkins、GitLab CI/CD或GitHub Actions等工具。以下以GitHub Actions为例:

  • 在项目根目录创建.github/workflows/deploy.yml文件:
    name: Deploy to Docker on CentOS
    on:
      push:
        branches:
          - main  # 当main分支有推送时触发
    jobs:
      build-and-deploy:
        runs-on: ubuntu-latest
        steps:
          # 拉取代码
          - name: Checkout code
            uses: actions/checkout@v2
          # 构建并推送Docker镜像到Docker Hub
          - name: Build and push Docker image
            uses: docker/build-push-action@v2
            with:
              context: .
              file: ./Dockerfile
              push: true
              tags: your-dockerhub-username/my-node-app:latest
          # 通过SSH连接到CentOS服务器执行部署脚本
          - name: Deploy to server
            run: |
              ssh -o StrictHostKeyChecking=no ${
    {
     secrets.SERVER_USER }
    }
    @${
    {
     secrets.SERVER_HOST }
    }
         'bash -s' <
         deploy.sh
    
  • 配置GitHub Secrets:在仓库Settings→Secrets中添加SERVER_USER(服务器用户名)、SERVER_HOST(服务器IP/域名)等敏感信息。 每次向main分支推送代码时,GitHub Actions会自动构建镜像、推送到Docker Hub,并通过SSH在CentOS服务器上执行deploy.sh脚本完成部署。

5. 可选:使用Docker Compose管理多容器应用

若应用包含多个服务(如Web+数据库),可使用docker-compose.yml定义服务关系,并通过脚本自动化部署:

  • 编写docker-compose.yml
    version: '3.8'
    services:
      web:
        build: .
        ports:
          - "8080:80"
      db:
        image: mysql:5.7
        environment:
          MYSQL_ROOT_PASSWORD: example
    
  • 编写部署脚本deploy_compose.sh
    #!/bin/bash
    # 拉取最新镜像并重启容器
    docker-compose pull
    docker-compose up -d
    

运行./deploy_compose.sh即可自动部署多容器应用。

6. 安全与监控建议

  • 安全加固:使用非root用户运行容器(在Dockerfile中添加USER nonroot)、限制容器资源(--memory--cpu参数)、定期更新镜像。
  • 监控与日志:通过docker logs -f < container_name> 查看实时日志,或集成Prometheus+Grafana监控容器性能。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Docker在CentOS上的自动化部署
本文地址: https://pptw.com/jishu/741280.html
centos虚拟机如何安装驱动 CentOS Docker网络配置怎样实现

游客 回复需填写必要信息