如何使用 Hyper-V 连接到网络设置中的 docker 服务器
How to connect to a docker server on the network set-up with Hyper-V
基本上我的问题是:如何连接到网络上的 docker 主机?
背景:
我们有一台 Windows Server 2012 机器,我想从中 运行 一个 docker 引擎。
我已经设法得到它 运行 docker-机器和 hyperv 驱动程序。我还成功地获得了一个 docker 主机,可以使用 VirtualBox 在我的本地计算机上工作,并且一直在使用它。
为了让网络上的其他人在永久设置中更轻松地访问 docker,我想在具有 Hyper-V 的服务器上使用 docker 主机实例。
在搜索答案时,我找不到任何关于在网络上配置主机的提及,只能在本地和云上找到。
我想知道我必须使用什么命令才能将本地 docker 机器连接到服务器的 docker 主机,并将其用作活动 docker主持人?
有一篇博客 post 解释了如何使用通用驱动程序添加具有 IP 的 docker 引擎,以及您需要完成的一些额外步骤。
ADDING AN EXISTING DOCKER HOST TO DOCKER MACHINE : A FEW TIPS
SSH 密钥
关于证书的底部解释了如何在使用 create
命令连接后在远程 docker 引擎上工作
旧答案
为了 create/connect 成功,本地机器必须能够通过 ssh 连接到远程 docker 引擎,而不仅仅是托管 docker 引擎的服务器。这意味着在本地计算机上生成并添加了 public 密钥(使用 puttygen 或 ssh-keygen),OpenSSH RSA public 密钥已添加到 ~/.ssh/authorized_keys
中的授权密钥列表中远程 docker 引擎。
OpenSSH RSA public 密钥的示例(因为我对这些格式感到困惑):
ssh-rsa AAAAB3NzaC1kc3MAAACBAJ3hB5SAF6mBXPlZlRoJEZi0KSIN+NU2iGiaXZXi9CDrgVxTp6/sc56UcYCp4qjfrZ2G3+6PWbxYso4P4YyUC+61RU5KPy4EcTJske3O+aNvec/20cW7PT3TvH1+sxwGrymD50kTiXDgo5nXdqFvibgM61WW2DGTKlEUsZys0njRAAAAFQDs7ukaTGJlZdeznwFUAttTH9LrwwAAAIAMm4sLCdvvBx9WPkvWDX0OIXSteCYckiQxesOfPvz26FfYxuTG/2dljDlalC+kYG05C1NEcmZWSNESGBGfccSYSfI3Y5ahSVUhOC2LMO3JNjVyYUnOM/iyhzrnRfQoWO9GFMaugq0jBMlhZA4UO26yJqJ+BtXIyItaEEJdc/ghIwAAAIBFeCZynstlbBjP648+mDKIvzNSS+JYr5klGxS3q8A56NPcYhDMxGn7h1DKbb2AV4pO6y+6hDrWo3UT4dLVuzK01trwpPYp6JXTSZZ12ZaXNPz7sX9/z6pzMqhX4UEfjVsLcuF+ZS6aQCPO0ZZEa1z+EEIZSD/ykLQsDwPxGjPBqw= rsa-key-20160224
在远程 docker 引擎中没有这个密钥,当我试图 docker ssh
进入它时给了我一个 exit status 255
。此时,只有常规 ssh docker@192.168.1.165
有效。准备重复上述过程。
这篇文章也提到了 sudo,但是 Hyper-V 驱动程序使用的 boot2docker 映像已经允许无密码 sudo,所以这部分已经完成了。
端口
确保允许 TCP 端口 2376 连接到远程 docker 引擎,通过服务器的防火墙规则、物理防火墙等
命令 运行
然后这个命令将远程引擎连接到docker-machine:
> docker-machine create --driver generic --generic-ip-address 192.168.1.165 --generic-ssh-user %USERNAME% vm
> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.101:2376 v1.10.1
vm - generic Running tcp://192.168.1.165:2376 Unknown
vm
是网络上新增的docker引擎,192.168.1.165是docker引擎在服务器上的IP
证书
如果可行,只需从远程服务器目录 %USERPROFILE%\.docker\machine\machines\<server's local docker engine name>
复制证书(ca.pem、ca-key.pem、cert.pem、key.pem) ] 到本地机器上的相同位置应该保持连接。 不要使用docker-machine regenerate-certs
,因为这会禁用其他计算机可能与该docker引擎建立的任何连接,包括服务器本身。
活跃
然后最后激活引擎完成连接。
> IF /F "tokens=*" %G ('docker-machine env vm') do %G
注意:This issue 指出命令 docker-machine create --driver none --url=tcp://192.168.1.165:2376 <name>
也应该添加远程机器的 docker 引擎,如果 "none" 驱动程序在未来的版本中工作.
基本上我的问题是:如何连接到网络上的 docker 主机?
背景:
我们有一台 Windows Server 2012 机器,我想从中 运行 一个 docker 引擎。
我已经设法得到它 运行 docker-机器和 hyperv 驱动程序。我还成功地获得了一个 docker 主机,可以使用 VirtualBox 在我的本地计算机上工作,并且一直在使用它。
为了让网络上的其他人在永久设置中更轻松地访问 docker,我想在具有 Hyper-V 的服务器上使用 docker 主机实例。
在搜索答案时,我找不到任何关于在网络上配置主机的提及,只能在本地和云上找到。
我想知道我必须使用什么命令才能将本地 docker 机器连接到服务器的 docker 主机,并将其用作活动 docker主持人?
有一篇博客 post 解释了如何使用通用驱动程序添加具有 IP 的 docker 引擎,以及您需要完成的一些额外步骤。
ADDING AN EXISTING DOCKER HOST TO DOCKER MACHINE : A FEW TIPS
SSH 密钥
关于证书的底部解释了如何在使用 create
命令连接后在远程 docker 引擎上工作
旧答案
为了 create/connect 成功,本地机器必须能够通过 ssh 连接到远程 docker 引擎,而不仅仅是托管 docker 引擎的服务器。这意味着在本地计算机上生成并添加了 public 密钥(使用 puttygen 或 ssh-keygen),OpenSSH RSA public 密钥已添加到 ~/.ssh/authorized_keys
中的授权密钥列表中远程 docker 引擎。
OpenSSH RSA public 密钥的示例(因为我对这些格式感到困惑):
ssh-rsa AAAAB3NzaC1kc3MAAACBAJ3hB5SAF6mBXPlZlRoJEZi0KSIN+NU2iGiaXZXi9CDrgVxTp6/sc56UcYCp4qjfrZ2G3+6PWbxYso4P4YyUC+61RU5KPy4EcTJske3O+aNvec/20cW7PT3TvH1+sxwGrymD50kTiXDgo5nXdqFvibgM61WW2DGTKlEUsZys0njRAAAAFQDs7ukaTGJlZdeznwFUAttTH9LrwwAAAIAMm4sLCdvvBx9WPkvWDX0OIXSteCYckiQxesOfPvz26FfYxuTG/2dljDlalC+kYG05C1NEcmZWSNESGBGfccSYSfI3Y5ahSVUhOC2LMO3JNjVyYUnOM/iyhzrnRfQoWO9GFMaugq0jBMlhZA4UO26yJqJ+BtXIyItaEEJdc/ghIwAAAIBFeCZynstlbBjP648+mDKIvzNSS+JYr5klGxS3q8A56NPcYhDMxGn7h1DKbb2AV4pO6y+6hDrWo3UT4dLVuzK01trwpPYp6JXTSZZ12ZaXNPz7sX9/z6pzMqhX4UEfjVsLcuF+ZS6aQCPO0ZZEa1z+EEIZSD/ykLQsDwPxGjPBqw= rsa-key-20160224
在远程 docker 引擎中没有这个密钥,当我试图 docker ssh
进入它时给了我一个 exit status 255
。此时,只有常规 ssh docker@192.168.1.165
有效。准备重复上述过程。
这篇文章也提到了 sudo,但是 Hyper-V 驱动程序使用的 boot2docker 映像已经允许无密码 sudo,所以这部分已经完成了。
端口
确保允许 TCP 端口 2376 连接到远程 docker 引擎,通过服务器的防火墙规则、物理防火墙等
命令 运行
然后这个命令将远程引擎连接到docker-machine:
> docker-machine create --driver generic --generic-ip-address 192.168.1.165 --generic-ssh-user %USERNAME% vm
> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
default - virtualbox Running tcp://192.168.99.101:2376 v1.10.1
vm - generic Running tcp://192.168.1.165:2376 Unknown
vm
是网络上新增的docker引擎,192.168.1.165是docker引擎在服务器上的IP
证书
如果可行,只需从远程服务器目录 %USERPROFILE%\.docker\machine\machines\<server's local docker engine name>
复制证书(ca.pem、ca-key.pem、cert.pem、key.pem) ] 到本地机器上的相同位置应该保持连接。 不要使用docker-machine regenerate-certs
,因为这会禁用其他计算机可能与该docker引擎建立的任何连接,包括服务器本身。
活跃
然后最后激活引擎完成连接。
> IF /F "tokens=*" %G ('docker-machine env vm') do %G
注意:This issue 指出命令 docker-machine create --driver none --url=tcp://192.168.1.165:2376 <name>
也应该添加远程机器的 docker 引擎,如果 "none" 驱动程序在未来的版本中工作.