Docker(第四部分)

本文介绍了如何在IDEA中创建Docker微服务,通过Dockerfile部署容器,探讨了Docker的网络结构(如bridge模式、host模式和none模式),以及docker0网桥的作用。还讲解了docker-compose在容器编排中的应用,包括其基本概念和常用命令。
摘要由CSDN通过智能技术生成

Docker微服务实战

通过IDEA新建一个普通微服务模块

把包放到linux机器里

pwd

通过dockerfile发布微服务部署到docker容器

dockerfile的内容

防火墙

Docker网络

网络主机

是什么?

网桥virbr0

常用基本命令

能干嘛

网络模式

最后都和u3一样了

结论:docker容器内部的ip是有可能发生变化的,没有人用分给用的人了

Docker平台架构图解

整体说明:

从其架构和运行流程来看,Docker是一个C/S模式的架构,后端是一个松耦合架构,众多模块各司其职。

Docker运行的基本流程为:

1,用户是使用Docker Client与Docker Daemon建立通信,并发送请求给后者。

2,Docker Daemon作为Docker架构中的主体部分,首先提供Docker Server的功能使其可以接受Docker Client请求。

3,Docker Engine 执行Docker内部的一系列工作,每一项工作都是以一个Job的形式存在。

4,Job的运行过程中,当需要容器镜像时,通过网络管理驱动Netowrk driver创建并配置Docker容器网络环境。

6,当需要限制Docker容器运行资源或执行用户指令等操作时,则通过Execdriver来完成。

7,Libcontainer是一项独立的容器管理包,Network driver以及Exec driver都是通过Libcontainer来实现具体对容器进行的操作。

docker network 之bridge

案例说明:

bridge
是什么?

Docker默认会创建一个docker0网桥(其上有一个docker0内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了docker0接口的IP地址和子网掩码,让主机和容器之间可以通过网桥相互通信。

#查看bridge网络的详细信息。并通过grep获取名称项。

docker network inspect bridge | grep name

ifconfig

说明:
没有ipv4,docker0是各个container的网关。

1.Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。

2.docker run 的时候,没有指定network的话默认使用的网桥模式就是bridge。使用的就是docker0.

在宿主机ifconfig,就可以看到docker0和自己create的network(后面讲)eth0,eth1,eth2,代表网卡1,网卡2,网卡3.lo代表127.0.0.1,即localhost,inet addr用来表示网卡的IP地址。

3网桥docker0创建一对对等虚拟设备接口一个叫veth,另一个叫eth0,成对匹配。

3.1整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);

3.2每个容器实例内部也有一块网卡,每个接口叫eth0;

3.3docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一配对。

通过上述所述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。

代码

docker run -d -p 8081:8080  --name tomcat81 billygoo/tomcat8-jdk8

docker run -d -p 8082:8080  --name tomcat82 billygoo/tomcat8-jdk8

docker ps

ip addr

host

是什么?

直接使用宿主机的IP地址与外界进行通信,不再需要额外进行NAT转换

案例

说明:容器将不会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace。容器将不会虚拟出自己的网卡而是使用宿主机的IP和端口。

docker run -d -p 8083:8080 --network host --nmae tomcat83 billygoo/tomcat8-jdk8

正确:docker run -d --network host --name tomcat83 billygoo/tomcat8-jdk8

无之前的配对显示了,看容器实例内部

docker exec

没有设置-p的端口映射了,如何访问启动的tomcat83??

用的是宿主机的

http://宿主机IP:8080/

在CentOS里面用默认的火狐浏览器访问容器内的tomcat83看到访问成功。因为此时容器的IP借用主机的,所以容器共享主机网络IP。这样的好处是外部主机与容器可以直接通信。

none

是什么?:禁用网络功能,只有lo标识(就是127.0.0.1表示本地回环)

在none模式下,并不为Docker容器进行任何网络配置。

也就是说,这个Docker容器没有网卡,IP,路由等信息,只有一个lo

需要我们自己为Docker容器添加网卡,配置IP等。

案例:

docker run -d -p 8084:8080 --network none --name tomcat84 billygoo/tomcat8-jdk8

container网络模式:

新建的容器和已经存在的一个容器共享一个网络ip配置而不是和宿主机共享。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP,端口范围等。同样,两个容器除了网络方面,其他的如文件系统。进程列表等还是隔离的。

docker run -d -p 8085:8080

--name tomcat85 billygoo/tomcat8-jdk8

docker run -d -p 8086:8080 --network container:tomcat85 --name tomcat86 billygoo/tomcat8-jdk8

运行结果:

Alpine Linux

自定义网络

过时的link

是什么

案例

问题

5。Docker-compose容器编排

是什么?

Docker-Compose是Docker官方的开源项目,负责实现对Docker容器集群的快速编排

可以管理多个Docker容器组成一个应用。你需要定义一个YAML格式的配置文件。

docker-compose。yml,写好多个容器之间的调用关系。然后,只要一个命令。就能

同时启动,关闭这些容器。

能干嘛?

去哪下

安装

卸载

核心概念

Compose使用的三个步骤

Compose常用命令

Compose编排微服务

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值