所以我使用Docker Toolbox因为我的机器上没有Hyper-V,因为它不是Windows 10专业版。一切似乎工作正常,但当我尝试使用我的浏览器0.0.0.0:80
时,它总是返回我:无法访问此站点
但是当我运行命令时:docker container ps
我得到以下内容:0.0.0.0:80->80/tcp
表示此地址应该有效。我搜索了stackoverflow和github问题。现在我被卡住了。
我错过了什么吗?
谢谢, 标记
编辑:
使用docker-machine ip default
返回192.168.99.100
。我在端口80上运行它。除了地址成为容器ID之外,我仍然得到相同的结果:https://fd677edg12
我在cmd上运行该命令以找到我的ipv4:cmd /k ipconfig /all
。将结果与端口放在一起,它返回相同的内容:https://fd677edg12
答案 0 :(得分:110)
Docker Toolbox没有像Docker for Windows那样多的便利,但是你使用它是正确的,因为你在家庭版上。
在Toolbox中,没有任何内容@interface A : NSMutableDictionary
@end
@implementation A
- (void)encodeWithCoder:(NSCoder *)aCoder
{
}
- (nullable instancetype)initWithCoder:(NSCoder *)aDecoder
{
if (self = [super init]) {
}
return self;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
A *a = [[A alloc] init];
NSMutableDictionary *dict = [NSMutableDictionary new];
dict[@"some"] = a;
NSData *archive = [NSKeyedArchiver archivedDataWithRootObject:dict];
dict = [NSKeyedUnarchiver unarchiveObjectWithData:archive];
NSLog(@"%@",dict);
}
,默认情况下为localhost
,因为它在VirtualBox中运行Linux VM。
因此,如果您运行192.168.99.100
(注意我必须为docker run -p 80:80 nginx
发布一个端口来监听该端口)
然后转到192.168.99.100
应该可以。
答案 1 :(得分:36)
我最初在使用DockerToolBox和OracleVM VirtualBox时在localhost:8080访问我的应用程序时遇到了一些问题。
在VirtualBox中:
8080
&访客港8080
;务必将主机IP和访客IP留空运行命令:
docker run -p 8080:8080 ${image_id}
答案 2 :(得分:25)
我正在https://docs.docker.com/docker-for-windows/#set-up-tab-completion-in-powershell跟踪docker for windows教程,并在网络浏览器中测试nginx时陷入第6步。似乎我遇到了类似的问题,因为我也使用Windows Home而且没有Hyper-V。我的解决方法非常简单:
$ docker-machine ip default
192.168.99.100
转到Oracle虚拟机以设置端口转发。确保网络设置为NAT,并添加端口转发。 主机IP:127.0.0.1,访客IP:192.168.99.100,端口全部设置为80 like this
再次尝试浏览器并运行http://localhost或http://127.0.0.1(也可以添加端口80)。它应该运行。
问题是nginx IP可以在docker虚拟机中访问,因此我们需要该端口转发设置才能直接在主机的浏览器中访问它
答案 3 :(得分:0)
您可以按照以下说明使用localhost
代替“ 192.168.99.100”:
步骤#01:
docker-machine ip default
您将看到默认IP
步骤#02:
docker-machine stop default
步骤#03:
VirtualBox Manager
)i.e, app name : nginx, host: 127.0.0.1, host port: 80, guest port: 80
步骤#04: 现在,您可以通过执行以下操作来启动Docker Machine:
docker-machine start default
然后只需启动Docker容器,您就可以通过localhost访问它。
Have a look here了解详情。
答案 4 :(得分:0)
要映射期望的端口到localhost
而不是直接命中docker-machine IP,可以使用VirtualBox CLI。
如果docker-machine VM(这里称为default
)正在运行,请添加和删除如下规则:
> VBoxManage.exe controlvm "default" natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe controlvm "default" natpf1 delete nginx
如果虚拟机未运行,或者您要在更改之前停止:
> docker-machine stop
> VBoxManage.exe modifyvm "default" --natpf1 "nginx,tcp,,8888,,8888"
> VBoxManage.exe modifyvm "default" --natpf1 delete "nginx"
> docker-machine start
其中端口转发规则的格式为[<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>
。
请注意,在VirtualBox中,您想映射到Docker映射的 host 端口,而不是内部容器端口。您正在映射主机-> VM,然后Docker映射VM->容器。
请参见VirtualBox docs。
答案 5 :(得分:0)
这是避免键入IP 192.168.99.100的另一种简便方法。
转到C:\Windows\System32\drivers\etc\hosts
并在文件末尾添加:
192.168.99.100 docker.awesome
或您喜欢的任何名称。
保存文件(您需要具有管理员权限,因此请确保右键单击该文件并以管理员身份运行,以便在编辑文件时将其保存。)
在这种情况下,转到您选择的域名 docker.awesome:8080 即可。
答案 6 :(得分:0)
经过大量的试验,我能够得到这个公告栏。
我使用的docker run命令-docker run -p 4680:8080 --name bb bulletinboard:1.0 在这里,4680是本地主机端口号。 8080是容器端口号,即容器将要监听的端口。 Dockerfile的EXPOSE命令中提到了此端口号。
然后,转到网络浏览器并输入192.168.99.100:4680
在这里,192.168.99.100是docker机器的IP地址(使用命令-> docker-machine ip)
希望这对您有帮助!