现在用 docker 部署 Jenkins
需要容器内 jenkins 与其他内网服务器通信。但是现在和宿主机不共用 ssh 。
这中间的连通想问下大家该怎么解决。
现在用 docker 部署 Jenkins
需要容器内 jenkins 与其他内网服务器通信。但是现在和宿主机不共用 ssh 。
这中间的连通想问下大家该怎么解决。
|
dodeMar 8, 2023
1
插两个网线可以吗
|
|
leimaoMar 8, 2023
2
无脑一点的是 --network host ,不晓得有没有用
|
|
leimaoMar 8, 2023
4
> 但是现在和宿主机不共用 ssh 。
你意思说别的机器也要 SSH 到 Docker container 里面吗? |
|
hhjswfMar 8, 2023
5
Jenkins 为啥不部署到内网
|
|
SKYNEMar 8, 2023
6
OP 指的是 ssh 免密登录其他内网的主机吧
|
|
leimaoMar 8, 2023
7
虽然我不是这方面专家,但是我感觉可以在 host 上专用一个 port map 给 Docker container ,然后这个 port 就用来和其他的 node 通信。
|
|
leimaoMar 8, 2023
8
很多年前,我就是 SSH 到一个部署在 Docker 里的 TensorBoard 看模型训练的:
https://leimao.github.io/blog/TensorBoard-On-Docker/ |
|
leimaoMar 8, 2023
9
虽然有几年没做这个了,生疏了,但感觉你做的 Jenkins 这些东西可以用一样的原理解决问题。
|
|
10
|
|
kd9yYw2RyhQwAwznMar 8, 2023
11
把私钥做个挂载进容器内呢
|
|
cxtrinityyMar 8, 2023 via Android
12
通过宿主机 ssh tunnel 中转 ssh -L/-R 看看
|
|
13
|
|
julyclydeMar 8, 2023
14
这就是典型的
因为用 docker 而带来的额外问题 不用 docker 的话就没这破事了 |
|
DigitalGMar 8, 2023
15
可以在镜像内固定挂载 SSH_AUTH_SOCK 文件和环境变量?
|
|
16
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 失败,该密钥格式我还没试。 现在先编译安装一个看看问题是什么 |
|
1pointMar 8, 2023
17
ssh -i $pem -p 22 -o StrictHostKeyChecking=no
把 pem 复制进去就可以了。我们 jenkins 也是跑在 docker 上的 |
|
18
我理解错了,
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
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
再次更新,
jenkins 不建议用 root 权限去启动,存在的问题就是 root 的.ssh 与 jenkins .ssh 不在同一个目录下, 而容器启动后是以 jenkins 用户来操作的。 所以存在以上的问题。 |
|
21
生成适合 jenkins 的公私钥
ssh-keygen -t rsa -b 4096 -m PEM 移动到容器内 cp -r /home/ubuntu/.ssh /data/jenkins/ |
|
22
还有一个问题是 git 插件问题。
我登录 jenkins 往 known_hosts 写值无效 只能把 ssh 设置成宽松模式 /etc/ssh/ssh_config Host * StrictHostKeyChecking no |