1. 背景,实操,实操,还是实操,得动手
  2. 官方脚本安装docker,也遇到了一点小坑,就是centos7安装好之后,docker命令不能正常执行,原因是没有启动docker服务,手动启动:systemctl start docker, 开机启动:systemctl enable docker.ubuntu好像安装好就可以用了。
  3. docker镜像仓库的小坑,先去/etc/docker目录创建daemon.json,里面写镜像的配置,就想到了aliyun,然后就去aliyun找到自己的镜像仓库地址,配好后拉去最新的gitlab/gitlab-ce的镜像,然后启动后,到插件安装,安装汉化插件,结果,提示版本太低,原因是aliyun的docker仓库的latest并不是最新的,于是网上找到了一个汇总,这里有可用的,也有不可用的,选择可用的,都配上,就能拉到最新的镜像了:https://linux.do/t/topic/31707/10
  4. 关于gitlab的docker compose配置文件里的environment.GITLAB_OMNIBUS_CONFIG里的external_url,这是一个很复杂的知识点,在这里摔了一个大的。a,这个配置是一个综合性配置,omnibus意思就是综合性的,这里可以配置超级多的选项,最重要的就是external_url,外部访问的地址,这个值里的域名部分,就是将来web页面克隆项目时git@xxx中的xxx, 而git@xxx这种形式是通过ssh协议来克隆项目,也就是将自己电脑的公钥配置到gitlab来完成验证的方式。下面的5太复杂,可以直接看6
  5. 继续external_url,那既然是ssh,端口就是22,而gitlab是容器部署的,也就是我们需要访问gitlab容器的22端口,所以不能直接22:22这种映射,得是1024及以上的端口映射到容器的22,假设是1024:22,那么就需要访问宿主机的1024端口来克隆项目,这个1024端口是ssh协议的,而默认ssh协议是22端口,所以就有了ssh的端口配置,让ssh协议通过自定义的端口去通信,于是就有了$USER_HOME/.ssh/config文件,这个文件里可以指定某个服务器的ssh端口、私钥文件等,关键的两个配置项是Host、HostName,这俩货太容易把人绕晕了,在坑里摸爬滚打后,总结下来,Host就是运行ssh协议时的“DNS”,也就是Host配置成abc,那么ssh@abc时,使用的端口就是config文件里的Host=abc的Port值,同时,私钥之类的值也用config文件里abc对应的配置。而HostName,就可以是宿主机的ip或者宿主机的hostname
  6. 从上面的分析来看,external_url的域名部分,要和config文件里的Host一致,同时也gitlab的web页面的克隆的项目地址里的域名一致。
  7. 优雅,因为部署的是gitlab容器,那么,external_url里的域名 = config文件里的Host = gitlab,这样,ssh访问gitlab,就走1024端口,ssh访问宿主机,就走22端口。而对于团队来说,用pve创建一个专门用于gitlab的虚拟机,虚拟机里运行gitlab的容器。
  8. 追加一点,根据7里面的,创建docker容器就太苛刻了,不优雅,然后查了下,可以通过配置GITLAB_OMNIBUS_CONFIG.gitlab_rails['gitlab_shell_ssh_port']=1024,让web页面里的克隆的ssh的地址里带上ssh的自定义端口

站在巨人的肩上
2 声望0 粉丝