news 2026/5/1 11:04:39

Docker 离线安装 GitLab 完整步骤

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Docker 离线安装 GitLab 完整步骤

你需要实现 Docker 环境下 GitLab 的离线部署,核心思路是先在有网络环境准备镜像和必要文件,再拷贝到离线机器进行部署,以下是分步详细操作:

一、有网络机器:准备 GitLab 镜像(关键前置步骤)

离线安装的核心是先获取 GitLab 镜像包,因为离线机器无法直接从 Docker Hub 拉取。

1. 拉取 GitLab 官方镜像

推荐使用社区版(CE),指定稳定版本(避免最新版兼容性问题),命令如下:

# 拉取 GitLab CE 稳定版(示例:16.8.1,可替换为其他稳定版本)dockerpull gitlab/gitlab-ce:16.8.1-ce.0

2. 导出镜像为 tar 包(用于离线传输)

将拉取的镜像导出为本地 tar 文件,方便拷贝到离线机器,命令如下:

# 导出镜像:格式 docker save -o [本地输出tar包路径] [镜像名:标签]dockersave -o /root/gitlab-ce-16.8.1.tar gitlab/gitlab-ce:16.8.1-ce.0

执行后,在/root目录下会生成gitlab-ce-16.8.1.tar镜像包,后续将该文件拷贝到离线机器。

二、离线机器:部署前准备

1. 拷贝镜像包到离线机器

通过 U 盘、移动硬盘、内网传输(若有内网互通)等方式,将gitlab-ce-16.8.1.tar拷贝到离线机器的任意目录(示例:/root目录)。

2. 导入 GitLab 镜像

在离线机器上,使用docker load命令导入镜像包,命令如下:

# 导入镜像:格式 docker load -i [本地tar包路径]dockerload -i /root/gitlab-ce-16.8.1.tar

导入完成后,可通过docker images命令验证,能看到gitlab/gitlab-ce:16.8.1-ce.0镜像即表示导入成功。

3. 创建本地挂载目录(持久化数据/配置/日志)

GitLab 的配置、数据、日志需要持久化到本地(避免容器删除后数据丢失),创建三个专属目录,命令如下:

# 创建根目录mkdir-p /data/gitlab# 分别创建配置、数据、日志目录mkdir-p /data/gitlab/config# 配置文件目录mkdir-p /data/gitlab/data# 数据存储目录mkdir-p /data/gitlab/logs# 日志文件目录

同时,赋予目录足够权限(避免容器读写失败):

chmod-R777/data/gitlab

三、离线机器:启动 GitLab 容器

使用docker run命令启动容器,核心配置包含端口映射目录挂载访问地址配置,完整命令如下:

dockerrun -d\--name gitlab\--restart always\--privileged=true\-p80:80\-p443:443\-p2222:22\-v /data/gitlab/config:/etc/gitlab\-v /data/gitlab/data:/var/opt/gitlab\-v /data/gitlab/logs:/var/log/gitlab\-eGITLAB_OMNIBUS_CONFIG="external_url 'http://192.168.1.100'; gitlab_rails['gitlab_shell_ssh_port'] = 2222;"\gitlab/gitlab-ce:16.8.1-ce.0

命令参数说明(关键)

  1. --name gitlab:指定容器名称为 gitlab,方便后续管理
  2. --restart always:容器异常退出或服务器重启后自动启动
  3. --privileged=true:赋予容器特权,避免权限不足问题
  4. 端口映射:
    • 80:80:主机 80 端口映射容器 80 端口(HTTP 访问端口)
    • 443:443:主机 443 端口映射容器 443 端口(HTTPS 访问端口,若不需要可删除)
    • 2222:22:主机 2222 端口映射容器 22 端口(SSH 克隆端口,避免与主机 22 端口冲突)
  5. 目录挂载:对应前面创建的三个本地目录,实现数据持久化
  6. GITLAB_OMNIBUS_CONFIG:核心配置
    • external_url 'http://192.168.1.100':指定 GitLab 访问地址(替换为你的离线机器内网 IP)
    • gitlab_rails['gitlab_shell_ssh_port'] = 2222:指定 SSH 克隆端口(与主机映射的 2222 端口一致)

