
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
GitLab CE for ARM已发布到Docker Hub:
该GitLab Docker镜像是一个单体镜像,在单个容器中运行所有必要服务。
GitLab仅为树莓派提供社区版,此Docker镜像基于该版本构建;此外,仅容器化稳定版本。
需安装Docker,请参阅https://docs.docker.com/engine/installation/。
运行镜像:
bashdocker run -d \ --hostname gitlab.example.com \ -p 443:443 -p 80:80 -p 22:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ docker.xuanyuan.run/ulm0/gitlab
这将下载并启动GitLab CE容器,并发布访问SSH、HTTP和HTTPS所需的端口。所有GitLab数据将存储在/srv/gitlab/的子目录中。容器将在系统重启后自动restart。
现在您可以按照启动容器后的说明登录Web界面。
如果您使用SELinux,请运行以下命令:
bashdocker run -d \ --hostname gitlab.example.com \ -p 443:443 -p 80:80 -p 22:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab:Z \ -v /srv/gitlab/logs:/var/log/gitlab:Z \ -v /srv/gitlab/data:/var/opt/gitlab:Z \ docker.xuanyuan.run/ulm0/gitlab
这将确保Docker进程有足够权限在挂载卷中创建配置文件。
GitLab容器使用主机挂载卷存储持久数据:
| 本地位置 | 容器位置 | 用途 |
|---|---|---|
/srv/gitlab/data | /var/opt/gitlab | 存储应用数据 |
/srv/gitlab/logs | /var/log/gitlab | 存储日志 |
/srv/gitlab/config | /etc/gitlab | 存储GitLab配置文件 |
您可以调整这些目录以满足需求。
此容器使用官方Omnibus GitLab包,因此所有配置都在唯一的配置文件/etc/gitlab/gitlab.rb中完成。
要访问GitLab的配置文件,您可以在运行中的容器上下文中启动shell会话。这允许您浏览所有目录并使用您喜欢的文本编辑器:
bashdocker exec -it gitlab /bin/bash
您也可以直接编辑/etc/gitlab/gitlab.rb:
bashdocker exec -it gitlab vi /etc/gitlab/gitlab.rb
打开/etc/gitlab/gitlab.rb后,确保将external_url设置为有效的URL。
要接收来自GitLab的电子邮件,您必须配置https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/smtp.md,因为GitLab Docker镜像未安装SMTP服务器。
您可能还对https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/nginx.md#enable-https感兴趣。
完成所有所需更改后,需要重启容器以重新配置GitLab:
bashdocker restart gitlab
注意: GitLab将在容器启动时自动重新配置。
有关配置GitLab的更多选项,请查看https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/configuration.md。
您可以通过向docker run命令添加环境变量GITLAB_OMNIBUS_CONFIG来预配置GitLab Docker镜像。此变量可包含任何gitlab.rb设置,并在加载容器的gitlab.rb文件之前进行评估。这样您可以轻松配置GitLab的外部URL、数据库配置或https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/files/gitlab-config-template/gitlab.rb.template中的任何其他选项。
注意:GITLAB_OMNIBUS_CONFIG中包含的设置不会写入gitlab.rb配置文件,它们在加载时进行评估。
以下示例在启动容器时设置外部URL并启用LFS:
bashdocker run -d \ --hostname gitlab.example.com \ --env GITLAB_OMNIBUS_CONFIG="external_url 'http://my.domain.com/'; gitlab_rails['lfs_enabled'] = true;" \ -p 443:443 -p 80:80 -p 22:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ docker.xuanyuan.run/ulm0/gitlab
请注意,每次执行docker run命令时,都需要提供GITLAB_OMNIBUS_CONFIG选项。GITLAB_OMNIBUS_CONFIG的内容不会在后续运行之间保留。
还有一些有限的环境变量可用于配置GitLab,记录在https://docs.gitlab.com/ce/administration/environment_variables.html。
启动容器后,您可以访问http://localhost/或如果使用boot2docker则访问<[***]>。Docker容器可能需要一段时间才能开始响应请求。
首次访问GitLab时,系统会要求您设置管理员密码。更改密码后,您可以使用用户名root和设置的密码登录。
要将GitLab升级到新版本,您需要:
停止运行中的容器:
bashdocker stop gitlab
删除现有容器:
bashdocker rm gitlab
拉取新镜像:
bashdocker pull docker.xuanyuan.run/ulm0/gitlab
使用之前指定的选项重新创建容器:
bashdocker run -d \ --hostname gitlab.example.com \ -p 443:443 -p 80:80 -p 22:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ docker.xuanyuan.run/ulm0/gitlab
首次运行时,GitLab将重新配置并更新自身。
我们提供GitLab Docker镜像的标记版本。
要查看所有可用标记,请查看:
要使用特定标记版本,请将ulm0/gitlab替换为您要运行的GitLab版本,例如ulm0/gitlab:10.3.3。
您可以通过修改-p标志使Docker使用您的IP地址并将所有流量转发到GitLab CE容器。
要在IP 1.1.1.1上公开GitLab CE:
bashdocker run -d \ --hostname gitlab.example.com \ -p 1.1.1.1:443:443 \ -p 1.1.1.1:80:80 \ -p 1.1.1.1:22:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ docker.xuanyuan.run/ulm0/gitlab
然后您可以通过http://1.1.1.1/和https://1.1.1.1/访问GitLab实例。
GitLab默认在容器内占用以下端口:
80(HTTP)443(如果配置HTTPS)8080(由Unicorn使用)22(由SSH守护进程使用)注意: 发布端口的格式为
hostPort:containerPort。有关更多信息,请参阅Docker关于[公开传入端口][docker-ports]的文档。
警告: 不要使用端口
8080,否则会发生冲突。此端口已由容器内部运行的Unicorn使用。
如果要为容器使用不同于80(HTTP)或443(HTTPS)的端口,需要向docker run命令添加单独的-p指令。
例如,要在端口8929上公开Web界面,在端口2289上公开SSH服务,请使用以下docker run命令:
bashdocker run -d \ --hostname gitlab.example.com \ -p 8929:80 -p 2289:22 \ --name gitlab \ --restart always \ -v /srv/gitlab/config:/etc/gitlab \ -v /srv/gitlab/logs:/var/log/gitlab \ -v /srv/gitlab/data:/var/opt/gitlab \ docker.xuanyuan.run/ulm0/gitlab
然后需要相应配置gitlab.rb:
设置external_url:
sh# 对于HTTP external_url "http://gitlab.example.com:8929" 或 # 对于HTTPS(注意https) external_url "https://gitlab.example.com:8929"
有关更多信息,请参阅https://gitlab.com/gitlab-org/omnibus-gitlab/tree/master/doc/settings/nginx.md。
设置gitlab_shell_ssh_port:
rbgitlab_rails['gitlab_shell_ssh_port'] = 2289
按照上述示例,您将能够通过Web浏览器在<hostIP>:8929访问GitLab,并通过端口2289使用SSH推送。
使用不同端口的docker-compose.yml示例可在docker-compose部分找到。
读取容器日志:
bashdocker logs gitlab
进入运行中的容器:
bashdocker exec -it gitlab /bin/bash
在容器内,您可以像管理https://gitlab.com/gitlab-org/omnibus-gitlab/blob/master/README.md一样管理GitLab容器。
使用https://docs.docker.com/compose/,您可以轻松配置、安装和升级基于Docker的GitLab安装。
https://docs.docker.com/compose/install/Docker Compose
创建docker-compose.yml文件(或下载示例):
yamlweb: image: 'docker.xuanyuan.run/ulm0/gitlab' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'https://gitlab.example.com' # 在此处添加任何其他gitlab.rb配置,每行一个 ports: - '80:80' - '443:443' - '22:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab'
确保您位于docker-compose.yml所在的目录,并运行docker-compose up -d启动GitLab
阅读"预配置Docker容器"以了解GITLAB_OMNIBUS_CONFIG变量的工作方式。
以下是另一个docker-compose.yml示例,GitLab在自定义HTTP和SSH端口上运行。注意GITLAB_OMNIBUS_CONFIG变量如何与ports部分匹配:
yamlweb: image: 'docker.xuanyuan.run/ulm0/gitlab' restart: always hostname: 'gitlab.example.com' environment: GITLAB_OMNIBUS_CONFIG: | external_url 'http://gitlab.example.com:9090' gitlab_rails['gitlab_shell_ssh_port'] = 2224 ports: - '9090:9090' - '2224:22' volumes: - '/srv/gitlab/config:/etc/gitlab' - '/srv/gitlab/logs:/var/log/gitlab' - '/srv/gitlab/data:/var/opt/gitlab'
这与使用-p 9090:9090 -p 2224:22相同。
如果您已使用docker-compose安装GitLab,只需运行docker-compose pull和docker-compose up -d即可下载新版本并升级GitLab实例。
GitLab Docker镜像也可以部署到各种容器调度平台。
在树莓派3或任何其他ARM开发板上运行镜像可能需要一些sysctl值才能正常运行并获得良好性能。
您只需在/etc/sysctl.conf的末尾添加以下内容:
shkernel.sem = 250 32000 32 262 kernel.shmall = 1048575 kernel.shmmax = 4294967295 net.core.somaxconn = 1024
可以使用nano或vim完成(例如sudo nano /etc/sysctl.conf)。
完成后,需要将这些值加载到系统中,运行cat /etc/sysctl.conf /etc/sysctl.d/*.conf | sudo sysctl -e -p -,主机将准备好运行GitLab docker镜像。
更新Docker镜像时,您可能会遇到所有路径显示500页面的问题。如果发生这种情况,请尝试运行docker restart gitlab重启容器以解决问题。
从较旧的GitLab Docker镜像更新时,您可能会遇到权限问题。这是因为以前镜像中的用户未正确保留。有一个脚本可以修复所有文件的权限。
要修复容器,只需执行update-permissions,然后重启容器:
bashdocker exec gitlab update-permissions docker restart gitlab
[docker-
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务
以下是 ulm0/gitlab 相关的常用 Docker 镜像,适用于 不同场景 等不同场景: