GitLab 中国发行版如何设置镜像拉取策略?

最近在用极狐GitLab(极狐GitLab 可以理解为 GitLab 在中国的发行版) CI/CD 的时候遇到一个问题:CI/CD 中有一个 stage 需要拉取 dockerhub 上的镜像,但是由于 dockerhub 在国内的访问不是很顺畅,经常发生 timeout 的情况

为了解决这个问题,我先把我需要的镜像 docker:20.10.7-dind 用某种方式拉取到 Runner 所在的服务器上,然后在 CI/CD Pipeline 中将镜像拉取策略配置为 if-no-presents。

极狐GitLab CI 的镜像拉取策略有三种:

  • always:每次构建都去拉取新的镜像,这是默认的拉取策略。
  • if-not-present: 当构建所需的镜像在本地没有时,才会去拉取镜像。
  • never:只使用本地镜像,从来不去拉取镜像。

.gitlab-ci.yml 文件的内容如下:

build-image:
  image: 
    name: docker:20.10.7-dind
    pull_policy: if-not-present
  stage: build
  tags:
    - gitlab
  script:
    - echo "Hello world!"

修改完毕之后重新运行 CI/CD 流水

### 安装和配置 GitLab #### 准备工作环境 为了确保GitLab能够在飞牛服务器上顺利运行,需确认服务器满足最低硬件需求以及操作系统兼容性。通常建议至少配备2核CPU、4GB内存,并推荐使用Linux发行版如Ubuntu LTS作为基础系统。 #### 配置Docker环境 由于提到通过`docker exec -it gitlab ...`这样的命令来执行操作[^1],说明将采用Docker容器化的方式来部署GitLab实例。因此首先要保证目标机器已正确安装并启动了Docker服务。如果遇到镜像缓慢甚至停滞的问题,则可能是因为网络连接不稳定或是访问官方源受限所致;此时可以通过编辑`/etc/docker/daemon.json`文件添加国内加速器地址的方式改善这一状况[^4]。 ```json { "registry-mirrors": ["https://<your_mirror>.mirror.aliyuncs.com"] } ``` 重启Docker守护进程使更改生效: ```bash sudo systemctl restart docker ``` #### 获GitLab Docker镜像 利用Docker Hub或其他可信来源获最新的稳定版GitLab CE(社区版)或EE(企业版)。考虑到可能存在网络限制,在此之前应该已经设置好了合适的镜像代理或者私有仓库路径,就像下面的例子一样指定特定IP地址和端口下的自定义注册表位置[^2]。 ```bash docker pull registry.gitlab.com/gitlab-org/gitlab-ce:latest # 或者对于已有内部镜像的情况下 docker tag <image_id> your_private_registry_path/gitlab-ce:latest ``` #### 启动GitLab容器 创建一个新的名为`gitlab`的数据卷用于持久存储数据,并基于上述准备好的镜像启动一个新容器。这里假设外部可访问的服务端口号分别为HTTP(80), SSH(22),并且启用了SMTP邮件发送功能以便于账户激活等功能正常使用。 ```bash docker run --detach \ --hostname gitlab.example.com \ --publish 443:443 --publish 80:80 --volume /srv/gitlab/config:/etc/gitlab \ --volume /srv/gitlab/logs:/var/log/gitlab \ --volume /srv/gitlab/data:/var/opt/gitlab \ gitlab/gitlab-ce:latest ``` 等待几分钟让初始化过程完成之后就可以打开浏览器输入对应的域名/IP查看初始向导页面了。 #### 导入现有项目库 如果有预先备份下来的Git仓库目录结构想要导入进来的话,可以借助Rake任务实现批量迁移动作。 ```bash docker exec -u git -H bundle exec rake gitlab:import:repos RAILS_ENV=production ``` 以上就是在飞牛平台之上构建起一套完整的GitLab开发协作系统的概览介绍。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值