没见过这么详细的 Dodker 安装GitLab 步骤

本文档详细介绍了如何在Docker环境下安装和配置GitLab,包括获取Docker加速器,搜索并拉取GitLab镜像,创建数据目录,运行容器,配置GitLab的URL、SSH端口和邮件服务,以及重置root管理员密码。此外,还提供了管理GitLab容器和服务的命令和解决克隆时IP显示问题的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Dodker 安装GitLab

docker 配置GitLab

登录阿里云获取docker加速源

sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
 "registry-mirrors": ["https://km6colp9.mirror.aliyuncs.com"]
}
EOF

重载服务配置

sudo systemctl daemon-reload
sudo systemctl restart docker

以上步骤可以做也可以不做

搜索GitLab镜像

$ docker search gitlab

NAME                                         DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
gitlab/gitlab-ce                             GitLab Community Edition docker image based …   3377                 [OK]
sameersbn/gitlab                             Dockerfile to build a GitLab image for the D…   1172                 [OK]
gitlab/gitlab-runner                         GitLab CI Multi Runner used to fetch and run…   730                  [OK]
gitlab/gitlab-ee                             GitLab Enterprise Edition docker image based…   272                  
twang2218/gitlab-ce-zh                       汉化的 GitLab 社区版 Docker Image                247                   [OK]
jangrewe/gitlab-ci-android                   GitLab CI image for building Android apps       58                   [OK]
edbizarro/gitlab-ci-pipeline-php             Docker images for build and test PHP applica…   37                   
ulm0/gitlab                                  GitLab Docker image for ARM                     36                   
gitlab/gitlab-runner-helper                                                                  34                   
klud/gitlab-runner                           GitLab Runner for ARM devices                   27      
...

拉取GitLab镜像

$ docker pull gitlab/gitlab-ce:latest

# 不指定tag默认拉去latest最新版本

创建docker映射目录

其他教程中都会有这一步,其实当docker run -v …挂载目录后会自动创建以下目录

$ mkdir -p /srv/docker/gitlab/config  # 创建config目录
$ mkdir -p /srv/docker/gitlab/logs  # 创建logs目录
$ mkdir -p /srv/docker/gitlab/data  # 创建data目录

运行容器

$ docker run -d \
-p 8443:443 \ 
-p 8080:80 \
-p 8022:22 \
--name gitlab \
--restart always \
-v /srv/docker/gitlab/config:/etc/gitlab \ # /srv/...这个目录可以换成你本地较大磁盘空间的目录
-v /srv/docker/gitlab/logs:/var/log/gitlab \
-v /srv/docker/gitlab/data:/var/opt/gitlab \
gitlab/gitlab-ce:latest

# -d:后台运行
# --restart: 设置重启方式,always 代表当docker服务重启后,或者gitlab意外停止时,自动重启
# -p:将容器内部端口向外映射
# --name:命名容器名称
# -v:将容器内数据文件夹或者日志、配置等文件夹挂载到宿主机指定目录

端口解释

8443:443

作者是个初学者,也没有搞明白这端口啥意思,查看大佬的博客后,大概可能也许是 “通过https端口创建ssh连接github服务器” 的功能
可以查看GitLab官方文档

8080:80

外部网页访问的端口,如 http://10.10.10.10:8080,就可以登录自己搭建的gitlab

8022:22

gitlab的ssh端口,git clone时需要改变参数,如 git clone ssh://git@10.10.10.10:8022/groups/project.git

获取邮箱授权码

在配置gitlab文件之前先获取发送邮件的邮箱授权码
这里拿QQ邮箱为例

  • 进入 设置 > 账户,找到 POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
  • 开启 POP3/SMTP服务 就可以了,然后会出现一串授权码,复制下来
  • 如果忘了,下面黄色提示框内还有 生成授权码 的按钮
    获取邮箱授权码

修改gitlab映射文件配置

# 在容器外使用如下命令
$ vim /srv/docker/gitlab/gitlab.rb # 是以上映射的config目录


# 配置URL
external_url 'http://10.10.10.10' # 换成自己主机的ip
gitlab_rails['gitlab_ssh_host'] = '10.10.10.10' # 换成自己主机的ip
gitlab_rails['gitlab_shell_ssh_port'] = 8022 # ssh的端口

