编写于2025年07月28日 修订于2025年07月28日
1、Win11下载安装Docker
下载安装包:https://www.docker.com/products/docker-desktop
下载完成以后双击安装,安装完成以后重启电脑。
2、更新Linux子系统
在终端执行命令:wsl --update
3、拉取Gitlab镜像
终端执行命令:docker pull swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:latest
4、查看已经下载的镜像
在终端执行命令:docker images
5、部署
docker run --detach ` --hostname localhost ` --publish 18080:18080 --publish 2289:22 ` --name gitlab ` --restart always ` --volume C:/GitLab/config:/etc/gitlab ` --volume C:/GitLab/logs:/var/log/gitlab ` --volume C:/GitLab/data:/var/opt/gitlab ` swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/gitlab/gitlab-ce:latest
参数说明:
--publish 18080:18080 --publish 2289:22 `:自定义端口:HTTP 18080,SSH 2289。
6、修改配置文件
打开 C:\GitLab\config\gitlab.rb
external_url 'http://localhost:18080' # 修改为你的端口 gitlab_rails['gitlab_shell_ssh_port'] = 2289 # 修改SSH端口 nginx['listen_port'] = 18080 # Nginx监听端口
7、重启容器
在终端执行命令:docker restart gitlab
也可以从页面上操作
8、浏览器访问
重启以后耐心等待几分钟再访问。
url:http://localhost:18080
修改root密码见如下命令。
9、其他命令
# 进入gitlab容器 docker exec -it gitlab bash # (在容器内执行)查看gitlab状态 gitlab-ctl status # (在容器内执行)重载配置 gitlab-ctl reconfigure # (在容器内执行)重启 gitlab-ctl restart # (在容器内执行)离开容器 exit # 停止并删除旧容器 docker stop gitlab docker rm gitlab # 查看端口 docker port gitlab # 查看日志 docker logs --tail 50 gitlab # (容器内执行)修改root密码 gitlab-rails console -e production user = User.where(username: 'root').first user.password = '你的密码' user.password_confirmation = '你的密码' user.save! exit
10、问题排查
# 查找占用 18080 端口的进程 Get-Process -Id (Get-NetTCPConnection -LocalPort 18080).OwningProcess Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName ------- ------ ----- ----- ------ -- -- ----------- 863 43 118092 105196 595.50 11724 1 com.docker.backend 180 13 2512 5624 0.11 17772 1 wslrelay wslrelay 是 Windows Subsystem for Linux (WSL) 的端口转发工具,它与 Docker 同时监听 18080 端口,导致冲突,根本原因是 Docker 和 WSL 2 的网络栈冲突。 解决办法: # 终止 wslrelay 进程 Stop-Process -Id 17772 -Force # 重启 Docker 服务:右键托盘区的docker图标,点击restart。 # 重启 GitLab 容器 docker restart gitlab # (管理员权限运行终端)创建防火墙规则 New-NetFirewallRule -DisplayName "GitLab_18080" -Direction Inbound -LocalPort 18080 -Protocol TCP -Action Allow # 查看已创建的规则 Get-NetFirewallRule -DisplayName "GitLab_18080" | Format-List * # 检查规则是否启用 Get-NetFirewallRule -DisplayName "GitLab_18080" | Select-Object Name, DisplayName, Enabled