从Docker Compose到私有仓库:在CentOS 7上搭建你的第一个容器化微服务‘试验田’
从Docker Compose到私有仓库:在CentOS 7上搭建你的第一个容器化微服务‘试验田’
当开发者第一次接触容器化技术时,往往会被各种概念和工具淹没——Docker镜像、容器编排、私有仓库……这些看似独立的组件,实际上构成了现代微服务开发的基石。本文将带你从零开始,在CentOS 7系统上搭建一个完整的容器化开发环境,不仅包括基础的Docker和Compose工具,还会建立一个带图形界面的私有镜像仓库,最终通过一个实际的Nginx+Redis示例项目验证整个工作流。
1. 环境准备与Docker安装
在开始之前,确保你有一台运行CentOS 7的机器(物理机或虚拟机均可),并具备sudo权限。虽然云服务器是最佳选择,但本地虚拟机同样适用。
1.1 系统基础配置
首先进行系统更新和基础工具安装:
sudo yum update -y
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
对于国内用户,建议替换默认yum源为阿里云镜像以加速下载:
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
sudo curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum makecache
1.2 Docker CE安装
Docker社区版(CE)是我们的首选。添加Docker官方仓库:
sudo yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
安装Docker引擎:
sudo yum install -y docker-ce docker-ce-cli containerd.io
启动Docker服务并设置开机自启:
sudo systemctl start docker
sudo systemctl enable docker
验证安装是否成功:
docker --version
# 预期输出类似:Docker version 20.10.12, build e91ed57
1.3 防火墙与SELinux配置
容器网络需要特殊处理,建议临时关闭防火墙:
sudo systemctl stop firewalld
sudo systemctl disable firewalld
对于SELinux,可以选择禁用或设置为宽容模式:
sudo setenforce 0
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=permissive/' /etc/selinux/config
2. Docker Compose部署与管理
Docker Compose是定义和运行多容器应用的工具,通过YAML文件配置服务关系。
2.1 安装Docker Compose
下载最新稳定版的Docker Compose:
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
设置可执行权限:
sudo chmod +x /usr/local/bin/docker-compose
验证安装:
docker-compose --version
# 预期输出:Docker Compose version v2.5.0
2.2 配置命令补全(可选)
为bash添加自动补全功能:
sudo curl -L https://raw.githubusercontent.com/docker/compose/v2.5.0/contrib/completion/bash/docker-compose -o /etc/bash_completion.d/docker-compose
source ~/.bashrc
3. 搭建私有Docker仓库
私有仓库是企业级容器化部署的核心组件,用于存储和管理内部镜像。
3.1 基础Registry服务
启动一个基础的Registry容器:
docker run -d \
-p 5000:5000 \
--name registry \
--restart=always \
-v /opt/registry:/var/lib/registry \
registry:2
验证服务是否正常运行:
curl http://localhost:5000/v2/_catalog
# 预期输出:{"repositories":[]}
3.2 带UI的Registry部署
使用Docker Compose部署功能更完整的仓库方案:
创建docker-compose.yml文件:
version: '3'
services:
registry:
image: registry:2
volumes:
- ./registry-data:/var/lib/registry
networks:
- registry-net
ui:
image: joxit/docker-registry-ui:latest
ports:
- 8080:80
environment:
- REGISTRY_TITLE=My Private Registry
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
networks:
- registry-net
networks:
registry-net:
启动服务:
docker-compose up -d
访问http://<your-server-ip>:8080即可看到仓库UI界面。
3.3 配置Docker客户端
让Docker信任私有仓库(替换为你服务器的实际IP):
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"insecure-registries": ["your-server-ip:5000"]
}
EOF
重启Docker使配置生效:
sudo systemctl restart docker
4. 实战:部署Nginx+Redis微服务示例
现在我们来验证整个环境,部署一个简单的Web应用组合。
4.1 创建项目结构
建立项目目录:
mkdir nginx-redis-demo && cd nginx-redis-demo
创建docker-compose.yml:
version: '3'
services:
redis:
image: redis:alpine
ports:
- "6379:6379"
volumes:
- redis_data:/data
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- redis
volumes:
redis_data:
创建Nginx配置文件nginx.conf:
worker_processes 1;
events { worker_connections 1024; }
http {
upstream redis-backend {
server redis:6379;
}
server {
listen 80;
location / {
proxy_pass http://redis-backend;
}
}
}
4.2 构建并推送镜像
构建自定义Nginx镜像:
docker build -t your-server-ip:5000/nginx-redis .
推送镜像到私有仓库:
docker push your-server-ip:5000/nginx-redis
4.3 部署与验证
启动服务:
docker-compose up -d
验证服务:
curl http://localhost
# 应该能看到Redis的响应
在私有仓库UI中,现在应该能看到我们推送的nginx-redis镜像。
5. 日常维护与进阶技巧
5.1 仓库数据备份
定期备份仓库数据:
tar czvf registry-backup-$(date +%Y%m%d).tar.gz /opt/registry
5.2 使用Tag管理镜像版本
为镜像打标签:
docker tag nginx:alpine your-server-ip:5000/nginx:1.0
docker push your-server-ip:5000/nginx:1.0
5.3 查看仓库存储用量
检查仓库存储情况:
du -sh /opt/registry
5.4 安全加固建议
- 为仓库启用HTTPS
- 配置基本身份验证
- 定期清理未使用的镜像
这套环境不仅适用于学习,也可以作为小型团队的开发测试平台。在实际使用中,你可能还需要考虑加入监控、日志收集等组件,但这已经为你构建了一个坚实的起点。
更多推荐


所有评论(0)