四、离线机器:GitLab 初始化与访问

1. 等待容器初始化完成

GitLab 启动后需要一定时间初始化(约 5-10 分钟,视机器配置而定),可通过以下命令查看启动日志,确认是否正常:

# 实时查看 GitLab 容器日志dockerlogs -f gitlab

当日志中出现gitlab Reconfigured!时,表示初始化完成,可停止日志查看(Ctrl+C)。

2. 获取 root 初始密码

GitLab 初始化完成后,root 初始密码存放在容器内的指定文件中,通过以下命令获取:

# 进入容器查看密码文件,或直接读取密码dockerexec-it gitlabcat/etc/gitlab/initial_root_password

执行后,会显示一串随机密码(注意:密码有效期为 24 小时,需及时登录修改)。

3. 访问 GitLab 并修改密码

  1. 打开浏览器,输入之前配置的external_url(示例:http://192.168.1.100),即可进入 GitLab 登录页面
  2. 使用用户名root和上述获取的初始密码登录
  3. 登录后,系统会提示修改初始密码,按照提示设置新密码即可完成部署

五、后续维护常用命令

# 重启 GitLab 容器dockerrestart gitlab# 停止 GitLab 容器dockerstop gitlab# 查看 GitLab 容器状态dockerps|grepgitlab# 进入 GitLab 容器内部(用于修改配置等操作)dockerexec-it gitlab /bin/bash

总结

  1. 离线安装核心:有网机器拉取+导出镜像,离线机器导入+部署
  2. 关键配置:本地目录挂载(持久化数据)、端口映射(避免冲突)、external_url配置(访问地址)
  3. 初始化要点:等待gitlab Reconfigured!日志、通过initial_root_password获取初始密码、及时修改 root 密码
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/25 2:09:24

【实战】 SAAS租户表结构设计

SAAS租户表结构设计 请关注公众号【碳硅化合物AI】 设计说明 本文档定义SAAS多租户平台的核心表结构,遵循数据库规范,包含认证、租户、组织、用户、角色、权限、菜单、按钮、日志、配置等表的设计。 基础表结构 0. 认证用户表 (auth_user) 认证用户…

作者头像 李华
网站建设 2026/4/30 20:37:44

[独家原创]VMD-KPCA-CCO-CNN-BiLSTM-Attention多变量时序预测(多输入单输出)matlab

目录 1、代码简介 2、代码运行结果展示 3、代码获取 1、代码简介 [独家原创]VMD-KPCA-CCO-CNN-BiLSTM-Attention多变量时序预测 (多输入单输出) 基于变分模态分解-核主成分分析-杜鹃鲶鱼算法-卷积神经网络-长短期记忆网络-注意力机制多变量时序预测 matlab代码 1.数据采用…

作者头像 李华
网站建设 2026/5/1 9:59:17

applyMatrix H 门的两种方式

四个 qubits 的index 分别是0,1,2,3, 在1和2qubits 上作用 h门,数学表达方式是怎么样的?是否可以分2次,分别将h门作用在1和2qubits?效果是否相同呢?这是量子门在多个量子比特上的作用方式问题。1. 数学表达方式情况A&a…

作者头像 李华
网站建设 2026/5/1 9:54:19

git branch管理功能开发:为PyTorch-CUDA-v2.8添加新模块

使用 Git 分支管理为 PyTorch-CUDA-v2.8 添加新模块的工程实践 在深度学习项目日益复杂的今天,一个常见的挑战是:如何在不破坏主干训练流程的前提下,安全地引入新功能?比如,团队中有人想为现有的 PyTorch 模型添加自定…

作者头像 李华