【实战指南】在openEuler 22.03上部署Docker Compose:从环境准备到一键启动

张开发
2026/4/8 11:21:06 15 分钟阅读

分享文章

【实战指南】在openEuler 22.03上部署Docker Compose:从环境准备到一键启动
1. 环境准备为openEuler 22.03打好基础在国产操作系统openEuler 22.03上部署Docker Compose之前我们需要先确保系统环境满足基本要求。我曾在多个项目中遇到过因为环境配置不当导致的安装失败所以这里特别强调几个关键点。首先检查系统版本在终端执行cat /etc/os-release正常应该看到包含openEuler 22.03的标识信息。我遇到过有开发者误装了其他版本导致后续步骤报错的情况这个简单的检查能避免很多问题。内存和存储空间是另一个需要关注的重点。建议系统至少配备2GB内存实测1GB也能运行但性能较差和20GB可用磁盘空间。可以用以下命令快速检查free -h df -h网络连接也需要特别测试因为后续需要从GitHub下载Docker Compose二进制文件。我建议先执行curl -I https://github.com确保返回HTTP 200状态码。曾经有客户因为企业网络策略限制导致下载失败浪费了大量时间排查。2. 安装Docker引擎容器化的基石Docker Compose需要依赖Docker引擎才能正常工作这个环节经常被新手忽略。在openEuler上安装Docker有些特殊注意事项我总结了自己踩坑后的最佳实践。首先添加必要的软件源sudo dnf config-manager --add-repo https://mirrors.huaweicloud.com/repository/conf/openeuler_x86_64.repo然后安装基础依赖包sudo dnf install -y device-mapper-persistent-data lvm2 git接下来是安装Docker CE的核心步骤sudo dnf install -y docker-ce docker-ce-cli containerd.io启动Docker服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker验证安装是否成功sudo docker run hello-world看到Hello from Docker!的输出就说明安装正确。我在实际部署中发现有时会因为SELinux配置导致权限问题如果遇到可以暂时禁用SELinux测试sudo setenforce 03. 获取Docker Compose选择正确的版本Docker Compose现在主要分为V1和V2两个版本它们的兼容性和使用方式有很大区别。根据我的经验新项目都应该使用V2版本因为V1已经在2023年停止维护。首先确定系统架构uname -s -m常见的输出可能是Linux x86_64或Linux aarch64这决定了我们要下载哪个版本的二进制文件。官方推荐的下载方式是直接从GitHub获取sudo curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose这里有个小技巧我习惯先下载到临时目录检查后再移动避免直接覆盖重要文件curl -L https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m) -o /tmp/docker-compose file /tmp/docker-compose # 检查文件类型 sudo mv /tmp/docker-compose /usr/local/bin/docker-compose4. 配置与权限确保安全可用安装完二进制文件后还需要进行一些必要的配置才能使Docker Compose正常工作。这部分经常被教程忽略但实际使用中却很重要。首先设置可执行权限sudo chmod x /usr/local/bin/docker-compose然后创建符号链接以便直接使用docker compose命令注意V2版本的新语法sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose验证安装是否成功docker-compose version正常应该显示类似Docker Compose version v2.23.0的版本信息。我强烈建议将当前用户加入docker组避免每次都要sudosudo usermod -aG docker $USER newgrp docker # 立即生效5. 测试运行验证完整工作流为了确保所有组件都能协同工作我们可以用一个简单的测试项目来验证。这里我准备了一个Nginx的示例这也是我常用的测试方法。创建项目目录mkdir ~/compose-test cd ~/compose-test编写docker-compose.yml文件version: 3.8 services: web: image: nginx:alpine ports: - 8080:80 volumes: - ./html:/usr/share/nginx/html创建测试页面mkdir html echo h1openEuler Docker Compose测试成功!/h1 html/index.html启动服务docker-compose up -d验证服务curl http://localhost:8080应该能看到我们创建的测试页面内容。停止并清理测试环境docker-compose down6. 常见问题排查避坑指南在实际部署过程中可能会遇到各种问题。根据我的经验整理了几个最常见的问题和解决方法。问题1权限被拒绝Got permission denied while trying to connect to the Docker daemon socket解决方法sudo chmod 666 /var/run/docker.sock或者更安全的做法是将用户加入docker组如前面所述。问题2版本不兼容ERROR: Version in ./docker-compose.yml is unsupported这是因为docker-compose.yml中指定的版本与安装的Docker Compose版本不匹配。可以查看支持的版本docker-compose version然后调整yml文件中的version字段。问题3网络超时Failed to connect to github.com port 443: Connection timed out这可能是因为网络环境限制。可以尝试sudo mkdir -p /etc/systemd/system/docker.service.d sudo tee /etc/systemd/system/docker.service.d/http-proxy.conf EOF [Service] EnvironmentHTTP_PROXYhttp://proxy.example.com:8080/ EnvironmentHTTPS_PROXYhttp://proxy.example.com:8080/ EOF sudo systemctl daemon-reload sudo systemctl restart docker7. 进阶配置优化使用体验基础安装完成后还可以进行一些优化配置提升使用体验。这些技巧来自我在生产环境中的实际经验。配置命令补全sudo curl -L https://raw.githubusercontent.com/docker/compose/$(docker-compose version --short)/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose source ~/.bashrc设置别名简化常用命令echo alias dcdocker-compose ~/.bashrc echo alias dcupdocker-compose up -d ~/.bashrc echo alias dcdowndocker-compose down ~/.bashrc source ~/.bashrc配置日志轮转sudo tee /etc/logrotate.d/docker-compose EOF /var/lib/docker/containers/*/*.log { rotate 7 daily compress delaycompress missingok copytruncate } EOF性能调优建议增加Docker守护进程的内存限制配置更快的存储驱动如overlay2调整容器日志大小限制8. 实际应用案例部署WordPress为了展示Docker Compose在实际项目中的应用我们以部署WordPress为例。这是我经常用来演示的经典案例。创建项目目录mkdir ~/wordpress cd ~/wordpress编写docker-compose.ymlversion: 3.8 services: db: image: mysql:5.7 volumes: - db_data:/var/lib/mysql restart: always environment: MYSQL_ROOT_PASSWORD: example_rootpass MYSQL_DATABASE: wordpress MYSQL_USER: wordpress MYSQL_PASSWORD: example_dbpass wordpress: depends_on: - db image: wordpress:latest ports: - 8000:80 restart: always environment: WORDPRESS_DB_HOST: db:3306 WORDPRESS_DB_USER: wordpress WORDPRESS_DB_PASSWORD: example_dbpass WORDPRESS_DB_NAME: wordpress volumes: - ./wp-content:/var/www/html/wp-content volumes: db_data:启动服务docker-compose up -d访问http://localhost:8000即可开始WordPress的安装向导。这个例子展示了如何使用Docker Compose管理多个关联容器包括数据库和Web应用。

更多文章