文章目录
  1. 1. 背景
  2. 2. 准备工作
    1. 2.1. 机器准备
    2. 2.2. IP准备
    3. 2.3. (宿主机器与容器之间访问)创建容器时可以选择docker自带的端口映射功能,能够跨网络实现172.17.0.3与192.168.93.128的通信
    4. 2.4. (外部访问虚拟机内的服务)采用VMware自带的虚拟网络编辑器实现外部网络访问虚拟机内的服务
      1. 2.4.1. 点击”编辑“->”虚拟网络编辑器“,如图
      2. 2.4.2. 选择”NAT“,然后点击”NAT设置“,如图
      3. 2.4.3. 接下来点击”添加“,让访问主机的8082端口映射到虚拟机里8082端口
      4. 2.4.4. 在弹出来的界面中分别填入主机端口,虚拟机IP,虚拟机端口,如图
      5. 2.4.5. 确定后,我们就将虚拟机中的80号端口映射到宿主机的8082号端口了。可以外部网络测试了,选择和主机同一层的其他机器做测试就可以了
      6. 2.4.6. 测试通过
  3. 3. 参考文档

背景

为方便测试使用,通常我们选择在Windows主机中安装虚拟机(VMware Workstation),在虚拟机中部署Docker容器。而我们部署在Docker中的容器外部网络(和Windows同一层的网络)是无法访问的。

准备工作

机器准备

Windows

虚拟机-VMware

IP准备

Windows IP:192.168.10.103

虚拟机(CentOS7) IP:192.168.93.128

Docker容器 IP:172.17.0.3

(宿主机器与容器之间访问)创建容器时可以选择docker自带的端口映射功能,能够跨网络实现172.17.0.3与192.168.93.128的通信

1
$ docker run --name html -p 8082:80 -v /data/html:/usr/share/nginx/html:ro -d nginx

这里我们可以通过访问192.168.93.128的8082端口映射到172.17.0.3的80端口,也就是可以直接访问nginx服务

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
[root@kunlv ~]# curl http://192.168.93.128:8082
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>XXX系统</title>
<link rel="stylesheet" href="lib/bootstrap/css/bootstrap.min.css" />
<link rel="stylesheet" href="lib/font-awesome/css/font-awesome.min.css" />
<link rel="stylesheet" href="lib/durandal/css/durandal.css" />
<link rel="stylesheet" href="lib/toastr/css/toastr.min.css" />
<link rel="stylesheet" href="css/layout.css" />
<link rel="stylesheet" href="css/login.css" />
</head>
<body>
<div id="applicationHost" class="app-main">
<div class="loading-splash">
<div class="loading-message">
XXX系统
</div>
<i class="fa fa-spinner fa-spin"></i>
</div>
</div>
<script src="lib/require/require.js" data-main="app/main"></script>
</body>
</html>

(外部访问虚拟机内的服务)采用VMware自带的虚拟网络编辑器实现外部网络访问虚拟机内的服务

点击”编辑“->”虚拟网络编辑器“,如图

选择”NAT“,然后点击”NAT设置“,如图

接下来点击”添加“,让访问主机的8082端口映射到虚拟机里8082端口

在弹出来的界面中分别填入主机端口,虚拟机IP,虚拟机端口,如图

确定后,我们就将虚拟机中的80号端口映射到宿主机的8082号端口了。可以外部网络测试了,选择和主机同一层的其他机器做测试就可以了

请在跟Windows机器同一个域名的机器上面通过访问地址:

http://192.168.10.103:8082 既可以访问到虚拟机里面docker部署的服务。

测试通过

如果以上步骤操作还是不能访问,考虑一下防火墙的问题,可以在防火墙入口规则里开放8082端口,这里为了便于测试我把防火墙关掉了

参考文档

参考来源

文章目录
  1. 1. 背景
  2. 2. 准备工作
    1. 2.1. 机器准备
    2. 2.2. IP准备
    3. 2.3. (宿主机器与容器之间访问)创建容器时可以选择docker自带的端口映射功能,能够跨网络实现172.17.0.3与192.168.93.128的通信
    4. 2.4. (外部访问虚拟机内的服务)采用VMware自带的虚拟网络编辑器实现外部网络访问虚拟机内的服务
      1. 2.4.1. 点击”编辑“->”虚拟网络编辑器“,如图
      2. 2.4.2. 选择”NAT“,然后点击”NAT设置“,如图
      3. 2.4.3. 接下来点击”添加“,让访问主机的8082端口映射到虚拟机里8082端口
      4. 2.4.4. 在弹出来的界面中分别填入主机端口,虚拟机IP,虚拟机端口,如图
      5. 2.4.5. 确定后,我们就将虚拟机中的80号端口映射到宿主机的8082号端口了。可以外部网络测试了,选择和主机同一层的其他机器做测试就可以了
      6. 2.4.6. 测试通过
  3. 3. 参考文档