# 配置邮箱
gitlab_rails['smtp_enable'] = true # 开启 SMTP 功能
gitlab_rails['smtp_address'] = "smtp.qq.com" # 是哪个邮箱的服务,也可以用smtp.163.com
gitlab_rails['smtp_port'] = 465 # 以前用的25,但是会失败,使用默认的就好
gitlab_rails['smtp_user_name'] = "youremail@qq.com" # 自己的邮箱账号
gitlab_rails['smtp_password'] = "gobjzqpsyhbbbefa" # 上面申请的邮箱授权码
gitlab_rails['smtp_authentication'] = "login" 
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['smtp_domain'] = "smtp.qq.com" 
gitlab_rails['gitlab_email_from'] = 'youremail@qq.com' # 发件人信息,必须跟‘smtp_user_name’保持一致,否则报错

进入容器重置GitLab客户端

$ docker exec -it gitlab bash
$ gitlab-ctl reconfigure
$ gitlab-ctl restart

# 也可以在容器外使用如下命令
$ sudo docker exec gitlab gitlab-ctl reconfigure
$ sudo docker exec gitlab gitlab-ctl restart

测试邮件服务是否正常

$ docker exec -it gitlab bash
$ gitlab-rails console
$ Notify.test_email('接收方邮件地址','邮件标题','邮件内容').deliver_now

# 如:
# irb(main):001:0> Notify.test_email('123456789@qq.com','test_email','Hello GitLab!').deliver_now
# 123456789@qq.com邮箱收到邮件表示设置成功

登录管理员账号

进入自己的GitLab网址
第一次进入会让你设置root管理远账号的密码,但是作者没有遇到过
不要慌,先抽支烟压压惊
使用如下操作,重置root账号

$ docker exec -it gitlab bash
$ gitlab-rails console -e production # 注意需要加上 -e,好多教程都是没有的,可以查看GitLab官网
Loading production environment (Rails 4.2.10)
irb(main):001:0> user=User.where(id:1).first
=> #<User id:1 @root>
irb(main):003:0> user.password='9aa9871ouf906' # 密码自定义,要大于等于8位不然不会通过,会有错误提示,不信你可以试试
=> "9aa9871ouf906"
irb(main):004:0> user.password_confirmation='9aa9871ouf906'          
=> "9aa9871ouf906"
irb(main):005:0> user.save!
Enqueued ActionMailer::DeliveryJob (Job ID: 55d5938a-8506-49cc-be8c-6afd666c4efe) to Sidekiq(mailers) with arguments: "DeviseMailer", "password_change", "deliver_now", gid://gitlab/User/1
=> true
irb(main):006:0>

至此配置完成!

补充

管理容器及服务命令

$ docker start gitlab 启动命令
$ docker restart gitlab 重启命令
$ docker stop gitlab 停止命令

$ gitlab-ctl reconfigure  # 重新应用gitlab的配置
$ gitlab-ctl restart    # 重启gitlab服务
$ gitlab-ctl status     # 查看gitlab运行状态
$ gitlab-ctl stop     # 停止gitlab服务
$ gitlab-ctl tail     # 查看gitlab运行日志

gitlab邮箱配置检查

# 检查 ActionMailer 的 delivery_method 参数是否是你设置的值
irb(main):001:0> ActionMailer::Base.delivery_method
=> :smtp
# 检查邮件的设置
irb(main):002:0> ActionMailer::Base.smtp_settings
=> {:address=>"smtp.exmail.qq.com", :port=>465, :user_name=>"yeguan@szhuizhong.cn", :password=>"********", :domain=>"exmail.qq.com", :authentication=>"login", :enable_starttls_auto=>true, :openssl_verify_mode=>"none", :tls=>true}
# 如果有异常之处,可以检查邮件服务对应的日志(例如 /var/log/mail.log)

gitlab各个邮箱设置的区别

primary email

用户注册时的邮箱,默认状况下,通知邮箱也是同一个。可以在个人信息中修改。

notification email

用来接收系统邮件,如果 test、merge、review 通知等,和 primary email 一致就行。

public email

用户展示出来的个人信息,GitLab 并不使用。

ssh key 邮箱

设置公钥的时候是用的这个邮箱。用户将公钥添加到 GitLab 之后,可以在这个公钥的主机上 push 和 pull 代码。用户的commit后,系统鉴别的头像和用户名都和ssh key中的邮箱没有关系。

克隆时IP地址显示为一串数字

原因可能是因为你配置ssh时地址没写对 gitlab_rails['gitlab_ssh_host'] = '10.10.10.10' gitlab_rails['gitlab_shell_ssh_port'] = 8022

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值