这样的事情应该适用于转移机器:
$ machine export test | ssh anotherhost machine import
(也许我们可以使用machine inspect
?)
这有什么收获? 从我的角度来看,使用计算机的目标是建立一台带有docker的简单计算机(没有花哨的东西或自定义的东西)。 考虑到这一点,创建或导出->导入计算机是完全相同的,不会给我带来任何好处。
创建计算机时,只能使用它并在一台计算机上对其进行管理。 你可能想要:
1)备份您的主机
2)将它们转移到另一台计算机
3)与团队成员分享
我们是否应该有一个drop
命令,以便我们可以将计算机从列表中删除而不终止它? 我认为将某些计算机导出并转移到另一台计算机后可能有用。
保存的文件将包含什么内容? 即它会包含用于连接到守护程序的令牌吗?
理想情况下,应该有一些东西可以管理计算机/人员以访问主机。 按照一次性令牌的思路进行思考,该令牌可以将新计算机连接到现有主机。
@bfirsh @waitingkuo这似乎是我们在Rancher上使用的一个非常有用的功能(我们想在机器服务器端使用)。
实施(#29)似乎已停止的任何原因。 我可以做些什么尝试尝试吗?
+1很棒
+1
+1
+1
我们创建了一个自己使用的工具,可以轻松导出docker-machines。 基本上,它导出所有证书ssh密钥。 欢迎反馈!
可能是一个矫kill过正,但像docker-machine Registry这样的东西太棒了!
当前,我们正在使用git repo共享docker设置,问题是我们中有些人拥有virtualbox机器,这就是缺点
@kevinsimper您如何将它们导入回来?
这个问题是否包括在开发人员之间共享集群的想法?
@saada我认为它仅涵盖凭据共享,而不涉及集群配置。
在机器中拥有这种能力真是太棒了。
目前我只知道https://github.com/efrecon/machinery和https://github.com/nathanleclaire/moby
+1
我正在寻找在同一主机中的用户之间共享计算机的功能。
对此有解决方法吗? 我现在正在复制整个~/.docker/machine/
文件夹
+1
+1
+1
+1
+1
+1
+1
+1
+1
我认为,显示您的意图的更好方法是单击Subscribe
(在右侧的Notifications )
我已经编写了一个导入/导出脚本,在此功能可以本地实现之前,您可以在此期间使用。 希望这可以帮助 :)
@schickling也许要在此存储库的“ contrib”目录中添加一些内容? https://github.com/docker/machine/tree/master/contrib/completion
不幸的是,我没有时间atm来做,但是请随时将它放到那里!
+1
+1
+1
我写了另一个小工具来导出/导入docker机器。 我们将其用于CI部署。 https://www.npmjs.com/package/@mumbacloud/dmport
谢谢kevinsimper的https://github.com/blackbeardapp/docker-machine-export,我用你的想法将其导出为JSON,这使得它在CI环境中具有很高的可移植性。
我还开始处理一些导出/导入脚本,我真的不明白为什么certs
和特定机器文件夹machines/<myMachine>
有一些重复的文件。 同样在将config.json
中的路径调整为.docker/machine/machines...
之外的一些自定义路径后,我注意到docker仍然希望某些证书/ pems /密钥位于该文件夹中
谁能推荐一些有关实际位置的文档?
看起来Node.js开发人员正在积极使用它(并重写自己的解决方案)。 我通过推特找到了这个
https://www.npmjs.com/package/machine-share
共享您的Docker Machine配置:
npm install -g machine-share
machine-export <machine-name>
machine-import <machine-name>.zip
如果未安装Node,则同一节点程序包(如@StefanScherer所述)也具有shell脚本。
https://github.com/bhurlow/machine-share/blob/master/export.sh
https://github.com/bhurlow/machine-share/blob/master/import.sh
但是,这是一种解决方法,docker-machine应该处理此问题,理想情况下,应为每个开发人员/用户提供唯一的证书(因此可以撤销)。
我当前的导出/导入脚本存在的问题是它们将覆盖~/.docker/machine/certs
现有文件,不是吗?
我只能代表dmport,如果存在,它将覆盖文件。
这对我们来说不是问题,因为我们在docker ci中使用了它
没有任何要覆盖的东西,因为它是每个容器上的新容器
部署。
我打算尽快清理dmport,可以添加一个标志来防止
覆盖现有文件(如果有帮助)
2016年6月1日,上午1:54,“ Max Bruchmann” [email protected]写道:
我当前的导出/导入脚本存在的问题是它们
会覆盖〜/ .docker / machine / certs中的现有文件,不是吗?-
您收到此邮件是因为您发表了评论。
直接回复此电子邮件,在GitHub上查看
https://github.com/docker/machine/issues/23#issuecomment -222932695或静音
线程
https://github.com/notifications/unsubscribe/ADIV-3T7FEa9CJvn_UdTb9AeQfwI3lkCks5qHUjegaJpZM4DFGT5
。
+1
我们正在使用docker容器执行此任务-还有什么😄
想法还在于为所有用户提供相同的环境(例如,证书配置路径),并作为主机卷安装。 您可以在roj创建的容器中使用docker-machine
, docker-compose
和docker
。 您可以通过电子邮件将数据文件夹作为zip传递,也可以将其放入私人git仓库中。
+1
我不确定我的用例是否与其他用例相同-我已经为不同目的创建了几台不同的机器,并且我想备份它们的存在和(较小的)配置。 我只希望有一些简单的文本文件用于重新创建框。
https://www.npmjs.com/package/machine-share似乎并不尊重我的MACHINE_STORAGE_PATH。 schickling的脚本备份了几个大型二进制文件(例如,boot2docker.iso)。 https://www.npmjs.com/package/@mumbacloud/dmport引发了一些错误。
我们还需要此功能,我们已经使用docker-machine在gcloud上创建了用于开发的计算机,并且我希望允许我的同事执行到容器中并查看日志。
我真的很惊讶这还不被支持。 我的示例是我从笔记本电脑在Azure中创建了一个docker swarm集群(无需一路思考),现在我希望其他开发人员能够管理该集群,因此我在Azure中创建了一个所有人都可以共享的共享VM。 我安装了docker-machine,现在我需要一种将计算机从笔记本电脑导入Azure中的跳转框的方法。
@jcrben嗨,关于MACHINE_STORAGE_PATH在计算机共享上发布
我最近查看了blowlow的工作,并很好奇是否有任何问题
@jcrben您是否也尝试过https://github.com/dmstr/docker-roj? ...我只是古玩。
人民,出于对万物的热爱,请👍出自OP,而不是作为孤立的评论。 “ +1”垃圾邮件分散了谈话的注意力。
仅供参考: #3212
@lnshi我认为导入带有docker-machine create -d generic ...
的现有Docker服务器的问题是它会重新创建证书并重新启动Docker,因此不适用于生产/团队合作方案。
我知道@pedrodevoto ,我刚才提到了这些问题,因为ppl在那儿讨论了很多。
目前,我认为尚无合适的解决方案。
@ntwrkguru仍然,它使问题相关和生动。 表情符号没有通知。
这个问题已经有将近4年的历史了,我怀疑更多的+1评论会突然使它成为优先事项。
@ntwrkguru只要
现在,我不知道码头工人团队如何优先考虑问题,但我敢打赌他们也有付费客户,我敢打赌,在查看公共社区功能要求之前,我总是会优先考虑这个问题。
一样: https :
我刚刚习惯了docker,并使用docker-machine构建了我的第一台主机。 现在一天后,我正尝试使用另一台工作站连接到我的Docker主机...惊讶地发现这是不可能的,至少在没有一些重大麻烦的情况下。 似乎是允许团队管理主机的基本功能...
那是因为docker-machine从未被设计为团队工具。 这意味着个人可以轻松创建自动安装docker并设置dockerd TLS证书以进行远程cli管理的VM。
如果您尝试为团队构建和部署Docker环境,则可能要使用其他工具。
@BretFisher ,那是什么工具? 并不是我想将其用于团队,仅来自3个不同的工作站...
docker-machine的一大好处是,它在docker引擎上设置了TLS,以进行远程CLI管理。
今天发布了Docker Engine 18.09,它具有一项强大的新功能,该功能允许使用SSH隧道(各种)进行远程cli管理,对于我们这些人来说,这是一种更好的IMO,而无需使用完整的Docker引擎RBAC。 对于那些仅使用docker-machine来简化远程管理的人,我建议在18.09中进行检查。 docker服务器和客户端都必须在18.09上,并且只要可以SSH登录,就可以远程使用cli。
Docker船长Luc Juggery对此进行了快速撰写。 我希望它将成为远程使用docker的默认方式。
我明白了你在说什么@BretFisher ,但是将它放在docker-machine中将是一件很不错的事情,因为它仍然可以跟踪遥控器。 如果我要通过SSH管理它们,那么我什至不会费心地使用docker-machine来部署它们,而是使用Ansible。 Docker-machine是另一个可能很棒的工具,但由于缺乏开发而被贬低为普通工具。
单个用户的@adilinden选项包括:
在私有和/或加密的git repo中在这些机器之间同步~/.docker/machine/machines
。 您可能还需要~/.docker/machine/certs
,我不确定。 由于它存储的是私人证书,因此必须相当安全。
选择一个已经安装了docker的AMI,Droplet等,然后进行部署。 然后使用新的18.09 SSH功能远程控制docker引擎。
尝试使用上面导出/导入机器数据目录的众多工具之一。
@BretFisher我真的很喜欢#2,对于我的情况来说,这似乎是目前为止最好的选择,因为所有旋钮和按钮都已安装到位。 切换主机看起来也很简单,因为它只是设置单个环境变量。
现在只是想知道如何将Mac的Docker升级到18.09而不是18.06.1-ce-mac73(26764)。
@ntwrkguru docker -machine非常适合一次性机器或个人设置,或者最多只需
在SSH上,在这种情况下,您将不使用ansible,我的意思是,一旦您部署了任何运行18.09+的docker服务器(可用或其他),只要您对该服务器具有SSH许可,现在可以做类似的事情:
docker -H ssh://[email protected] run -p 80:80 nginx
要么DOCKER_HOST=ssh://[email protected] docker system prune
无需任何特殊配置或设置即可远程控制该引擎。 能够导出envvar,然后针对该引擎运行一堆命令(而无需将它们包装在ansible中,等等)非常方便。
@adilinden Linux版本今天才发布,因此您需要给团队几天或一周的时间来推出所有使用它的下游产品:)。 如果您今天想使用它,请使用边缘版本,该版本具有18.09 Beta,在Mac上对我来说效果很好。
诚然,几年来我一直没有碰过docker-machine。 我还有4台服务器运行纯Docker引擎。
那么, docker -H ssh://[email protected] run -p 80:80 nginx
和ssh://[email protected] docker run -p 80:80 nginx
之间的好处是什么?
不争辩我想知道是否有明显的好处。
@ntwrkguru我可以使用docker -H ssh://[email protected] .
命令在工作站上的Docker文件中进行构建。 而使用ssh -luser 10.10.10.10 docker build .
失败(按预期)
只是为了提供信息,也可以使用ssh进行套接字转发。 根据https://medium.com/@dperny/forwarding -the-docker-socket-over-ssh-e6567cfab160,但稍作修改。
在一个终端会话中运行
ssh -nNT -L $(pwd)/docker.sock:/var/run/docker.sock -l user 10.10.10.10
在另一轮中
docker -H "unix:///$(pwd)/docker.sock" run -p 80:80 nginx
要么
export DOCKER_HOST="unix:///$(pwd)/docker.sock"
docker run -p 80:80 nginx
我遇到了同样的问题,并创建了shell脚本来进行备份和还原:
https://github.com/usr42/docker-machine-backup
仅备份真正需要的数据。 例如,备份中没有iso文件。
最有用的评论
创建计算机时,只能使用它并在一台计算机上对其进行管理。 你可能想要:
1)备份您的主机
2)将它们转移到另一台计算机
3)与团队成员分享