我在centos 7上使用docker安装了最新的gitlab
select /*+ BROADCAST (B) */ a.colum1 FROM completedata INNER JOIN (select column 2 from completedata2) B
我还将主机ssh端口更改为10022,让gitlab使用端口22。 Gitlab成功了。克隆使用http工作,但在使用ssh时失败。
docker run -d --hostname git.xxxx.com \
-p 8082:80 -p 22:22 \
--name gitlab \
--restart always \
-v /srv/gitlab/config:/etc/gitlab:Z \
-v /srv/gitlab/logs:/var/log/gitlab:Z \
-v /srv/gitlab/data:/var/opt/gitlab:Z \
gitlab/gitlab-ce:latest
检查Gitlab状态的输出:
git clone git@git.xxxx.com:yphc/dt-dd-miniprogram.git
Cloning into 'dt-dd-miniprogram'...
ssh: connect to host git.xxxx.com port 22: Bad file number
fatal: Could not read from remote repository.
Please make sure you have the correct access rights
and the repository exists.
警告:sshd:无法打开监督/确定:拒绝访问
我在gitlab容器中尝试了ssh命令。我还在防火墙上添加了端口22。
root@git:/# gitlab-ctl status
run: gitaly: (pid 472) 241405s; run: log: (pid 467) 241405s
run: gitlab-monitor: (pid 474) 241405s; run: log: (pid 465) 241405s
run: gitlab-workhorse: (pid 471) 241405s; run: log: (pid 464) 241405s
run: logrotate: (pid 15611) 203s; run: log: (pid 456) 241405s
run: nginx: (pid 475) 241405s; run: log: (pid 469) 241405s
run: node-exporter: (pid 460) 241406s; run: log: (pid 459) 241406s
run: postgres-exporter: (pid 453) 241406s; run: log: (pid 452) 241406s
run: postgresql: (pid 470) 241406s; run: log: (pid 463) 241406s
run: prometheus: (pid 482) 241406s; run: log: (pid 476) 241406s
run: redis: (pid 396) 241408s; run: log: (pid 395) 241408s
run: redis-exporter: (pid 455) 241406s; run: log: (pid 454) 241406s
run: sidekiq: (pid 473) 241406s; run: log: (pid 468) 241406s
warning: sshd: unable to open supervise/ok: access denied
run: unicorn: (pid 466) 241406s; run: log: (pid 458) 241406s
当我关闭防火墙时,它说
[root@localhost zones]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp2s0
sources:
services: ssh dhcpv6-client
ports: 2022/tcp 10022/tcp 22/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
我在网上浏览了很长时间但找不到任何东西。如果有任何帮助或想法如何解决这个问题,我将不胜感激。
答案 0 :(得分:0)
从kvm迁移后,我遇到了与gitlab-ce官方docker镜像相同的情况。
root@gitlab:/opt/gitlab# /opt/gitlab/embedded/bin/sv start sshd
warning: sshd: unable to open supervise/ok: access denied
我发现此sv会产生错误:
root@gitlab:/opt/gitlab# /opt/gitlab/embedded/bin/sv start sshd
warning: sshd: unable to open supervise/ok: access denied
因为/ opt / gitlab / sv / sshd / supervise / ok管道不可用于root用户:
root@gitlab:/opt/gitlab/sv/sshd/supervise# cat ok
cat: ok: Permission denied
作为测试,我已使用777权限对其进行了更新,但仍然没有运气
root@gitlab:/opt/gitlab/# /opt/gitlab/embedded/bin/sv start sshd
fail: sshd: runsv not running
我使用的解决方法是在基于gitlab-ce:latest:的Dockerfile中
RUN sed -i '/gitlab-ctl reconfigure/a service ssh start' /assets/wrapper
这将启动ssh,现在我可以通过ssh与git用户连接以进行推拉:)
不要忘记,您需要为要使用的端口https://docs.gitlab.com/omnibus/docker/设置适当的环境
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.m31.com:3080'
gitlab_rails['gitlab_shell_ssh_port'] = 3022
所以现在一切正常,但是请记住,这是一个奇怪/丑陋的解决方法,我敢肯定有一种更好的方法可以完成这项工作。
答案 1 :(得分:0)
我在另一个centos 7上做同样的事情,一切正常,所以我猜操作系统有一些错误,gitlab docker是可以的,但是到目前为止我找不到它
答案 2 :(得分:0)
使两台服务器在同一主机上使用同一端口22
的最简单方法是将它们绑定到单独的IP地址。默认情况下,gitlab
和sshd
都绑定到0.0.0.0
,因此在所有地址和接口上保留该端口。
托管提供商可以为您的计算机分配其他公共IP地址,它们应在主机上的ifconfig
中注册。
您的本地ssh服务器应绑定到您的主IP地址。在/etc/ssh/sshd_config
中查找
ListenAddress 0.0.0.0
Docker可以使用-p <secondary_ip>:22:22
您可以为子IP设置子域,例如git.example.com
,为主IP设置server.example.com
。