docker网络模式

目录

1. docker网络模式

2. 连接容器的三种方法

3. Docker Networking

3.1 创建网络

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

3.3 删除网络

3.3 如何使用网络

4. 网络配置示例

4.1 准备注册中心jar包

4.2 创建一个目录作为构建目录

4.3 将构建目录上传到linux

4.4 执行构建镜像

4.5 创建网络

4.6 启动容器

4.7 检查防火墙

5. nacos使用mysql持久化数据


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.3 如何使用网络

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

sudo docker run -it --name test --net=app  imagename

2)也可以将运行中的容器加入网络

sudo docker network connect app test
  • app 需要加入的网络名
  • test 需要加入到网络的容器名

4. 网络配置示例

我们将通过在docker中部署高可能注册中心(两个配置中心相互注册到对方以实现高可用,避免单点故障),来演示网络配置。

4.1 准备注册中心jar包

1)修改配置文件

我们预先将两个注册中心一个命名我eureka01, 一个命名为eureka02,eureka01需要向eureka02注册,反之亦然。
2)使用maven执行打包

 

4.2 创建一个目录作为构建目录

创建一个目录作为构建目录,在该目录中创建一个Dockerfile,并准备好需要的软件包。(rgcenter.jar即为注册中心的jar包,为方便该了个短一些的名称)

 

Dockerfile内容:

FROM ubuntu:latest
MAINTAINER lisen "lisen@163.com"

WORKDIR /usr/local/apps

ADD jdk-8u151-linux-x64.tar.gz /usr/local/java
COPY rgcenter.jar /usr/local/apps

ENV JAVA_HOME=/usr/local/java/jdk1.8.0_151
ENV PATH=$JAVA_HOME/bin:$PATH

ENTRYPOINT ["java","-jar", "rgcenter.jar"]

4.3 将构建目录上传到linux

 

4.4 执行构建镜像

进入构建目录,执行构建命令

docker build -t lisen/rgcenter:v1.0 .

4.5 创建网络

docker network create appnet

4.6 启动容器

1) 启动第一个注册中心(eureka01),注意和第一步取得名字要一致

docker run -it --net=appnet  -p 8761:8761 --name eureka01 lisen/rgcenter:v1.0 --spring.profiles.active=peer1

2)启动第二个注册中心

docker run -it --net=appnet  -p 8762:8762 --name eureka02 lisen/rgcenter:v1.0 --spring.profiles.active=peer2

4.7 检查防火墙

注意检查防护墙,如果防护墙开启,则需要将8761和8762端口加入防火墙中

ufw status

ufw allow 8761
ufw allow 8762

over! 测试检查是否可以正常访问注册中心:
http://192.168.62.133:8761/
http://192.168.62.133:8762/

5. nacos使用mysql持久化数据

1)在nacos安装目录下\nacos\conf中有nacos-mysql.sql脚本,通过该脚本创建数据库

 

2)修改nacos安装目录下\nacos\conf中的application.properties文件,配置MySQL链接。

 

spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=123456
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值