Docker启动gitlab后22端口被占用如何解决

 更新时间:2024年11月08日 08:38:43   作者:AlbertS  
本文主要介绍了Docker启动gitlab后22端口被占用如何解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

前言

这两天一直在研究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端口被占用 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家! 

相关文章

  • 编写Dockerfile和构建自定义镜像的步骤与技巧

    编写Dockerfile和构建自定义镜像的步骤与技巧

    Docker已经成为现代应用程序开发和部署的重要工具之一,在Docker中,Dockerfile是定义和构建自定义镜像的键文件,本文将深入解读Dockerfile的编写和自定义镜像的构建过程,并分享一些实用的技巧和最佳实践,需要的朋友可以参考下
    2023-07-07
  • 轻松安装docker并运行docker swarm模式

    轻松安装docker并运行docker swarm模式

    这篇文章主要介绍了安装docker并运行docker swarm模式的相关知识,非常不错,具有参考借鉴价值,需要的朋友一起学习吧
    2016-12-12
  • Mac上使用Docker搭建kafka集群方式

    Mac上使用Docker搭建kafka集群方式

    这篇文章主要介绍了Mac上使用Docker搭建kafka集群方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-02-02
  • Docker构建镜像的三大优化方法指南

    Docker构建镜像的三大优化方法指南

    这篇文章主要为大家详细介绍了Docker构建镜像的三大优化方法,包括CMD/ENTRYPOINT、多阶段构建与缓存优化,下面就跟随小编一起深入了解下吧
    2025-11-11
  • Docker容器内更新apt-get国内加速实现过程

    Docker容器内更新apt-get国内加速实现过程

    文章讲述了使用国内镜像加速Docker容器内apt-get的方法,通过修改配置文件指向国外镜像源,解决了网速慢的问题
    2026-03-03
  • Docker容器交互之docker exec -it、Shell与容器运行环境详解

    Docker容器交互之docker exec -it、Shell与容器运行环境详解

    docker exec是Docker提供的一个命令,用于在已经运行的容器中执行一个新的命令,这篇文章主要介绍了Docker容器交互之docker exec -it、Shell与容器运行环境的相关资料,需要的朋友可以参考下
    2026-04-04
  • 使用Dockerfile构建docker镜像

    使用Dockerfile构建docker镜像

    这篇文章主要介绍了使用Dockerfile构建docker镜像的方法,帮助大家更好的理解和学习使用docker,感兴趣的朋友可以了解下
    2021-04-04
  • 基于Docker部署Dubbo+Nacos服务的过程

    基于Docker部署Dubbo+Nacos服务的过程

    这篇文章主要介绍了基于Docker部署Dubbo+Nacos服务,本文介绍基于 Docker 部署一套 Dubbo + Nacos 的微服务环境,并解决容器里的 IP 及端口的访问问题,需要的朋友可以参考下
    2023-02-02
  • Docker安装RabbitMQ AMQP协议及重要角色

    Docker安装RabbitMQ AMQP协议及重要角色

    这篇文章主要为大家介绍了Docker安装RabbitMQ AMQP协议和主要角色详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • PVE下扩展openwrt for x86分区大小方式

    PVE下扩展openwrt for x86分区大小方式

    本文介绍了在PVE环境下如何对OpenWRT虚拟机的分区进行扩容,包括磁盘调整、软件安装、分区配置和系统引导等步骤,操作前需做好备份,以防数据丢失
    2024-10-10

最新评论