docker简单实例一:实现nginx多域名访问

[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)

clipboard

clipboard

还有最主要的一步骤:

修改windows中的hosts文件。实现域名与IP的解析(C:\WINDOWS\system32\drivers\etc)

clipboard

注意:hosts文件中最下面要空一行。

最后验证:

 

猜你喜欢

转载自www.cnblogs.com/SyXk/p/11613475.html