Skip to content
Leo的技术分享
Go back

使用 gitlab 搭建 docker 私有仓库

我们知道,gitlab 可以用来管理 git 提交的源代码,此外,gitlab 还集成了 docker registry 的功能,可以用来作为一个 docker 镜像私有仓库使用。

启用 gitlab registry 功能

我们假设已安装好 gitlab,具体安装可参考 《使用 docker 安装 gitlab》

Gitlab 默认不打开 docker registry 的功能,需要修改配置打开。

修改配置 /etc/gitlab/gitlab.rb 文件,将 registry_external_url 的值修改为 http://127.0.0.1:4567

registry_external_url 'http://127.0.0.1:4567'

registry_external_url 这个地址是我们使用 docker 命令进行 pull 或者 push 镜像的仓库地址。

重启 gitlab 后,可以在 gitlab 左侧面板看到 Container Registry 的菜单。

上传镜像

我们以一个常见的 flask 应用为例,说明如何向 gitlab registry 上传镜像。

Flask 应用源代码包括以下代码:

app.py 是 flask 应用的入口代码:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello_world():
    return 'Hello, World!'

为了构建应用的镜像,提供 Dockerfile:

FROM python:3.7-alpine

WORKDIR /code

ENV FLASK_APP app.py
ENV FLASK_RUN_HOST 0.0.0.0

EXPOSE 5000

RUN apk add --no-cache gcc musl-dev linux-headers

COPY requirements.txt requirements.txt
COPY app.py app.py

RUN pip install -r requirements.txt

CMD ["flask", "run"]

requirements.txt 用于安装 python 包:

flask

将上述 flask 的有关源代码提交至 gitlab 的 myweb 项目。

可以看到 myweb 项目左侧菜单已包含 Container Registry 的菜单,并展示了有关该项目有关镜像的使用说明:

按照 gitlab 给出的提示,我们先登录上 gitlab 的 registry:

docker login 127.0.0.1:4567

输入 gitlab 的用户名和密码,便可以成功登录。Gilab registry 与 gitlab 共享相同的用户权限和密码体系。

构建镜像:

docker build -t 127.0.0.1:4567/study/myweb:v1.0 .

镜像的名称格式为 registry host ip:port/group name/project name:tag。

然后执行推送镜像命令:

docker push 127.0.0.1:4567/study/myweb:v1.0

这时可以在 gitlab Container Registry 菜单看到已经推送的镜像:

推送镜像后,我们可以在其他地方下载镜像(下面讲述),并运行:

docker run -d -p 5000:5000 127.0.0.1:4567/study/myweb:v2.0

下载镜像

登录上 gitlab registry 后,可以使用 docker pull 下载镜像:

docker pull 127.0.0.1:4567/study/myweb:v1.0

该命令会从我们搭建的 gitlab registry 下载镜像。

这里需要区分我们平时使用的 docker pull 命令,例如:

docker pull ubuntu

该命令等同于 docker pull docker.io/library/ubuntu,是从 docker 官方 Docker Hub 来下载 ubuntu 镜像。

可以使用 docker images 查看下载到的镜像:

docker images

输出:

REPOSITORY                     TAG                 IMAGE ID            CREATED             SIZE
127.0.0.1:4567/study/myweb     v2.0                72aa3f04d649        11 hours ago        221MB
127.0.0.1:4567/study/myweb     v1.0                f626f22a3fef        12 hours ago        221MB

参考资料


Share this post on:

Previous Post
使用 docker-compose 搭建 prometheus 监控系统
Next Post
使用 docker 安装 gitlab