首先,我在Docker中完全是n00b,但是我进入了一个实际上在docker中运行的项目,所以我一直在阅读它。
我的问题是,我必须在移动设备(iOS)中检查我的开发环境。我试图通过我的docker ip访问,因为这是我在计算机中基本上做的事情。尝试几次失败后,我注意到我要使用 docker网桥而不是 docker host (默认设置)进行访问。
我已经定义了我的docker bridge(我认为它是默认的),但我不知道如何使用这个网络运行我的服务器,你们可以帮帮我吗?
一些重要的注意事项:
我运行服务器的以下步骤是:
当我运行docker ps
我的输出时:
我的码头桥输出:
{
"Name": "bridge",
"Id": "1b3ddfda071096b16b92eb82590326fff211815e56344a5127cb0601ab4c1dc8",
"Scope": "local",
"Driver": "bridge",
"EnableIPv6": false,
"IPAM": {
"Driver": "default",
"Options": null,
"Config": [
{
"Subnet": "172.17.0.0/16",
"Gateway": "172.17.0.1"
}
]
},
"Internal": false,
"Containers": {
"565caba7a4397a55471bc6025d38851b1e55ef1618ca7229fcb8f8dfcad68246": {
"Name": "gsatgrupo5_mongo_1",
"EndpointID": "471bcecbef0291d42dc2d7903f64cba6701f81e003165b6a7a17930a17164bd6",
"MacAddress": "02:42:ac:11:00:05",
"IPv4Address": "172.17.0.5/16",
"IPv6Address": ""
},
"5e4ce98bb19313272aabd6f56e8253592518d6d5c371d270d2c6331003f6c541": {
"Name": "gsatgrupo5_thumbor_1",
"EndpointID": "67f37d27e86f4a53b05da95225084bf5146261304016809c99c7965fc2414068",
"MacAddress": "02:42:ac:11:00:03",
"IPv4Address": "172.17.0.3/16",
"IPv6Address": ""
},
"a0b62a2da367e720d3a55deb7377e517015b06ebf09d153c6355b8ff30cc9977": {
"Name": "gsatgrupo5_web_1",
"EndpointID": "52687cc252ba36825d9e6d8316d878a9aa8b198ba2603b8f1f5d6ebcb1368dad",
"MacAddress": "02:42:ac:11:00:06",
"IPv4Address": "172.17.0.6/16",
"IPv6Address": ""
},
"b3286bbbe9259648f15e363c8968b64473ec0a9dfe1b1a450571639b8fa0ef6f": {
"Name": "gsatgrupo5_mysql_1",
"EndpointID": "53290cb44cf5ed8322801d2dd0c529518f7d414b3c5d71cb6cca527767dd21bd",
"MacAddress": "02:42:ac:11:00:04",
"IPv4Address": "172.17.0.4/16",
"IPv6Address": ""
}
},
"Options": {
"com.docker.network.bridge.default_bridge": "true",
"com.docker.network.bridge.enable_icc": "true",
"com.docker.network.bridge.enable_ip_masquerade": "true",
"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",
"com.docker.network.bridge.name": "docker0",
"com.docker.network.driver.mtu": "1500"
},
"Labels": {}
}
]
如果还有其他智能方法可以在我的移动设备中访问我的环境,我正在听。
答案 0 :(得分:0)
我要使用docker网桥而不是docker host(默认)访问。
除非你的协议有些奇怪,比如从服务器连接回设备,通常从你的设备访问<macip>:8000
就足够了。你能从其他任何计算机上测试服务吗?
如果您确实需要直接访问容器网络,那么在使用Mac时会有点困难......
适用于Mac的Docker doesn't support direct access to the Linux virtual machines bridge networks您的容器在哪里运行。
Docker Toolbox 使用boot2docker vm映像运行VirtualBox VM。可以使用它,但将自定义网络配置应用于通过docker-machine
工具设置和运行的VM有点困难。
普通 Virtualbox 可能是您安装Docker运行自己的VM的最佳选择。
在Virtualbox中向VM添加两个bridged network interfaces。一个用于VM,一个用于容器,因此它们都可以在主网络上使用。
第一个接口用于主机。它应该像正常一样从DHCP中获取地址,然后Docker将在您的普通网络上可用。
在v1.10之前版本的docker Pipework可用于physically mapped an interface in to the container。
有一些specific VirtualBox interface setup required for both methods可以确保这一切正常。
Vagrant可能会使VM设置更容易和可重复。
$ mkdir dockervm
$ cd dockervm
$ vagrant init debian/jessie64
Vagrantfile
网络配置:
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
config.vm.network "public_network", bridge: "en1: Wi-Fi (AirPort)"
config.vm.provider "virtualbox" do |v|
v.customize ['modifyvm', :id, '--nictype1', 'Am79C973']
v.customize ['modifyvm', :id, '--nicpromisc1', 'allow-all']
v.customize ['modifyvm', :id, '--nictype2', 'Am79C973']
v.customize ['modifyvm', :id, '--nicpromisc2', 'allow-all']
end
请注意,此VM将具有3个接口。第一个接口是Vagrant用作管理地址,应保持原样。
启动
$ vagrant up
$ vagrant ssh