GitLab 安装
#创建容器数据卷映射目录
mkdir -p /usr/docker/gitlab/config
mkdir -p /usr/docker/gitlab/logs
mkdir -p /usr/docker/gitlab/data
#目录授权
chmod 777 -R /usr/docker/gitlab/*
#直接复制可用(记得改下宿主机ipv4,不知道怎么看,输入ip addr)
docker run -d --hostname 宿主机ipv4 -p 8443:443 -p 8080:80 -p 8222:22 --name gitlab --restart=always -v /usr/docker/gitlab/config:/etc/gitlab -v /usr/docker/gitlab/logs:/var/log/gitlab -v /usr/docker/gitlab/data:/var/opt/gitlab --shm-size 256m --privileged=true gitlab/gitlab-ce:16.9.1-ce.0
参数讲解
-d
以守护进程运行
--hostname
设置容器内GitLab实例的主机名为宿主机IP(需替换为实际IP),GitLab会基于此生成访问URL。
-p 8443:443
将容器HTTPS端口443映射到宿主机的8443(适合宿主机443被占用时)。
-p 8080:80
将容器HTTP端口80映射到宿主机的8080(默认HTTP端口)。
-p 8222:22
将容器SSH端口22映射到宿主机的8222(用于Git SSH协议操作)。
--name
指定容器名为gitlab,便于后续管理。
restart=always
容器退出时自动重启(如宿主机重启后也会自动恢复)
-v /usr/docker/gitlab/config:/etc/gitlab
挂载GitLab配置文件目录(如gitlab.rb )。
-v /usr/docker/gitlab/logs:/var/log/gitlab
持久化日志文件。
-v /usr/docker/gitlab/data:/var/opt/gitlab
存储应用数据(仓库、数据库等)。
--shm-size
设置共享内存大小为256MB(GitLab Sidekiq等服务需要)
--privileged=true
容器获得root权限
登录
地址:http://192.168.29.128:8080/
账号:root
密码:/usr/docker/gitlab/config/initial_root_password 文件里面找到(初始密码到文件获取)
修改初始密码
graph LR
A[右上角头像] --> B[Preferences]
B --> C[左侧菜单"Password"]
C --> D[输入当前密码+新密码]
D --> E[保存]
修改为中文
graph TB
A[点击右上角头像] --> B[选择"Preferences"]
B --> C[找到"Language"下拉菜单]
C --> D[选择"简体中文"]
D --> E[保存设置]
登录后效果图

修改克隆地址
为了实现如下图效果,地址上自动加上端口号(因为在 docker 内运行)

修改配置
#进入docker容器内部
docker exec -it gitlab bash
#编辑gitlab配置文件
vi /etc/gitlab/gitlab.rb
# 修改SSH地址
external_url 'http://192.168.29.128'
gitlab_rails['gitlab_ssh_host'] = '192.168.29.128'
gitlab_rails['gitlab_shell_ssh_port'] = 8222
# 优化内存暂用高(可降低约 2G 内存,生产环境不建议)
puma['worker_processes'] = 0
puma['min_threads'] = 1
puma['max_threads'] = 2
sidekiq['max_concurrency'] = 10
#保存退出
按ESC键 输入:wq
#重启加载 gitlab 配置文件
gitlab-ctl reconfigure
# 修改http和ssh配置
vi /opt/gitlab/embedded/service/gitlab-rails/config/gitlab.yml
gitlab:
host: 192.168.124.194
port: 8080 # 这里改为前面启动容器 http 映射的端口:8080
https: false
#重启gitlab服务
gitlab-ctl restart
#退出容器
exit
最后刷新一下 gitlab ,遇到 502 页面不用慌,代表服务正在启动中,等一会就好了(会自动刷新)。

至此 docker 里面安装GitLab 完成。