飞道的博客

docker网络模式 与 搭建nginx

342人阅读  评论(0)

目录

1. docker网络模式

2. 连接容器的三种方法

3. Docker Networking

3.1 创建网络

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

3.3 删除网络

3.3 如何使用网络

4.搭建Nginx

1.准备工作

1.1 拉取镜像

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

 2.准备2个tomcat 容器集群

3.准备 Nginx配置

3.1启动Nginx容器

4.测试访问是否通过 


1. docker网络模式

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


  
  1. lisen @ubuntu: ~$ sudo docker network ls
  2. [sudo] password for lisen:
  3. NETWORK ID NAME DRIVER SCOPE
  4. 8994fe397802 bridge bridge local
  5. 436da757b62d host host local
  6. 1b2be829b666 none null local
  7. 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.3 如何使用网络

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 在宿主机中创建挂载目录


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

目录结构

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


  
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>Nginx+tomcat集群 </title>
  6. </head>
  7. <body>
  8. <h1>Nginx+tomcat集群部署示例 </h1>
  9. </body>
  10. <html>

 2.准备2个tomcat 容器集群


  
  1. docker run -d --name tomcat1 -v /data/text /tomcat/ webapps: /usr/local /tomcat/webapps tomcat: 9
  2. 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容器


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

4.测试访问是否通过 

通过宿主机ip 进行访问


转载:https://blog.csdn.net/qq_62898618/article/details/128402695
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场