news 2026/2/25 22:13:12

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/2/15 11:16:19

anaconda配置pytorch环境变量失败?镜像免去此类烦恼

PyTorch-CUDA-v2.8 镜像:告别 Anaconda 环境配置的“玄学”时代 在深度学习项目启动的第一天,你是否也经历过这样的场景?满怀信心地打开终端,准备搭建 PyTorch 环境,结果 conda install 卡在“Solving environment”长…

作者头像 李华
网站建设 2026/2/25 20:54:25

jupyter lab替代notebook:在PyTorch-CUDA-v2.8中体验高级IDE

JupyterLab:在 PyTorch-CUDA-v2.8 中重构深度学习开发体验 如今,一个研究员打开电脑准备训练新模型时,最不想面对的不是复杂的网络结构,而是——“为什么 torch.cuda.is_available() 又是 False?” 环境配置失败、依赖…

作者头像 李华
网站建设 2026/2/25 9:30:35

高并发缓存一致性实战:Cache Aside、Write Through、Read Through 选型与落地

高并发缓存一致性实战:Cache Aside、Write Through、Read Through 选型与落地 一、为什么高并发下缓存一致性这么难 核心矛盾在于:数据库与缓存的两次写不是原子操作,而请求执行顺序在并发场景下不可控,导致短暂甚至较长时间的数据…

作者头像 李华
网站建设 2026/2/24 7:10:28

【卫星】基于多传感器数据融合的 GNSS 欺骗检测,通过对比GNSS与IMU、轮速编码器、磁力计的速度航向数据, “误差阈值 + 多传感器投票机制识别GNSS欺骗附matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码获取及仿…

作者头像 李华
网站建设 2026/2/3 7:39:12

计算机Java毕设实战-基于web的中医诊所预约挂号系统设计与实现医师出诊信息公示、分时段精准预约、候诊队列实时更新【完整源码+LW+部署说明+演示视频,全bao一条龙等】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华