docker安装nginx与容器之间的互相通信

目录

1. docker网络模式

2. 连接容器的三种方法

3. Docker Networking

3.1 创建网络

3.2 查看宿主机中创建的网络

3.3 删除网络

3.4 如何使用网络

4.搭建Nginx

1.准备工作

1.1 拉取镜像

​编辑1.2 在宿主机中创建挂载目录

 2.准备2个tomcat 容器集群

3.准备 Nginx配置

3.1启动Nginx容器

​编辑4.测试访问是否通过 

5. 容器之间的互相通信(ping)

5.1 两个容器在同一网段

5.1.1 首先创建一个网段叫mynet

​编辑

5.1.2 在镜像images中的centos -7中创建两个同net的容器c1 和  c2,并且查看

​编辑

 5.1.3 c1 ping c2

​编辑5.2

5.1.4 c2 ping c1

5.2 两个容器在不同网段

 5.2.1 首先使用bridge(与c1和c2网段不同)创建一个c3容器,并且查看

5.2.2 然后使用c1pingc3,可想而知是不行的,因为不是属于同一个网段,那么就会出些这行提示

5.2.3 如果将c3加到mynet中就可以通过c1 ping c3了


1. docker网络模式



docker安装成功后,会自动创建三个网络,可以通过如下的方式查看:

lisen@ubuntu:~$ sudo docker network ls
[sudo] password for lisen:
NETWORK ID          NAME                DRIVER              SCOPE
8994fe397802        bridge              bridge              local
436da757b62d        host                host                local
1b2be829b666        none                null                local
lisen@ubuntu:~$


在运行容器时可以通过--net参数指定网络模式,例如:

host模式: --net=host 容器不会虚拟自己的网卡,使用宿主机的ip和端口
none模式: --net=none 该模式等同于关闭容器的网络功能,一般在不需要网络的批处理任务中才使用
bridge模式: --net=bridge 默认值,如果指定--net参数,则docker就会采用这种模式,这种模式也是最强大灵活,使用的最广的网络模式。


Docker每次创建容器都会同时创建一组互联的网络接口,你可以理解为一根管道的两端, 这组接口一端作为容器的eth0接口,另一端命名类似于veth966865c@if100这样的名字,作为宿主机的一个端口。可以将veth接口的理解为虚拟网线的一端,这个虚拟网线一端插在名为docker0的网桥上,另一端插到容器中。通过这种方式Docker创建了一个虚拟子网,这个虚拟子网被宿主机和所有的Docker容器共享。

注: 可以安装bridge-utils工具查看网桥信息

如: yum install bridge-utils

查看网桥信息: brctl show

2. 连接容器的三种方法



docker的最佳实践建议为每个服务创建单独的docker容器,比例:db,redis,应用服务等等,那么不同的服务需要连接以便于作为整体为客服提供服务,例如应用服务需要连接db,redis等。常见的容器连接方法有三种:

Docker的内部网络
Docker1.9之后,可以使用Docker Networking
Docker 链接(Docker link)
1)这三种方式如何选择呢?

Docker的内部网络,这种方式不灵活,在重启容器需要重新配置,所以不推荐使用这种方式;如果使用Docker1.9之前的版本,则应该选择Docker link的方式; 如果使用docker1.9及更高的版本,则推荐使用Docker Networking,这种方式最灵活,功能也是最强大的。

2)Docker link和Docker Networking之间有什么区别呢?

Docker Networking可以连接不同的宿主机上的容器的
Docker Networking可以在不更新连接的情况下,停止,启动,或重启容器
Docker Networking不必事先创建网络,也不关心容器的启动顺序
3)也就是说只要用的docker是1.9版本之后,就应该使用Docker Networking咯?

恭喜你,答对了。

因为我们肯定会使用docker1.9之后的版本(现在docker已到19.04版本甚至更高版本了),所以我们只讲Docker Networking方式

3. Docker Networking



容器之间连接用网络创建,这个网络被称为Docker Networking,是Docker1.9版本之后的新特性。用户可以通过Docker Networking创建自己的网络,容器可以通过这个网络进行通信。

3.1 创建网络



创建一个新的网络可以使用如下的命令:

sudo docker network create app


可以使用如下的方式来查看网络的详细信息

sudo docker network inspect app


3.2 查看宿主机中创建的网络



 

sudo docker network ls


3.3 删除网络



 

sudo docker network rm app


3.4 如何使用网络



1)启动镜像时指定--net参数

sudo docker run -it --name test --net=app imagename
2)也可以将运行中的容器加入网络

sudo docker network connect app test
app 需要加入的网络名
test 需要加入到网络的容器名
创建好容器后进行测试,测试是否可以通讯 下载一个contos镜像测试

docker pull centos:7
创建两个容器 看是否可以 ping 通

docker run -itd --name ubd centos:7


删除所有 容器

 

4.搭建Nginx



1.准备工作



1.1 拉取镜像


1.2 在宿主机中创建挂载目录


    mkdir -p /data/text/nginx/{conf,html,logs}
    mkdir -p /data/text/tomcat/{webapps/ROOT,conf,logs}


目录结构

我们在 webapps/ROOT中创建index.html




        
        Nginx+tomcat集群


        

Nginx+tomcat集群部署示例


 2.准备2个tomcat 容器集群



docker run -d --name tomcat1 -v /data/text/tomcat/webapps:/usr/local/tomcat/webapps tomcat:9
docker run -d --name tomcat2 -v /data/text/tomcat/webapps:/usr/local/tomcat/webapps tomcat:9

容器的IP可以通过 docker inspect tomcat1 进行查看

3.准备 Nginx配置



修改nginx 配置文件

3.1启动Nginx容器



docker run -d -p 80:80 \
 --name nginx -v /data/text/nginx/html/:/usr/share/nginx/html \
  -v /data/text/nginx/conf/nginx.conf/:/etc/nginx/nginx.conf \
  -v /data/text/nginx/logs/:/var/log/nginx nginx


4.测试访问是否通过 



通过宿主机ip 进行访问

5. 容器之间的互相通信(ping)


5.1 两个容器在同一网段


5.1.1 首先创建一个网段叫mynet


docker安装nginx与容器之间的互相通信_第1张图片

5.1.2 在镜像images中的centos -7中创建两个同net的容器c1 和  c2,并且查看


docker安装nginx与容器之间的互相通信_第2张图片

 查看docker安装nginx与容器之间的互相通信_第3张图片

 5.1.3 c1 ping c2


docker安装nginx与容器之间的互相通信_第4张图片5.2

5.1.4 c2 ping c1


docker安装nginx与容器之间的互相通信_第5张图片

 注:此方法需要启动才能ping,所以使用前者直接pingdocker安装nginx与容器之间的互相通信_第6张图片

5.2 两个容器在不同网段


 5.2.1 首先使用bridge(与c1和c2网段不同)创建一个c3容器,并且查看


docker安装nginx与容器之间的互相通信_第7张图片

5.2.2 然后使用c1pingc3,可想而知是不行的,因为不是属于同一个网段,那么就会出些这行提示

docker安装nginx与容器之间的互相通信_第8张图片


注:c1pingc2,与c1pingc3对比

5.2.3 如果将c3加到mynet中就可以通过c1 ping c3了

docker安装nginx与容器之间的互相通信_第9张图片


你可能感兴趣的:(docker,nginx,容器)