Docker启动gitlab后22端口被占用如何解决
作者:AlbertS
前言
这两天一直在研究Docker启动gitlab的问题,邮件问题暂时告一段落,当真正开始使用gitlab克隆的时候发现,之前22端口被占用无法启动,我就用2022端口做了一个映射,但是在gitab界面上提供的克隆地址类似这样 git@gitlab.gameup.com:games/xxx.git
,丝毫没有端口 2022 的影子,执行 git clone git@gitlab.gameup.com:games/xxx.git
果然不可下载,所以搜索了一圈解决方案总结在此,方便日后查找。
Docker启动参数
docker run --detach \ --hostname gitlab.gameup.com \ --publish 443:443 --publish 80:80 --publish 2022:22 \ --name gitlab \ --restart always \ --volume /export/docker/gitlab/config:/etc/gitlab \ --volume /export/docker/gitlab/logs:/var/log/gitlab \ --volume /export/docker/gitlab/data:/var/opt/gitlab \ registry.cn-hangzhou.aliyuncs.com/z5z/gitlab-ce:latest
这个在之前的文章中提到过,因为 80 和 443端口正常可用,所有采用HTTP方式的下载 git clone http://gitlab.gameup.com/games/xxx.git
是正常的,而 SSH下载的这种方式,因为修改了默认端口,导致提供的链接无法下载,即使我像这样 git clone git@gitlab.gameup.com:2022/games/xxx.git
加上了端口也无法正常克隆。
用一种比较笨的方法就是,关闭SSH服务或者将宿主机的SSH服务改个端口,但这是一台远程服务器,一般都通过SSH协议访问,关闭不太现实,修改端口的话倒是可行,可是之前这台机器上运行着多个任务,这意味着很多服务脚本都得修改,所以也不是很好的办法,不能因为加了个新服务就把原来的老脚本统统改一遍吧,尝试多次终于找到一个可以接收的方法。
解决方案
进入gitlab容器
docker exec -it gitlab
修改配置文件
/etc/gitlab/gitlab.rb
中的内容gitlab_rails['gitlab_shell_ssh_port'] = 2022
注意这个设置只是修改了 GitLab 的显示信息,不会更改 GitLab 容器内的 SSH 服务端口
执行
gitlab-ctl reconfigure
即可修改执行之后,再次查看gitlab下载地址发现改成了
ssh://git@gitlab.gameup.com:2022/games/xxx.git
,不仅加了端口号,还在前面加上了ssh://
,怪不得我自己加端口号不能能用呢,关于这一点我也查到了相关解释:
GitLab 提供的 SSH 克隆地址(如 git@gitlab.gameup.com:2022/games/xxx.git)是一种简化格式,它没有指定协议前缀 ssh:// 和端口号。这是因为默认情况下,Git 使用 SSH 协议连接,并默认通过端口 22 来克隆和操作仓库。因此,这种简化格式省略了 ssh:// 前缀和端口号
对于标准端口(22),简化格式的地址是有效的,因为 Git 客户端会默认使用 SSH 协议并连接到 22 端口,但是,当你的 SSH 端口不同于 22(如使用 2022 时),Git 默认的简化格式就不适用了,需要显式指定端口号或配置 SSH,也就是写成 ssh://git@gitlab.gameup.com:2022/games/xxx.git 的形式
总结
- 使用docker启动gitlab遭遇22端口占用时可以选择其他端口映射
--publish 2022:22
- 修改映射端口后为了让下载地址显示正确,需要修改gitlab配置文件
gitlab_rails['gitlab_shell_ssh_port'] = 2022
git@gitlab.gameup.com:games/xxx.git
是一种ssh协议的简化形式,完整的地址应该为ssh://git@gitlab.gameup.com:22/games/xxx.git
到此这篇关于Docker启动gitlab后22端口被占用如何解决的文章就介绍到这了,更多相关Docker 22端口被占用 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!