或切换到Ubuntu系统。
您还可以设置DEBUG=true以启用入口脚本的调试功能,这有助于确定任何配置问题。
如果使用最新的Docker版本和/或禁用selinux仍无法解决问题,请在https://github.com/sameersbn/docker-gitlab/issues%E9%A1%B5%E9%9D%A2%E6%8F%90%E4%BA%A4%E9%97%AE%E9%A2%98%E8%AF%B7%E6%B1%82%E3%80%82
在问题报告中,请确保提供以下信息:
docker version命令的输出docker info命令的输出docker run命令(屏蔽敏感信息)运行GitLab的Docker主机需要至少1GB可用RAM。有关更多信息,请参考GitLab的https://github.com/gitlabhq/gitlabhq/blob/master/doc/install/requirements.md#hardware-requirements%E6%96%87%E6%A1%A3%E3%80%82
镜像的自动构建可在https://hub.docker.com/r/sameersbn/gitlab%E8%8E%B7%E5%8F%96%EF%BC%8C%E8%BF%99%E6%98%AF%E6%8E%A8%E8%8D%90%E7%9A%84%E5%AE%89%E8%A3%85%E6%96%B9%E6%B3%95%E3%80%82
注意:构建版本也可在Quay.io获取
bashdocker pull sameersbn/gitlab:10.2.2
您也可以拉取latest标签,该标签从仓库HEAD构建
bashdocker pull sameersbn/gitlab:latest
或者,您可以在本地构建镜像
bashdocker build -t sameersbn/gitlab github.com/sameersbn/docker-gitlab
最快的启动方式是使用docker-compose。
bashwget https://raw.githubusercontent.com/sameersbn/docker-gitlab/master/docker-compose.yml
为GITLAB_SECRETS_OTP_KEY_BASE、GITLAB_SECRETS_DB_KEY_BASE和GITLAB_SECRETS_SECRET_KEY_BASE生成至少64个字符的随机字符串。这些值的用途如下:
GITLAB_SECRETS_OTP_KEY_BASE用于加密数据库中的2FA密钥。如果丢失或轮换此密钥,所有用户将无法使用2FA登录。GITLAB_SECRETS_DB_KEY_BASE用于加密数据库中的CI密钥变量以及导入凭据。如果丢失或轮换此密钥,将无法使用现有的CI密钥。GITLAB_SECRETS_SECRET_KEY_BASE用于密码重置链接和其他“标准”身份验证功能。如果丢失或轮换此密钥,电子邮件中的密码重置令牌将失效。提示:您可以使用
pwgen -Bsv1 64生成随机字符串,并将其分配为GITLAB_SECRETS_DB_KEY_BASE的值。
使用以下命令启动GitLab:
bashdocker-compose up
或者,您可以按照以下三步指南手动启动gitlab容器以及支持的postgresql和redis容器。
步骤1. 启动postgresql容器
bashdocker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2
步骤2. 启动redis容器
bashdocker run --name gitlab-redis -d \ --volume /srv/docker/gitlab/redis:/var/lib/redis \ sameersbn/redis:latest
步骤3. 启动gitlab容器
bashdocker run --name gitlab -d \ --link gitlab-postgresql:postgresql --link gitlab-redis:redisio \ --publish 10022:22 --publish 10080:80 \ --env 'GITLAB_PORT=10080' --env 'GITLAB_SSH_PORT=10022' \ --env 'GITLAB_SECRETS_DB_KEY_BASE=长且随机的字母数字字符串' \ --env 'GITLAB_SECRETS_SECRET_KEY_BASE=长且随机的字母数字字符串' \ --env 'GITLAB_SECRETS_OTP_KEY_BASE=长且随机的字母数字字符串' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:10.2.2
请参考可用配置参数了解GITLAB_PORT和其他配置选项
注意:请允许几分钟时间让GitLab应用启动。
在浏览器中访问http://localhost:10080,并为root用户账户设置密码。
现在,您应该已经启动并准备好测试GitLab应用。如果要在生产环境中使用此镜像,请继续阅读。
本文档的其余部分将使用docker命令行。您可以根据需要将配置调整为docker-compose.yml文件。
GitLab是代码托管软件,因此当Docker容器停止/删除时,您不希望丢失代码。为避免数据丢失,应在以下路径挂载卷:
/home/git/data注意,如果使用docker-compose方法,这已经配置完成。
SELinux用户还需要更改挂载点的安全上下文,以使其与selinux兼容。
bashmkdir -p /srv/docker/gitlab/gitlab sudo chcon -Rt svirt_sandbox_file_t /srv/docker/gitlab/gitlab
可以通过在docker run命令中指定-v选项来挂载卷。
bashdocker run --name gitlab -d \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:10.2.2
GitLab使用数据库后端存储数据。您可以将此镜像配置为使用MySQL或PostgreSQL。
注意:GitLab HQ推荐使用PostgreSQL而非MySQL
外部PostgreSQL服务器
该镜像还支持使用外部PostgreSQL服务器。这也通过环境变量控制。
sqlCREATE ROLE gitlab with LOGIN CREATEDB PASSWORD 'password'; CREATE DATABASE gitlabhq_production; GRANT ALL PRIVILEGES ON DATABASE gitlabhq_production to gitlab;
此外,自GitLab 8.6.0起,还应在gitlabhq_production数据库中加载pg_trgm扩展。
现在可以启动GitLab应用了。
假设PostgreSQL服务器主机为192.168.1.100
bashdocker run --name gitlab -d \ --env 'DB_ADAPTER=postgresql' --env 'DB_HOST=192.168.1.100' \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:10.2.2
链接PostgreSQL容器
您可以将此镜像与postgresql容器链接以满足数据库需求。链接gitlab镜像时,postgresql服务器容器的别名应设置为postgresql。
如果链接了postgresql容器,仅DB_ADAPTER、DB_HOST和DB_PORT设置会通过链接自动获取。您可能仍需要设置其他数据库连接参数,如DB_NAME、DB_USER、DB_PASS等。
为了说明与postgresql容器的链接,我们将使用https://github.com/sameersbn/docker-postgresql%E9%95%9C%E5%83%8F%E3%80%82%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8postgresql%E9%95%9C%E5%83%8F%E6%97%B6%EF%BC%8C%E5%BA%94%E6%8C%82%E8%BD%BDpostgresql%E6%95%B0%E6%8D%AE%E5%AD%98%E5%82%A8%E5%8D%B7%E3%80%82%E6%9C%89%E5%85%B3%E8%AF%A6%E7%BB%86%E4%BF%A1%E6%81%AF%EF%BC%8C%E8%AF%B7%E5%8F%82%E8%80%83docker-postgresql%E7%9A%84https://github.com/sameersbn/docker-postgresql/blob/master/README.md%E3%80%82
首先,从docker索引拉取postgresql镜像。
bashdocker pull sameersbn/postgresql:9.6-2
为了数据持久化,创建postgresql存储并启动容器。
SELinux用户还需要更改挂载点的安全上下文,以使其与selinux兼容。
bashmkdir -p /srv/docker/gitlab/postgresql sudo chcon -Rt svirt_sandbox_file_t /srv/docker/gitlab/postgresql
运行命令如下:
bashdocker run --name gitlab-postgresql -d \ --env 'DB_NAME=gitlabhq_production' \ --env 'DB_USER=gitlab' --env 'DB_PASS=password' \ --env 'DB_EXTENSION=pg_trgm' \ --volume /srv/docker/gitlab/postgresql:/var/lib/postgresql \ sameersbn/postgresql:9.6-2
上述命令将创建名为gitlabhq_production的数据库,并创建名为gitlab的用户,密码为password,具有gitlabhq_production数据库的访问权限。
现在可以启动GitLab应用了。
bashdocker run --name gitlab -d --link gitlab-postgresql:postgresql \ --volume /srv/docker/gitlab/gitlab:/home/git/data \ sameersbn/gitlab:10.2.2
此处,镜像还将自动从postgresql容器获取DB_NAME、DB_USER和DB_PASS变量,因为它们在postgresql容器的docker run命令中指定。这通过docker链接实现,适用于以下镜像:
内部MySQL服务器
镜像中已移除内部mysql服务器。请使用链接mysql容器或指定与外部mysql服务器的连接。
如果您一直在使用内部mysql服务器,请按照以下说明迁移到链接的mysql容器:
假设您的mysql数据位于/srv/docker/gitlab/mysql
bashdocker run --name gitlab-mysql -d \ --volume /srv/docker/gitlab/mysql:/var/lib/mysql \ sameersbn/mysql:latest
这将启动一个包含您现有mysql数据的mysql容器。现在登录mysql容器,为现有gitlabhq_production数据库创建用户。
现在,您只需使用--link gitlab-mysql:mysql选项将此mysql容器链接到gitlab ci容器,并提供DB_NAME、DB_USER和DB_PASS参数。
有关更多信息,请参考链接MySQL容器。
外部MySQL服务器
该镜像可以配置为使用外部MySQL数据库。启动GitLab镜像时,应通过环境变量指定数据库配置。
在启动GitLab镜像之前,为gitlab创建用户和数据库。
sqlCREATE USER 'gitlab'@'%.%.%.%' IDENTIFIED BY 'password'; CREATE DATABASE IF NOT EXISTS `gitlabhq_production` DEFAULT CHARACTER SET `utf8` COLLATE `utf8_unicode_ci`; GRANT ALL PRIVILEGES ON `gitlabhq_production`.* TO 'gitlab'@'%.%.%.%';
现在可以启动GitLab应用了。
假设mysql服务器主机为192.168.1.100
bashdocker run --name gitlab -d \ --env 'DB_ADAPTER=mysql2' --env 'DB_HOST=192.168.1.100' \ --env 'DB_NAME=gitlabhq_production' \ --env '
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务