在Docker下运行GitLab的注意事项

18次阅读

共计 764 个字符,预计需要花费 2 分钟才能阅读完成。

由于 Docker 技术的快速发展,很多著名的开源应用都提供了 Docker 版本,但由于某些原因,一些知名应用提供的 Docker 运行语句存在一定的问题。
今天就遇到了 Docker 下运行 Gitlab 的巨坑。
Docker 官方的页面原文是这样的:

sudo docker run --detach \
  --hostname gitlab.example.com \
  --publish 443:443 --publish 80:80 --publish 22:22 \
  --name gitlab \
  --restart always \
  --volume /srv/gitlab/config:/etc/gitlab \
  --volume /srv/gitlab/logs:/var/log/gitlab \
  --volume /srv/gitlab/data:/var/opt/gitlab \
  gitlab/gitlab-ce:latest

这个坑的点在 --publish 22:22 这里。这个命令参数的意思是把主机的22 端口映射到 gitlab 镜像的22 端口以提供SSH 服务,但宿主机本身也需要 22 端口提供 SSH 服务。
我开始运行的时候没有注意到这一点,运行以上命令的时候提示 22 端口不可用,于是直接把 22 改成了 33,于是镜像顺利运行了。但是在gitlab 账户设置中添加公钥以后,使用 git 客户端通过 ssh 协议(git@xxxx.git)拉取代码的时候始终提示输入密码,输入密码又提示没权限,折腾了很久,重启了无数次镜像,终于发现问题所在。

修改宿主机 sshd 端口为88, 使用firewall-cmd --zone=public --add-port=88/tcp --permanent 新增端口,然后systemctl restart sshd,然后清空客户端上的known_hosts,重新 clone,顺利成功。

正文完
 0