基本环境:
使用CentOS基于Apache搭建服务器支持HTTPS服务(Apache直接安装在实体操作系统上)
安装Docker再开启一个CentOS的容器,在容器中安装并配置Nginx代理服务器,并将端口映射到外部主机
www.healer.com域名对应的主机是172.16.251.129(docker外部实体机上的虚拟网卡IP地址为172.17.0.1,Docker的CentOS容器内部的IP地址为172.17.0.2)
容器与主机的端口映射关系:
[root@bogon /]# docker port centos_yum_nginx
80/tcp -> 0.0.0.0:5080
443/tcp -> 0.0.0.0:5443
测试终端Windows7运行Chrome浏览器,IP地址为172.16.251.128
访问过程如下,数据通过浏览器生成,打包传送给底层,DNS解析到www.healer.com指向172.16.251.129,并且访问的是5443端口,数据传送至172.16.251.129的5443端口
通过5443端口传送到Docker的CentOS容器中的443端口(配置容器端口映射的过程中不要指定IP地址),然后Nginx服务器根据配置文件将对应的数据转发到www.healer.com的443端口,这里需要注意的是:我们要在Docker的CentOS容器中创建配置一下www.healer.com的地址,由于容器内部除了环回只有一个网卡地址是172.17.0.2,所以这时候的 “/etc/hosts” 文件中的www.healer.com的映射地址应该是Docker在外部实体系统中的虚拟网卡的地址172.17.0.1,如下:
然后数据被转发到172.17.0.1:443端口,实际上172.17.0.1与172.16.251.129是同一个实体系统中的不同网卡上的IP地址(如下图所示),所以访问172.17.0.1的443端口其实就是直接访问了开始172.16.251.129映射的www.healer.com
最终实现如下效果:
|