现在用 docker 部署 Jenkins
需要容器内 jenkins 与其他内网服务器通信。但是现在和宿主机不共用 ssh 。
这中间的连通想问下大家该怎么解决。
1
dode 2023-03-08 10:24:51 +08:00
插两个网线可以吗
|
2
leimao 2023-03-08 10:31:24 +08:00
无脑一点的是 --network host ,不晓得有没有用
|
4
leimao 2023-03-08 10:32:55 +08:00
> 但是现在和宿主机不共用 ssh 。
你意思说别的机器也要 SSH 到 Docker container 里面吗? |
5
hhjswf 2023-03-08 10:32:58 +08:00
Jenkins 为啥不部署到内网
|
6
SKYNE 2023-03-08 10:35:05 +08:00
OP 指的是 ssh 免密登录其他内网的主机吧
|
7
leimao 2023-03-08 10:36:17 +08:00
虽然我不是这方面专家,但是我感觉可以在 host 上专用一个 port map 给 Docker container ,然后这个 port 就用来和其他的 node 通信。
|
8
leimao 2023-03-08 10:37:33 +08:00
很多年前,我就是 SSH 到一个部署在 Docker 里的 TensorBoard 看模型训练的:
https://leimao.github.io/blog/TensorBoard-On-Docker/ |
9
leimao 2023-03-08 10:38:44 +08:00
虽然有几年没做这个了,生疏了,但感觉你做的 Jenkins 这些东西可以用一样的原理解决问题。
|
10
awanganddong OP |
11
kd9yYw2RyhQwAwzn 2023-03-08 10:52:58 +08:00
把私钥做个挂载进容器内呢
|
12
cxtrinityy 2023-03-08 11:01:04 +08:00 via Android
通过宿主机 ssh tunnel 中转 ssh -L/-R 看看
|
13
awanganddong OP |
14
julyclyde 2023-03-08 12:33:46 +08:00
这就是典型的
因为用 docker 而带来的额外问题 不用 docker 的话就没这破事了 |
15
DigitalG 2023-03-08 13:54:25 +08:00
可以在镜像内固定挂载 SSH_AUTH_SOCK 文件和环境变量?
|
16
awanganddong OP version: '3.1'
services: jenkins: image: jenkinsci/blueocean user: root privileged: true container_name: jenkins volumes: - /usr/local/src/jenkins/jenkins_home:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock - /home/ubuntu/.ssh:/root/.ssh/ #/var/jenkins_home/.ssh/ ports: - 8080:8080 - 50000:50000 restart: always 这是我的 docker-compose 在容器内通过 ssh 可以访问远端服务器 但是通过 ssh Publish Over SSH 就一直失败。 报错内容添加 key 失败,该密钥格式我还没试。 现在先编译安装一个看看问题是什么 |
17
1point 2023-03-08 15:23:15 +08:00
ssh -i $pem -p 22 -o StrictHostKeyChecking=no
把 pem 复制进去就可以了。我们 jenkins 也是跑在 docker 上的 |
18
awanganddong OP 我理解错了,
jenkins 容器是可以直接和远程服务器进行通信的。 1.在 Configure System 设置的主目录下直接生成公私钥: ssh-keygen -m PEM -t rsa -b 4096 2.然后把私钥地址添加到 Publish over SSH 的 Path to key: /var/jenkins_home/.ssh/id_rsa 3.SSH Servers 添加 远程地址 4.把生成的公钥添加到远程服务器的 authorized_keys 中。 谢谢大家了 |
19
awanganddong OP docker-compose 这样配置就可以
version: '3.1' services: jenkins: image: jenkinsci/blueocean container_name: jenkins privileged: true user: root volumes: - /data/jenkins/:/var/jenkins_home - /var/run/docker.sock:/var/run/docker.sock ports: - 8080:8080 - 50000:50000 restart: always |
20
awanganddong OP 再次更新,
jenkins 不建议用 root 权限去启动,存在的问题就是 root 的.ssh 与 jenkins .ssh 不在同一个目录下, 而容器启动后是以 jenkins 用户来操作的。 所以存在以上的问题。 |
21
awanganddong OP 生成适合 jenkins 的公私钥
ssh-keygen -t rsa -b 4096 -m PEM 移动到容器内 cp -r /home/ubuntu/.ssh /data/jenkins/ |
22
awanganddong OP 还有一个问题是 git 插件问题。
我登录 jenkins 往 known_hosts 写值无效 只能把 ssh 设置成宽松模式 /etc/ssh/ssh_config Host * StrictHostKeyChecking no |