我无法从gitlab CI/CD管道运行程序使用SSH在远程主机上成功docker compose。
docker compose失败,出现以下错误:
http.client.RemoteDisconnected: Remote end closed connection without response
urllib3.exceptions.ProtocolError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
requests.exceptions.ConnectionError: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
docker.errors.DockerException: Error while fetching server API version: ('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))
我不能在Gitlab之外重现这个问题。意思是,我尝试在我的本地机器上运行相同的docker映像我的gitlab部署步骤使用,在我的脚本中手动执行完全相同的命令,它像一个魅力...
我甚至通过连接到主机并打印docker version
来尝试脚本中的ssh配置,并且成功。
#!/bin/bash
apk update
apk add openssh-client
apk add --update bash
eval $(ssh-agent -s)
mkdir -p ~/.ssh
chmod 600 ~/.ssh
# copy the server private key
echo "$SSH_PRIVATE_KEY"
echo "$SSH_PRIVATE_KEY" | ssh-add -
# copy server host key .pub file from /etc/ssh/ and paste it into this variable
echo "$SSH_SERVER_HOSTKEYS"
ssh-keyscan -p 12345 11.222.3.444
ssh-keyscan -p 12345 11.222.3.444 >> ~/.ssh/known_hosts
ssh root@11.222.3.444 -p 12345 "docker version; exit"
# Docker-compose app and db
docker-compose --verbose -H "ssh://root@11.222.3.444:12345" -f docker-compose.staging.yml up -d --build
exit
image: alpine:latest
services:
- docker:dind
stages:
- build
- package
- deploy
[...]
deploy:
image: docker/compose:alpine-1.28.2
stage: deploy
environment:
name: staging
only:
- master
script:
- sh deploy_to_staging.sh
多谢你的帮忙
我遇到了这个确切的问题,这取决于您的配置,它可能工作或不工作。基本上,我在我的服务器上创建了一个用户deployer
,我正试图通过ssh连接到该服务器。
因为我忘了将这个新用户(deployer
)添加到docker
用户组,所以他没有docker权限。所以基本上我所做的就是
[root@myserver ~]# groupadd docker
groupadd: group 'docker' already exists
[root@myserver ~]# usermod -aG docker deployer
使用远程开发扩展包,VisualStudioCode可以打开当前系统上运行的Docker容器,并打开使用SSH连接的远程主机上的文件夹。 如果远程SSH主机上运行Docker容器,VSCode如何打开该容器中的文件/文件夹?
机器A和B之间的通信工作良好。我可以运行像或这样的命令,它会给出预期的结果: 我听说过,但还没有尝试过,但据我所知,这并不能解决我的问题。 有什么方法可以直接使用来实现这一点。解决办法可能是使用连接到远程主机,并直接从远程主机使用客户机,但我希望尽可能避免这种解决方案。 在上运行,而不是在本地计算机上运行。
问题内容: 我在Mac OS X和Docker Machine(默认的boot2docker计算机)上使用Docker,并使用docker-compose设置开发环境。 假设其中一个容器称为“ ”。现在我想做的就是打电话: 我的公用密钥(已添加到该公用密钥并将用于对我进行身份验证)位于主机上。我希望该密钥可用于Docker Machine容器,这样我就能够通过容器内部使用该密钥进行身份验证。最好不
我正在尝试使用JProfiler分析远程主机/服务器上的Web应用程序,但该过程似乎比我想象的要复杂。 我已经设法在我的开发工作副本上本地评测了,但结果在那里没有用处。 有没有一种方法可以将JProfiler连接到该服务器,而无需将其安装在远程机器/服务器上,因为这不是我拥有的选项。类似于远程调试,我在其中配置主机和端口并连接。 提前感谢!
我在Mac OS X上使用Docker机器(使用默认的boot2docker机器),并且我使用docker-compose来设置我的开发环境。
章节简述: 本章讲解了如何使用nmtui命令配置网卡参数,以及通过nmcli命令查看网络信息并管理网络会话服务,从而让读者能够在不同工作场景中快速地切换网络运行参数;还讲解了如何手工绑定round-robin轮询模式双网卡,实现网络的负载均衡。 本章深入介绍了SSH协议与sshd服务程序的理论知识、Linux系统的远程管理方法以及在系统中配置服务程序的方法,并采用实验的形式演示了使用基于密码与密