Machine: 进出口机器

创建于 2014-12-06  ·  67评论  ·  资料来源: docker/machine

这样的事情应该适用于转移机器:

 $ machine export test | ssh anotherhost machine import

(也许我们可以使用machine inspect ?)

kinenhancement

最有用的评论

创建计算机时,只能使用它并在一台计算机上对其进行管理。 你可能想要:

1)备份您的主机
2)将它们转移到另一台计算机
3)与团队成员分享

所有67条评论

这有什么收获? 从我的角度来看,使用计算机的目标是建立一台带有docker的简单计算机(没有花哨的东西或自定义的东西)。 考虑到这一点,创建或导出->导入计算机是完全相同的,不会给我带来任何好处。

创建计算机时,只能使用它并在一台计算机上对其进行管理。 你可能想要:

1)备份您的主机
2)将它们转移到另一台计算机
3)与团队成员分享

我们是否应该有一个drop命令,以便我们可以将计算机从列表中删除而不终止它? 我认为将某些计算机导出并转移到另一台计算机后可能有用。

保存的文件将包含什么内容? 即它会包含用于连接到守护程序的令牌吗?

理想情况下,应该有一些东西可以管理计算机/人员以访问主机。 按照一次性令牌的思路进行思考,该令牌可以将新计算机连接到现有主机。

@bfirsh @waitingkuo这似乎是我们在Rancher上使用的一个非常有用的功能(我们想在机器服务器端使用)。

实施(#29)似乎已停止的任何原因。 我可以做些什么尝试尝试吗?

+1很棒

+1

+1

+1

我们创建了一个自己使用的工具,可以轻松导出docker-machines。 基本上,它导出所有证书ssh密钥。 欢迎反馈!

https://github.com/blackbeardapp/docker-machine-export

可能是一个矫kill过正,但像docker-machine Registry这样的东西太棒了!

当前,我们正在使用git repo共享docker设置,问题是我们中有些人拥有virtualbox机器,这就是缺点

@kevinsimper您如何将它们导入回来?

这个问题是否包括在开发人员之间共享集群的想法?

@saada我认为它仅涵盖凭据共享,而不涉及集群配置。
在机器中拥有这种能力真是太棒了。
目前我只知道https://github.com/efrecon/machineryhttps://github.com/nathanleclaire/moby

+1

我正在寻找在同一主机中的用户之间共享计算机的功能。
对此有解决方法吗? 我现在正在复制整个~/.docker/machine/文件夹

+1

+1

+1

+1

+1

+1

+1

+1

+1

我认为,显示您的意图的更好方法是单击Subscribe (在右侧的Notifications

我已经编写了一个导入/导出脚本,在此功能可以本地实现之前,您可以在此期间使用。 希望这可以帮助 :)

https://gist.github.com/schickling/2c48da462a7def0a577e

@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-machinedocker-composedocker 。 您可以通过电子邮件将数据文件夹作为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选项包括:

  1. 在私有和/或加密的git repo中在这些机器之间同步~/.docker/machine/machines 。 您可能还需要~/.docker/machine/certs ,我不确定。 由于它存储的是私人证书,因此必须相当安全。

  2. 选择一个已经安装了docker的AMI,Droplet等,然后进行部署。 然后使用新的18.09 SSH功能远程控制docker引擎。

  3. 尝试使用上面导出/导入机器数据目录的众多工具之一。

@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 nginxssh://[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文件。

此页面是否有帮助?
0 / 5 - 0 等级