{{< details >}}

  • Tier: 基础版,专业版,旗舰版
  • Offering: 私有化部署

{{< /details >}}

在 Docker 容器中安装极狐GitLab 时,您可能会遇到以下问题。

诊断潜在问题

以下命令在排查极狐GitLab 实例在 Docker 容器中遇到的问题时非常有用:

读取容器日志:

sudo docker logs gitlab

进入正在运行的容器:

sudo docker exec -it gitlab /bin/bash

500 内部错误

更新 Docker 映像时,您可能会遇到所有路径显示 500 页面的问题。如果发生这种情况,请重启容器:

sudo docker restart gitlab

权限问题

从旧的极狐GitLab Docker 映像更新时,您可能会遇到权限问题。这发生在以前的映像中用户权限未正确保留时。有一个脚本可以修复所有文件的权限。

要修复您的容器,请执行 update-permissions 并在之后重启容器:

sudo docker exec gitlab update-permissions
sudo docker restart gitlab

执行资源 ruby_block 的操作运行时错误

使用 Docker Toolbox 和 Oracle VirtualBox 在 Windows 或 Mac 上运行 Docker 时,以及使用 Docker 卷时,会出现此错误:

Error executing action run on resource ruby_block[directory resource: /data/GitLab]

/c/Users 卷被挂载为 VirtualBox 共享文件夹,不支持所有 POSIX 文件系统功能。目录所有权和权限无法在不重新挂载的情况下更改,因此极狐GitLab 失败。

切换到适用于您的平台的原生 Docker 安装,而不是使用 Docker Toolbox。

如果您无法使用原生 Docker 安装(Windows 10 家庭版,或 Windows 7/8),可以选择设置 NFS 挂载而不是 VirtualBox 共享来解决 Docker Toolbox Boot2docker 的问题。

Linux ACL 问题

如果您在 Docker 主机上使用文件 ACL,则 docker 组需要对卷具有完全访问权限才能使极狐GitLab 工作:

getfacl $GITLAB_HOME

# file: $GITLAB_HOME
# owner: XXXX
# group: XXXX
user::rwx
group::rwx
group:docker:rwx
mask::rwx
default:user::rwx
default:group::rwx
default:group:docker:rwx
default:mask::rwx
default:other::r-x

如果这些值不正确,请使用以下命令设置它们:

sudo setfacl -mR default:group:docker:rwx $GITLAB_HOME

默认组名为 docker。如果您更改了组名,则需要调整该命令。

Docker 容器中的 /dev/shm 挂载空间不足

极狐GitLab 提供了一个 Prometheus 指标端点在 /-/metrics 以公开有关极狐GitLab 健康和性能的统计信息。所需文件写入临时文件系统(例如 /run/dev/shm)。

默认情况下,Docker 为共享内存目录分配 64 MB(挂载在 /dev/shm)。这不足以容纳所有与 Prometheus 指标相关的文件,并会生成如下错误日志:

writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/gauge_all_sidekiq_0-1.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file
writing value to /dev/shm/gitlab/sidekiq/histogram_sidekiq_0-0.db failed with unmapped file

虽然您可以在 管理员 区域关闭 Prometheus 指标,但推荐的解决方案是 安装 时将共享内存设置为至少 256 MB。如果您使用 docker run,可以传递标志 --shm-size 256m。如果您使用 docker-compose.yml 文件,可以设置 shm_size 键。

Docker 容器由于 json-file 耗尽空间

Docker 使用 json-file 默认日志驱动,默认情况下不执行日志轮换。由于缺乏轮换,json-file 驱动存储的日志文件可能会消耗大量磁盘空间,特别是对于生成大量输出的容器。这可能导致磁盘空间耗尽。为了解决此问题,请在可用时使用 journald 作为日志驱动,或者使用具有本地轮换支持的 其他支持的驱动。

启动 Docker 时缓冲区溢出错误

如果收到缓冲区溢出错误,您应清除 /var/log/gitlab 中的旧日志文件:

buffer overflow detected : terminated
xargs: tail: terminated by signal 6

删除旧日志文件有助于修复错误,并确保实例的干净启动。

ThreadError 无法创建线程 操作不允许

can't create Thread: Operation not permitted

此错误发生在使用较新的 glibc 版本构建的容器在不支持 clone3 功能的主机上运行时。在极狐GitLab 16.0 及更高版本中,容器镜像包含了 Ubuntu 22.04 Linux 软件包,该软件包使用较新的 glibc 版本构建。

此问题不会在较新的容器运行时工具中发生,例如 Docker 20.10.10。

要解决此问题,请将 Docker 更新到版本 20.10.10 或更高版本。