温馨提示×

CentOS与Docker集成开发环境如何搭建

小樊
44
2025-12-27 04:43:31
栏目: 智能运维

CentOS 与 Docker 集成开发环境搭建

一 准备与安装 Docker

  • 系统要求与卸载旧版
    • 建议使用 CentOS 7/8,内核版本不低于 3.10(检查命令:uname -r)。
    • 卸载旧版本(如有):执行 sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
  • 安装依赖与仓库
    • 安装工具:sudo yum install -y yum-utils device-mapper-persistent-data lvm2
    • 添加仓库(官方):sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
  • 安装与启动
    • 安装引擎:sudo yum install -y docker-ce docker-ce-cli containerd.io
    • 启动与自启:sudo systemctl start docker && sudo systemctl enable docker
    • 验证:docker --versiondocker run hello-world
  • 国内镜像加速(可选)
    • 创建配置:sudo mkdir -p /etc/docker
    • 写入镜像源:sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ["https://ghcr.geekery.cn","https://hub.geekery.cn","https://docker.m.daocloud.io","https://docker.rainbond.cc","https://docker.1panel.live"] } EOF
    • 重载并重启:sudo systemctl daemon-reload && sudo systemctl restart docker
  • 离线安装(无外网时)
    • 在可联网环境下载对应系统的 RPM 包(如 containerd.io、docker-ce、docker-ce-cli),拷贝到目标机后执行:sudo rpm -Uvh *.rpm --nodeps --force,然后启动 Docker 服务。

二 选择与配置开发栈镜像

  • 常用开发语言镜像与运行方式
    • Python:docker run -it --name my-python-dev -v $(pwd):/app python:3.9-slim bash
    • Node.js:docker run -it --name my-node-dev -v $(pwd):/app -p 3000:3000 node:14 bash
    • Java:docker run -it --name my-java-dev -v $(pwd):/app openjdk:11 bash
  • 使用 Dockerfile 定义可复用环境
    • 示例(Python):
      FROM python:3.9-slim
      WORKDIR /app
      COPY requirements.txt .
      RUN pip install --no-cache-dir -r requirements.txt
      COPY . .
      CMD ["python","app.py"]
      
    • 构建与运行:docker build -t my-python-app . && docker run -p 5000:5000 my-python-app
  • 多容器应用与 Compose
    • 示例(Node + PostgreSQL):
      version: '3.8'
      services:
        web:
          image: node:14
          ports: ["3000:3000"]
          volumes: ["./:/app"]
          working_dir: /app
          command: npm start
        db:
          image: postgres:13
          environment:
            POSTGRES_PASSWORD: example
          volumes: ["pg-data:/var/lib/postgresql/data"]
      volumes:
        pg-data:
      
    • 启动:docker-compose up -ddocker compose up -d(新版本 CLI)。

三 数据持久化与网络配置

  • 数据持久化
    • 数据库等状态服务务必使用 VolumesBind Mounts 持久化数据,避免容器重建后数据丢失(如 PostgreSQL 的 pg-data 卷)。
  • 网络与服务发现
    • 使用 自定义桥接网络 让多容器互通,避免端口直连带来的耦合与冲突。
    • 示例:
      version: '3.8'
      services:
        app:
          image: myapp:latest
          networks: [app]
        db:
          image: postgres:13
          environment: { POSTGRES_PASSWORD: example }
          volumes: ["db-data:/var/lib/postgresql/data"]
          networks: [app]
      networks:
        app:
          driver: bridge
      volumes:
        db-data:
      
  • 日志与存储驱动
    • 生产建议采用 overlay2 存储驱动,并在 daemon.json 中设置日志轮转,避免磁盘被占满:
      {
        "storage-driver": "overlay2",
        "log-driver": "json-file",
        "log-opts": { "max-size": "100m" }
      }
      
  • 可视化与运维
    • 可使用 Portainer 管理容器:docker run -d -p 9000:9000 --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data --name portainer portainer/portainer

四 本地 IDE 集成与调试

  • PHPStorm 连接 Docker
    • File -> Settings -> Build, Execution, Deployment -> Docker 添加连接,使用 unix:///var/run/docker.sock,点击 Test Connection 验证。
    • 结合项目 Dockerfiledocker-compose.yml,可直接在 IDE 内构建、运行与调试容器化应用。
  • 运行与调试建议
    • 开发阶段优先使用 bind mount 挂载源码,实现热更新;构建阶段使用 多阶段构建 减小镜像体积并提升安全性。

五 常见问题与优化

  • 权限问题
    • 避免每次使用 sudo 执行 Docker 命令:将当前用户加入 docker 组(执行 sudo usermod -aG docker $USER,然后重新登录会话)。
  • 端口冲突
    • 修改 docker rundocker-compose.yml 的端口映射(如将 3000:3000 调整为 8080:3000),或释放占用端口的进程。
  • 容器无法启动
    • 使用 docker logs <container_id> 查看日志定位问题;检查挂载路径、环境变量、配置文件与权限。
  • 资源清理
    • 定期清理无用资源:docker system prune -f(谨慎使用,会删除未使用的容器、网络、镜像与构建缓存)。
  • 版本选择与升级
    • 列出可用版本:yum list docker-ce --showduplicates | sort -r,按需安装指定稳定版本,避免跨大版本跳跃。

0