这是一个老问题,但是我找不到有用的答案。
我有以下环境:
本地主机(我的笔记本电脑)名称:Chris-Laptop
已安装docker-machine,版本0.6.0,内部版本e27fb87,Mac OS X 10.11
远程主机(我的VPS)名称:li845-130(139.162.3.130)
docker-engine已经安装,CentOS 7.0
1.远程主机中的Docker守护进程
[ root @ li845-130〜 ] -ef | grep docker |
根12093 1 0 02:09? 00:00:00 / usr / bin / docker守护程序-H
2.配置不带密码的ssh连接
[ tdy218 @ Chris-Laptop .ssh] $ ssh [email protected]
上次失败的登录时间:UTC 2016年3月21日星期一12:54:06 ssh:notty上的125.88.177.95
自上次成功登录以来,有54次失败的登录尝试。
上次登录时间:2016年3月21日星期一02:25:25来自114.248.235.223
[ root @ li845-130〜 ]#
3.将远程Docker主机添加到本地Docker机器
[ tdy218 @ Chris-Laptop .ssh] $ docker-machine create --driver none -url = tcp://139.162.3.130 :2376 linodevps
运行预创建检查...
正在建立机器...
要查看如何将Docker客户端连接到在此虚拟机上运行的Docker引擎,请运行:docker-machine env linodevps
[ tdy218 @ Chris-Laptop .ssh] $ -machine ls
名称活动的驱动程序状态URL群集DOCKER错误
默认* virtualbox运行tcp://192.168.99.100 :2376 v1.10.3
linodevps-无正在运行tcp://139.162.3.130 :2376未知无法查询
[ tdy218 @ Chris-Laptop .ssh] $
[ tdy218 @ Chris-Laptop .ssh] $ docker-machine -D regenerate-certs linodevps
Docker Machine版本:0.6.0,构建e27fb87
重新生成TLS机器证书? 警告:这是不可逆的。 (y / n):y
重新生成TLS证书
在/ usr / local / bin / docker-machine中找到二进制路径
为驱动程序启动插件服务器无
插件服务器侦听地址127.0.0.1:54648
()呼叫.GetVersion
使用API版本1
()调用.SetConfigRaw
()调用.GetMachineName
command = configureAuth机器= linodevps
等待SSH可用...
进入WaitForSSH功能...
(linodevps)呼叫.GetSSHHostname
(linodevps)呼叫.GetSSHPort
(linodevps)呼叫.GetSSHKeyPath
(linodevps)呼叫.GetSSHUsername
使用SSH客户端类型:外部
{[-o BatchMode =是-o PasswordAuthentication =否-o StrictHostKeyChecking =否-o UserKnownHostsFile = / dev / null -o LogLevel = quiet -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = no -o ControlPath = none @ -p 0] / usr / bin / ssh}
即将运行SSH命令:
出口0
SSH cmd err,输出:退出状态255:用法:ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b
.....................
收到ssh命令'exit 0'时出错:运行SSH命令时出了点问题!
命令:退出0
错误:退出状态255
输出:用法:ssh [-1246AaCfGgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec]
.....................
最后报告“等待SSH的重试次数过多。上一个错误:重试的最大次数(60)已超过...”。
为什么呢我已经配置了本地主机和远程docker主机之间的ssh连接而没有密码。
如何将Docker主机导出到本地docker-machine命令行?
docker-machine支持是否添加现有的docker主机?
实际上,当我在最近5个小时内搜索文档时,有“ --driver = none”选项(未记录)。 参见https://github.com/docker/machine/issues/2270 。
@ tdy218 @atemerev正如我所记得的那样, --driver none
选项是有意掩埋的(我认为已从已发布的可执行文件中删除了),因为它仅用于测试目的。
相关问题:我在使用docker-machine创建的数字海洋上有一个小滴。 如何从另一台笔记本电脑管理实例?
一位同事使用docker-machine regenerate-certs [name]
从他的笔记本电脑重新创建了证书。 现在我不能再访问我的实例了。 我应该将新证书手动复制到某个地方吗? 关于此的文档确实令人困惑。
$ docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Stopped Unknown
gapp-sandbox * digitalocean Running tcp://xx.xxx.xxx.xx:2376 Unknown Unable to query docker version: Get https://xx.xxx.xxx.xx:2376/v1.15/version: x509: certificate signed by unknown authority
我找到了一种解决方法: https :
编辑计算机的config.json以指向该特定计算机而不是全局计算机的CA和客户端密钥。
因此,我从同事的文件夹中复制了所有文件,并用机器的所有路径替换了所有路径。 在我的情况下,最终路径为/Users/mturatti/.docker/machine/machines/gapp-sandbox/
。
令人讨厌的解决方案,但似乎可行。
ca.pem
cert.pem
config.json
id_rsa
id_rsa.pub
key.pem
server-key.pem
server.pem
@dweomer难道不是从另一台计算机添加现有的
@dweomer难道不是从另一台计算机添加现有的
@atemerev :不,我认为不是。 据我了解,Docker Machine存在于创建/配置支持Docker的主机。
话虽这么说,但我认为@ tdy218应该使用稍微不太明显的generic
驱动程序。 generic
驱动程序将接管主机并重新配置它。 它所需要的只是一个运行中的主机,该主机带有ssh守护程序,并且该主机上的用户具有无密码的sudo
访问权限(或仅具有root用户权限)。 这种重新配置是无损的,因为现有的Docker安装最多将被升级。
@dweomer
我在以下测试中尝试使用通用驱动程序添加现有的Docker主机。
本地主机(我的笔记本电脑)名称:Chris-Laptop
已安装docker-machine,版本0.6.0,内部版本e27fb87,Mac OS X 10.11
远程主机(我的VPS)名称:li845-130(139.162.3.130)
docker-engine已经安装,CentOS 7.0
1.远程主机中的Docker守护进程
[ root @ li845-130〜 ] -ef | grep docker |
根12093 1 0 02:09? 00:00:00 / usr / bin / docker守护程序-H
2.配置不带密码的ssh连接
[ tdy218 @ Chris- Laptop〜 ] $
上次登录:2016年3月28日星期一03:06:07来自111.193.199.188
3.将远程Docker主机添加到本地Docker机器
[ tdy218 @ Chris-Laptop〜 ] $ docker-machine -D create --driver通用--generic-ip-address 139.162.3.130 --generic-ssh-user根linodevps
Docker Machine版本:0.6.0,构建e27fb87
在/ usr / local / bin / docker-machine中找到二进制路径
启动通用驱动程序的插件服务器
插件服务器侦听地址127.0.0.1:50319
()呼叫.GetVersion
使用API版本1
()调用.SetConfigRaw
()调用.GetMachineName
(标志查找)调用.GetMachineName
(标志查找)调用.DriverName
(标志查找)调用.GetCreateFlags
在/ usr / local / bin / docker-machine中找到二进制路径
启动通用驱动程序的插件服务器
插件服务器侦听地址127.0.0.1:50323
()呼叫.GetVersion
使用API版本1
()调用.SetConfigRaw
()调用.GetMachineName
(linodevps)呼叫.GetMachineName
(linodevps)呼叫.DriverName
(linodevps)呼叫.GetCreateFlags
(linodevps)呼叫.SetConfigFromFlags
运行预创建检查...
(linodevps)呼叫.PreCreateCheck
(linodevps)呼叫.GetConfigRaw
正在建立机器...
(linodevps)呼叫.Create
(linodevps)呼叫.GetConfigRaw
(linodevps)未指定SSH密钥。 现在和将来连接到此计算机都将要求ssh代理包含适当的密钥。
(linodevps)DBG | IP:139.162.3.130
(linodevps)呼叫.DriverName
(linodevps)呼叫.DriverName
等待机器运行,这可能需要几分钟的时间...
(linodevps)呼叫.GetState
正在检测创建的实例的操作系统...
等待SSH可用...
进入WaitForSSH功能...
(linodevps)呼叫.GetSSHHostname
(linodevps)呼叫.GetSSHPort
(linodevps)呼叫.GetSSHKeyPath
(linodevps)呼叫.GetSSHUsername
使用SSH客户端类型:外部
{[-o BatchMode =是-o PasswordAuthentication =否-o StrictHostKeyChecking =否-o UserKnownHostsFile = / dev / null -o LogLevel = quiet -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = no -o ControlPath = none [email protected] -p 22] / usr / bin / ssh}
即将运行SSH命令:
出口0
SSH cmd err,输出:
正在检测供应商...
(linodevps)呼叫.GetSSHHostname
(linodevps)呼叫.GetSSHPort
(linodevps)呼叫.GetSSHKeyPath
(linodevps)呼叫.GetSSHUsername
使用SSH客户端类型:外部
{[-o BatchMode =是-o PasswordAuthentication =否-o StrictHostKeyChecking =否-o UserKnownHostsFile = / dev / null -o LogLevel = quiet -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = no -o ControlPath = none [email protected] -p 22] / usr / bin / ssh}
即将运行SSH命令:
猫/ etc / os-release
SSH cmd err,输出:
VERSION =“ 7(Core)”
ID =“ centos”
ID_LIKE =“ rhel fedora”
VERSION_ID =“ 7”
PRETTY_NAME =“ CentOS Linux 7(Core)”
ANSI_COLOR =“ 0; 31”
CPE_NAME =“ cpe:/ o: centos:centos :7”
HOME_URL =“ https://www.centos.org/ ”
BUG_REPORT_URL =“ https://bugs.centos.org/ ”
CENTOS_MANTISBT_PROJECT =“ CentOS-7”
CENTOS_MANTISBT_PROJECT_VERSION =“ 7”
REDHAT_SUPPORT_PRODUCT =“ centos”
REDHAT_SUPPORT_PRODUCT_VERSION =“ 7”
无法设置密钥CPE_NAME,找不到对应的结构字段
无法设置密钥,找不到对应的结构字段
无法设置密钥CENTOS_MANTISBT_PROJECT,找不到对应的结构字段
无法设置密钥CENTOS_MANTISBT_PROJECT_VERSION,找不到对应的结构字段
无法设置密钥REDHAT_SUPPORT_PRODUCT,找不到对应的结构字段
无法设置键REDHAT_SUPPORT_PRODUCT_VERSION,找不到对应的结构字段
无法设置密钥,找不到对应的结构字段
找到兼容的主机:centos
使用centos进行配置...
使用devicemapper未指定存储驱动程序
(linodevps)呼叫.GetMachineName
(linodevps)呼叫.GetSSHHostname
(linodevps)呼叫.GetSSHPort
(linodevps)呼叫.GetSSHKeyPath
(linodevps)呼叫.GetSSHUsername
使用SSH客户端类型:外部
{[-o BatchMode =是-o PasswordAuthentication =否-o StrictHostKeyChecking =否-o UserKnownHostsFile = / dev / null -o LogLevel = quiet -o ConnectionAttempts = 3 -o ConnectTimeout = 10 -o ControlMaster = no -o ControlPath = none [email protected] -p 22] / usr / bin / ssh}
4,远程Docker主机命令行
[ root @ linodevps〜 ] -ef | grep docker |
根17079 1 0 03:06 00:00:00 / usr / bin / docker守护程序-H
根17185 1 0 03:06? 00:00:00 sudo docker版本
根17190 17185 0 03:06 00:00:00码头工人版本
docker守护进程已重新启动,但是还有两个docker version进程,然后我尝试手动执行docker version命令,该命令已挂起。
将现有的Docker主机添加到docker-machine命令行非常困难...
如果远程主机中没有任何Docker引擎,则可以从docker-machine命令行轻松创建docker主机(安装docker引擎),但是由于上述问题,docker-machine受到限制。
@dweomer的确如此,但是如果我
对我而言,docker-machine / docker-swarm尚无法投入生产,至少应标记为beta。 或者我想听听在生产中实际使用它的任何人的信息...
FWIW,如果只是将〜/ .docker从该工作站主机拖放到新主机上(假设主目录是相同路径),它将起作用。 如果主目录不同,则需要在多个位置(密钥和证书等)编辑.json文件,以将例如/Users/macuser/.docker
更改/home/linuxuser/.docker
。
似乎已经彻底解决了这个问题,并且/或者涵盖了其他问题已经确立的基础。 谢谢大家
@nathanleclaire需要明确的是,添加现有Docker主机(无论是由docker-machine创建的还是由docker-machine创建的)的正式方法是在客户端计算机之间复制〜/ .docker文件夹吗? 如果是这样,是否有文件的特定子集/我们需要复制的文件?
如果正式的方法是使用通用驱动程序,则解决此处评论中概述的@ tdy218问题将很有用。
我认为这个问题根本没有解决。 我正在尝试将代码推送到新机器上,这是任何人都可以提出的最佳答案,以找到制造机器的人并将其文件复制到我的机器中。
我不确定是否有人在现实世界中尝试过此方法,但是很糟糕。
@TheSeanBrady让我们继续讨论民事问题。 如果您有解决方案的建议,请分享。 让我们继续专注于解决问题的方法。
我只是说实话您尝试发送电子邮件询问文件,因为到目前为止,它对我不起作用。 已关闭,但未解决该问题。
我只是说实话您尝试发送电子邮件询问文件,因为到目前为止,它对我不起作用。 已关闭,但未解决该问题。
您不觉得说些“糟透了”并暗示我们其他人没有“生活在现实世界中”是不必要的苛刻和无建设性的吗?
我们试图建立一个鼓励合作和积极的社区。 我要问,如果您想参加,也要遵循这些原则。
由于使用了存储的API凭据,SSH密钥和在计算机之间共享docker-machine
的证书,这是一个成熟的机密管理/ ACL问题,发明了其他所有类的技术来解决。 在范围上这是一个很大的问题。 可能会采取一些措施来减轻它,从而对您的用例有所帮助,那么为什么不建议一些主动的解决方案来实施呢?
如果您想提交解决此问题的建议,请随时。 如果您还想提出请求,并在请求请求中使用代码作为备份,我也鼓励您这样做。 但是无论如何,请把讨论重点放在解决方案上,并保持积极态度。
您不觉得说些“糟透了”并暗示我们其他人没有“生活在现实世界中”是不必要的苛刻和无建设性的吗?
跟进时不是真的...
似乎已经彻底解决了这个问题,并且/或者涵盖了其他问题已经确立的基础。 谢谢大家
那几乎就是我所说的简易解雇。 所谓“真实世界”,是指我们使用这些东西的环境,而不是让大厅中的一名开发人员通过的环境。
这本来是更合适的答案...
由于使用了存储的API凭证,SSH密钥和在计算机之间共享docker-机器的证书,这是一个成熟的机密管理/ ACL问题,发明了其他所有此类技术来解决。
...即使这些技术已经发明,而且大多数都是开源的。
但是,正如您所问的那样,使用SSH密钥身份验证传递TLS连接所需的证书的docker-machine add <hostname>
怎么样?
那码头工人机器怎么样
,使用SSH密钥身份验证来传递TLS连接所需的证书?
那至少可以解决开发环境的问题。
另一种选择是在通过SSH可用的主机上使用docker套接字,这对我来说是更可取的,因为它使用了现有的SSH身份验证机制(在我的情况下是由HSM备份的),并且不需要将端口/防火墙调整为支持TLS。
我已经使用socat破解了自己的解决方案,但是如果docker-machine支持的话,那就太好了。 SSH到主机并不难,如果尚未安装socat,请安装它,并使用socat将ssh会话转换为本地套接字,以便与远程/var/lib/docker.sock通信。 这也意味着docker-machine在此驱动程序模式下不必了解身份验证,证书或TLS的任何信息,尽管它确实依赖本地的socat来创建本地套接字。
很高兴看到一个驱动程序模式以现有ssh驱动程序设置所有TLS内容的方式执行这种本地套接字设置。 许多组织已经解决了SSH密钥分发/端口转发问题,并且期望他们现在为TLS分发/管理PKI(并打开另一个端口)非常麻烦。
tyrell:~▻ cat Library/Local/bin/ber1docker
#!/bin/bash
DOCKER_REMOTE_HOST="ber1.local"
DOCKER_SOCK="$TMPDIR/docker.sock"
export DOCKER_HOST="unix://$DOCKER_SOCK"
rm $DOCKER_SOCK
socat UNIX-LISTEN:$DOCKER_SOCK,reuseaddr,fork \
EXEC:"ssh root@$DOCKER_REMOTE_HOST 'socat STDIO UNIX-CONNECT:/var/run/docker.sock'" &
因此,没有“ docker-machine add ...”吗?
为docker-machine add ...
+1
我们希望我们所有的团队成员都能享受eval $(docker-machine env mymachine)
的美(当然,对于共享的开发环境)。
我用digitalocean驱动程序旋转了一个小滴,并使用docker-compose从我的工作站启动了一个站点并使其运行。
然后,我不得不在该站点上进行工作,但要在完全不同的位置,远离我执行原始docker-machine命令的工作站。
这不是很常见的情况吗?
这是一个非常常见的解决方案。 特别是如果您从事的是“团队”工作。 但是他们现在大约18个月就避免了这个话题。 他们要做的就是关闭这样的问题,然后说些“实现这一功能非常复杂”,您可以自己做,并随时提出拉取请求。
在我看来,在过去的18个月中,他们甚至还没有开始研究解决方案。
感谢您的答复,尽管目前尚无简便的方法。
将凭据和其他内容保存在云中。
请告诉我如何使用我的保管箱或Google驱动器进行存储的说明。
让我从digitalocean查询信息,因为那是我使用的驱动程序。
这真的不是那么难。
是的,听起来很安全。
2016年11月9日,星期三,09:28迈克尔·史瓦兹(Michael Schwartz) [email protected]
写道:
将凭据和其他内容保存在云中。
请告诉我如何使用我的保管箱或Google驱动器进行存储的说明。
这真的不是那么难。
-
您收到此邮件是因为有人提到您。
直接回复此电子邮件,在GitHub上查看
https://github.com/docker/machine/issues/3212#issuecomment -259457472,
或使线程静音
https://github.com/notifications/unsubscribe-auth/ABxbKbZQLUfK9ENnWpNKiF207ZGpXFs2ks5q8fSagaJpZM4H07I2
。
首先要比通过互联网发送命令和我的所有代码安全得多。
或将我所有的专有内容上传到docker hub或github,甚至是一个私有仓库。
对于那些试图将docker计算机添加到开发环境的人,您可以这样做:
docker-machine create -d“ none” --url http://192.168.10.100:4243 bla
这是如果您在主机上启用了HTTP而不是TSL身份验证。
我已经花了很多时间找到这些未记录的东西
我认为似乎也只允许一台机器同时管理docker集群有点眼光短浅。 不仅仅是与您的团队分担管理集群的责任,还有一个以上的故障点或允许多个自动化代理能够与Docker集群进行交互又如何呢?
+1用于导出命令。
它可以将所有设置和证书导出到安全的tar或zip文件中,可以使用密码在docker机器中导入该文件。
似乎是合理的要求。
@bmmathe该命令已经是tar -c ~/.docker/machine | bzip2 > docker-machine-config.tbz2
。
这就是lxd处理此问题的方式。 也许可以在机器上配置密码或密钥,使其可以复制或重新生成证书。
真伤心😖。 我的远程计算机现在在运行docker-machine ls
时在本地显示timeout
状态,这使计算机配置有些混乱。 似乎无法弄清楚如何在本地Docker机器文件夹中重新配置/修复它们。 没有更多的本地配置? 我应该删除VM并重新创建它们吗?
投票选择将远程计算机添加到本地Docker计算机的选项:
⏳🤒
这是一个非常重要的功能。 我不明白为什么这么难。 即使,如果我需要重新生成证书,对我来说也不会是一个问题,但是我想将此文档记录在案并与之配合使用。
如果我没有记错的话,我的问题是由于权限错误和/或本地用户名与远程用户名不匹配(默认用户为docker-user
)引起的。 这可能代表您的问题,您需要更深入地研究。
docker-machine
命令的通用驱动程序对不同的提供程序(例如Google)工作得很好。
检查这些:
• https: //github.com/docker/machine/issues/3522#issuecomment -280275707
• https://docs.docker.com/machine/drivers/generic/
•找不到与该主题相关的其他对话,这些对话使我找到了解决方案。
今天,我发现在我的情况下添加远程Docker主机失败的原因。
[ root @ linodevps〜 ] docker | grep -v grep
根17079 1 0 03:06 00:00:00 / usr / bin / docker daemon -H docker客户端和服务器之间进行本地fd或unix套接字通信,因此它挂在sudo docker上执行docker-machine add时的version命令。
要更正它,只需要编辑docker服务配置文件(默认为/usr/lib/systemd/system/docker.service),从/ usr / bin / docker守护程序-H tcp://更改ExecStart参数的值即可TCP://0.0.0.0 :2376 -H UNIX:///var/run/docker.sock(默认是/ usr / bin中/泊坞窗守护-H fd://)或/ usr / bin / docker守护程序-H tcp://0.0.0.0 :2376,
然后sudo systemctl daemon-reload && sudo systemctl重新启动docker,重新执行docker-machine add命令,稍等片刻,它将成功添加。 在添加过程中,docker-machine将为目标docker主机生成ssl证书,并在名为/etc/systemd/system/docker.service.d的新目录下生成新的docker服务配置文件10-machine.conf。
tdy218 @ Chris-Laptop $ dm ls
名称活动的驱动程序状态URL群集DOCKER错误
docker-vm119-通用运行tcp://192.168.135.119 :2376 v17.03.1-ce
docker-vm120-通用已停止未知
docker-vm119是添加之前已存在的docker主机。
从这种情况下,我们知道支持docker -machine添加@Bean Young。
docker-machine create --driver none -url=tcp://123.123.123.123:2376 dockerhost1
是我很长时间以来对docker所了解的最好的东西!
在用户之间共享开发机器确实应该更容易。
// cc @nathanleclaire
更新:要明确:具体来说,我不介意将证书预共享给其他团队成员。 还有改进的空间。
@dhrp您遵循什么过程来预共享证书? 在哪里可以找到它们?
哦,亲爱的主啊,在过去的一年半里简直不敢相信,没人愿意提出这个问题。
@thaJeztah @AkihiroSuda @albers @tianon您真的认为这不是一个非常普遍和关键的要求吗?
我试图重新设置一个现有的Docker主机( docker-machine create --driver=generic --generic-ip-address <ip> <name>
似乎可以在不使现有证书无效的情况下工作。这是从最初配置Docker主机的同一台机器上完成的...这是预期的结果吗?
您可以重新打开这个问题吗? 我认为这还没有解决。
偶然地偶然发现了这一点。
好吧, @ nathanleclaire明确了要点:这不是在
如果您真的想与团队共享密钥,请继续执行任何源代码管理私人仓库并接受您承担的风险。 要导出所需的密钥,已经有人编写了一个脚本: https :
“没有理由我们不能成为文明人”-莱昂尼达斯
我仍然认为docker-machine应该表现得更像scp。 是什么阻止添加对多个键的支持?
我刚刚找到了一种解决方法。
如果您在同一平台上拥有现有的docker-machine(我的公司是google),并且可以在不需要docker-machine的情况下ssh / scp到该计算机,则可以复制另一台计算机并使它运行。
我做了:
mkdir ~/.docker/machine/machines/new-machine
cp -r ~/.docker/machine/machines/old-machine/* ~/.docker/machine/machines/new-machine/
#then replace all instances of "old-machine" with "new-machine" in ~/.docker/machine/machines/new-machine/config.json
#then add the public key from your new-machine folder into the authorized_keys file for the docker-user on the new machine, e.g.
scp ~/.docker/machine/machines/new-machine/id_rsa.pub docker-user<strong i="8">@new_machine</strong>:/home/docker-user
ssh docker-user<strong i="9">@new_machine</strong> -c "cat ~/id_rsa.pub >>~/.ssh/authorized_keys"
(请勿逐字复制ssh命令,请查找如何正确执行-https://encrypted.google.com/search?hl=zh_CN&q=ssh%20copy%20public%20key)
+1用于导出/导入命令。
+1为多键支持。
不能移动管理工作站是完全不能接受的,并且会造成大量的单点故障。
例如丢失的计算机,盗窃,火灾,硬件故障,软件故障,团队访问问题,管理员问题等...
Docker-machine并未考虑到这一点-这是用于单个开发人员配置的快餐工具。 就是这样,简单明了,并且可以正常工作-而且它是免费的!
此处提到的某些功能已在Docker EE产品中实现(例如团队和RBAC)。
如果人们不能感恩,请至少尝试保持理性。
我不相信此线程中还提到过机器共享:
machine-export <machine-name>
>> exported to <machine-name>.zip
machine-import <machine-name>.zip
>> imported
嘿@andrevtg
对不起,如果我似乎忘了。 我真的很喜欢docker-machine,认为这会让它变得更好。
我认为,单个开发人员能够轻松地在计算机之间移动的功能将非常有用。
如果我的日程安排释放了,我可能会尝试学习GO并尝试添加此功能。
嘿@ dmitrym0
我认为这张票更着重于缺乏连接到现有远程Docker主机的能力。
据说机器共享在移动本地Docker主机时很有用。
谢谢你的建议。
@ Jared-Harrington-Gibbs机器共享专门解决了“添加现有的docker-machine hosts_”的问题。 我们通过docker-compose部署了各种应用程序,并且对我们来说效果很好。 我们使用machine-share
导出证书集,并将其分发给需要它的团队中的所有成员。 这不是理想的方法,但是可以。
我尝试使用通用驱动程序添加现有的docker主机,它会在重试几次后成功添加。
@sneak此解决方案似乎不适用于我,因为config.json
的路径不会指向正确的文件。 我假设docker-machine
依赖config.json
文件,但是我可能是错的,尚未进行测试。
这给我带来了一个问题,因为我可能是在一个我可能不知道文件存储确切路径的环境中执行的。也许可以有一个相对路径选项?
如果问题在于人力,我可以花几天时间尝试为社区提供解决方案。 宁愿从维护者那里得到一些指导。 在这种情况下, [Resolved]
是否表示决定不本机支持此功能,还是已经在我看不到的地方支持了该功能?
此功能根本不打算实现。 期望远程机器存储除了原始开发者的机器之外不应该存在的私钥是没有意义的。
甚至Docker EE都确保每次请求时都会生成不同的“客户端捆绑包”,并且不会将其存储在主机上。
这里的人们要求的是一种易于实现的功能,但是由于合理的安全性约束而完全没有意义。
@andrevtg请求不是为VM本身存储密钥(这将使密钥完全无用),而是为docker-machine客户端(由代码构成,这是一个实际的应用程序),为用户提供一种方法自愿将密钥从一个客户端传输到另一个客户端。
一种简单的方法可能是提供一个docker-machine export
命令,将密钥捆绑到一个归档文件中,并提供一个相应的docker-machine import
命令,用于该归档文件的接收者导入描述的机器。档案。 这样,在密钥传输的边界进行加密/解密就成为用户的业务(他们可以使用PGP电子邮件,SFTP,无论他们想要什么)。
恰好docker-machine create
构成了一个巨大的配置文件和新手不理解或不知道如何复制的密钥。 也许创建ssh密钥就像将密钥添加到hosts文件一样简单,但这没有记录。 我们将其添加到哪个容器? 我们如何在另一台计算机上进行设置并将其通知docker-machine
? 我们还可以使用docker-machine use
还是必须手动设置所有环境变量。
理想情况下,应该有一个docker-machine add [name]
来添加密钥, docker-machine export
来导出配置文件,以及docker-machine import
来将这些配置文件导入另一台计算机。 拥有docker-machine rm [name]
来撤消对密钥的访问也将很不错。
@dhrp我有一个在rpi上运行的
docker-machine create --driver none -url=tcp://raspberry.local:22 rpihost
这样行吗?
那么@ 360disrupt ,对吗? 我在同一个用例中挣扎。
那么@ 360disrupt ,对吗? 我在同一个用例中挣扎。
还没有。
嗨,大家好。 这个还没解决吗? 对于我工作的公司中的每个应用程序,我们都使用docker。 我们最大的问题与共享机器有关。 我尝试多次使用通用驱动程序,但是这种方法的问题在于,当您使用通用驱动程序创建计算机并将其与现有服务器连接时,创建操作只会删除服务器中当前正在运行的容器。
我们发现的唯一方法是在Python中构建一个简单的脚本,该脚本仅导入和导出开发人员想要访问的计算机。 该脚本负责将所有配置文件和证书从计算机所有者复制到新源。 它运行良好,我们对此没有任何问题,只是我不敢相信没有共享私有证书的共享计算机的正式方法。
我正在一个项目中,我将其发布在GitHub上,以另一种方式解决此问题。 基本上,我只是在构建一个PaaS,它将集中我们公司所拥有的所有机器的所有证书。 当有人要部署或执行类似操作时,您只需连接PaaS,而不是服务器。 就像一条隧道。 不久我将发布此PaaS的第一个版本。
为docker-machine add
或docker-machine create --existing
+1
这解决了我的问题: machine-share :computer::rabbit2:
@dweomer难道不是从另一台计算机添加现有的
@atemerev :不,我认为不是。 据我了解,Docker Machine存在于创建/配置支持Docker的主机。
话虽这么说,但我认为@ tdy218应该使用稍微不太明显的
generic
驱动程序。generic
驱动程序将接管主机并重新配置它。 它所需要的只是一个运行中的主机,该主机带有ssh守护程序,并且该主机上的用户具有无密码的sudo
访问权限(或仅具有root用户权限)。 这种重新配置是无损的,因为现有的Docker安装最多将被升级。
我知道这似乎是一个已解决的问题,但是我只想声明我必须同意@atemerev :作为开发团队,我们几乎需要每周连接到其他预配置的计算机。
这解决了我的问题:机器共享
我可以确认此npm软件包确实起作用。
最有用的评论
@dweomer难道不是从另一台计算机添加现有的