docker 部署 gitlab

76 阅读3分钟

拉取镜像

docker pull gitlab/gitlab-ce:latest

查看镜像

docker images                        

REPOSITORY                                                          TAG              IMAGE ID       CREATED         SIZE
stirlingtools/stirling-pdf                                          latest           ec0290ba5c2a   13 days ago     2.09GB
gitlab/gitlab-runner                                                latest           def4bcd136f2   4 weeks ago     314MB
registry.gitlab.com/gitlab-org/gitlab-runner/gitlab-runner-helper   x86_64-v18.3.0   c909dca3aaae   4 weeks ago     89.6MB
gitlab/gitlab-ce                                                    latest           db5c72135fb3   4 weeks ago     3.75GB
sonatype/nexus3                                                     latest           4e1de2def691   4 weeks ago     728MB
registry.gitlab.com/gitlab-org/cli                                  latest           d4a39a61254e   5 weeks ago     92.2MB
hello-world                                                         latest           1b44b5a3e06a   5 weeks ago     10.1kB
node                                                                21               5c8697e82213   16 months ago   1.1GB
node                                                                14               1d12470fa662   2 years ago     912MB

启动容器

# 启动容器
docker run \
 -itd  \
 -p 9980:80 \
 -p 9922:22 \
 -v /home/gitlab/etc:/etc/gitlab  \
 -v /home/gitlab/log:/var/log/gitlab \
 -v /home/gitlab/opt:/var/opt/gitlab \
 --restart always \
 --privileged=true \
 --name gitlab \
 gitlab/gitlab-ce

各个参数的含义如下:

  1. -itd:这是三个参数的组合

    • -i:保持标准输入打开,允许交互
    • -t:分配一个伪终端(terminal)
    • -d:后台运行容器,并返回容器 ID
  2. 端口映射参数

    • -p 9980:80:将容器内的 80 端口(GitLab 的 Web 界面默认端口)映射到宿主机的 9980 端口
    • -p 9922:22:将容器内的 22 端口(SSH 服务端口)映射到宿主机的 9922 端口
  3. 数据卷挂载参数(用于持久化存储 GitLab 数据)

    • -v /home/gitlab/etc:/etc/gitlab:将 GitLab 的配置文件目录挂载到宿主机的/home/gitlab/etc
    • -v /home/gitlab/log:/var/log/gitlab:将 GitLab 的日志目录挂载到宿主机的/home/gitlab/log
    • -v /home/gitlab/opt:/var/opt/gitlab:将 GitLab 的数据目录挂载到宿主机的/home/gitlab/opt
  4. 其他参数

    • --restart always:设置容器的重启策略为 "总是重启",即使宿主机重启也会自动启动该容器
    • --privileged=true:授予容器特权模式,使其拥有更多的系统权限(GitLab 某些功能需要)
    • --name gitlab:为容器指定一个名称 "gitlab",方便后续管理
    • gitlab/gitlab-ce:指定要运行的镜像,这里使用的是 GitLab 社区版镜像

容器内参数调整

以下操作都在容器内进行

  1. 进入容器内
docker exec -it gitlab /bin/bash

2.编辑 gitlab 配置文件

2.1 找到以下配置项按照你自己的 ip 进行配置

vi /etc/gitlab/gitlab.rb
# gitlab 访问 ip 地址或域名,默认为80端口
external_url 'http://172.24.8.211'
# ssh 主机 ip
gitlab_rails['gitlab_ssh_host'] = '172.24.8.211'
# ssh 连接端口
gitlab_rails['gitlab_shell_ssh_port'] = 9922

2.2 让配置生效

gitlab-ctl reconfigure

2.3 修改容器的端口

vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab:                                                                                            
    ## Web server settings (note: host is the FQDN, do not include http://)                            
    host: 172.24.8.211  # 此处自动映射 gitlab.rb 文件中的配置                                                                               
    port: 9980   # 改这里端口                                                                                      
    https: false   

2.4 重启服务

gitlab-ctl restart

2.5 退出容器

exit

浏览器中查看 gitlab

需等待一会等服务完全启动

open http://172.24.8.211:9980

修改初始密码

进入容器中,查看初始密码,得到密码后,首次登陆后,修改初始密码

sudo docker exec -it gitlab grep 'Password:' /etc/gitlab/initial_root_password