[root@localhost ~]# mkdir /data/{aaa,bbb,ccc} -p
[root@localhost ~]# docker run -itd -p 80:80 -v /data/aaa/:/dct/aaa -v /data/bbb/:/dct/bbb -v /data/ccc/:/dct/ccc nginx:latest
[root@localhost ~]# echo " aaa test1 " >> /data/aaa/index.html
[root@localhost ~]# echo " bbb test1 " >> /data/bbb/index.html
[root@localhost ~]# echo " ccc test1 " >> /data/ccc/index.html
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fa6f920f875c nginx:latest "nginx -g 'daemon of…" 3 hours ago Up 30 minutes 0.0.0.0:80->80/tcp serene_buck
[root@localhost ~]#
首先:我思考的是进入docker 容器里面后,修改nginx的配置文件。但是发现在通过docker直接安装的nginx容器,里面是相当的简化的,很多常见的命令都没有(如,vi,yum等等)。
于是:
docker cp :用于容器与主机之间的数据拷贝。
[root@localhost ~]# docker cp fa6f920f875c:/etc/nginx/conf.d/default.conf . (将容器的数据拷贝到主机的当前位置)
[root@localhost ~]# ls
anaconda-ks.cfg default.conf
[root@localhost ~]#
[root@localhost ~]# cat default.conf
server {
listen 80;
server_name aaa.test.cn;
location / {
root /dct/aaa;
index index.html index.htm;
}
}
server {
listen 80;
server_name bbb.test.cn;
location / {
root /dct/bbb;
index index.html index.htm;
}
}
server {
listen 80;
server_name ccc.test.cn;
location / {
root /dct/ccc;
index index.html index.htm;
}
}
[root@localhost ~]#
[root@localhost ~]# docker cp default.conf fa6f920f875c:/etc/nginx/conf.d/ (将当前的数据拷贝到容器)
[root@localhost ~]# docker restart fa6f920f875c 重启容器,使配置生效。
配置/etc/hosts,实现IP与域名的解析
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.0.1 aaa.test.cn
172.16.0.1 bbb.test.cn
172.16.0.1 ccc.test.cn
[root@localhost ~]#
说明:IP地址是网卡出口eth0的IP地址。
[root@localhost ~]# ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.16.0.1 netmask 255.255.0.0 broadcast 172.16.255.255
inet6 fe80::d887:12ff:fedf:29e prefixlen 64 scopeid 0x20<link>
ether da:87:12:df:02:9e txqueuelen 1000 (Ethernet)
RX packets 1178165 bytes 386644124 (368.7 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 423412 bytes 34334996 (32.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
验证:
[root@localhost ~]# curl aaa.test.cn
aaa test1
[root@localhost ~]# curl bbb.test.cn
bbb test1
[root@localhost ~]# curl ccc.test.cn
ccc test1
[root@localhost ~]#
由此就已经实现了通过docker的方式实现了nginx的多域名同80端口的访问。
下列再加上pfsense的配置来实现局域网通过web页面的方式进行访问(局域网:192.168.168.X/24)
还有最主要的一步骤:
修改windows中的hosts文件。实现域名与IP的解析(C:\WINDOWS\system32\drivers\etc)
注意:hosts文件中最下面要空一行。
最后验证: