Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)

Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)

12docker精髓-容器数据卷、DockerFile、Docker网络

1、容器数据卷

1.1什么是容器数据卷

docker的理念回顾

将应用和环境打包成一个镜像!

数据?如果数据都在容器中,那么我们容器删除,数据就会丢失! 需求︰数据可以持久化

MySQL,容器删了,删库跑路! 需求:MySQL数据可以存储在本地!

容器之间可以有一个数据共享的技术! Docker容器中产生的数据,同步到本地! 这就是卷技术!

目录的挂载,将我们容器内的目录,挂载到Linux上面!|

容器数据卷就是为了解决容器数据持久化和同步操作,容器间也可以数据共享

image-20220605154850516

总结一句话:容器的持久化和同步操作! 容器间也是可以数据共享的!

1.2使用数据卷

方式一: 直接使用命令挂载 -v


image-20220605154918964

文件的同步测试

image-20220605154956781

再来测试!

1、停止容器

2、宿主机上修改文件

3、启动容器

4、容器内的数据依旧是同步的!

image-20220605155025604

好处∶我们以后修改只需要在本地修改即可,容器内会自动同步!

1.3实战:安转MySQL

思考:MySQL数据的可持久化问题!


image-20220530093013382

image-20220605155102676

image-20220530095741220

​ 发现,我们挂载到本地的数据卷依旧没有丢失,这就实现了容器数据持久化功能 ! (即使不小心删除了数据库容器,也不会导致,一下子把数据都丢失掉,数据的持久化)

1.4 具名与匿名数据卷


所有的docker容器内的卷,没有指定目录的情况下都是在 我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的


拓展:


1.5初识DockerFile

dockerfile 就是用来构建docker镜像的。命令脚本! 体验一下!

生成镜像:

方式一: commit

方式二: dockerfile

​ docker build 命令

通过这个脚本可以生成镜像,镜像是一层一层的,脚本一个个的命令,每个命令都是一层!



image-20220531161849462


image-20220531163056131

image-20220531170857989

测试一下刚才的文件是否同步出去了!
这种方式我们未来使用的十分多,因为我们通常会构建自己的镜像!
假设构建镜像时候没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径!

1.6数据卷容器

容器与容器之间的同步(例:多个MySQL数据同步!)

image-20220605155138689

子容器挂载父容器


image-20220531174550189

image-20220531175659771

image-20220531175754560

image-20220531175844238

不同容器之间

image-20220531180244832

image-20220605155231639

结论∶
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止。

但是一旦你持久化到了本地,这个时候,本地的数据是不会删除的!

容器之间的数据卷是采用“拷贝备份的机制”,即使俩个子容器 –volume-from 父容器,这个父容器被干掉了,俩个子容器之间也可以正常的使用数据卷共享数据。

2、DockerFile

dockerfile是用来构建dokcer镜像的文件!

命令参数脚本!

构建步骤︰
1、编写一个dockerfile文件

​ 2、 docker build构建成为一个镜像

​ 3、docker run运行镜像

​ 4、docker push发布镜像(DockerHub、阿里云镜像仓库!)

2.1查看官方是怎么做的 ?

image-20220601113717003

image-20220601114018555

很多官方镜像都是基础包,很多功能没有,我们通常会自己搭建自己的镜像!官方既然可以制作镜像,那我们也可以!

2.2 DockerFile介绍

img

image-20220601141146336

dockerfile是面向开发的,我们以后要发布项目,做镜像,就需要编写dockerfile文件,这个文件十分简单!

Docker镜像逐渐成为企业交付的标准,必须要掌握 !

步骤: 开发,部署,运维…..缺一不可!

DockerFile:构建文件,定义了一切的步骤,源代码

Dockerlmages : 通过DockerFile构建生成的镜像,最终发布和运行的产品!

Docker容器︰ 容器就是镜像运行起来提供服务器

2.3 DockerFile指令

以前的话我们就是使用别人的,现在我们知道了这些指令后,我们来练习自己写一个镜像!


image-20220605155321116

实战测试:centos镜像

Docker Hub中 99% 镜像都是从这个基础镜像过来的FROM scratch,然后配置需要的软件和配置来进行的构建

image-20220601141610130

创建一个自己的centos


对比:之前的原生的centos

image-20220605155358153

我们增加之后的镜像

image-20220605155426226

history 查看一个镜像的历史,构建过程

image-20220605155505000

我们平时拿到一个镜像,可以研究一下它是怎么做的了?,github

CMD 和 ENTRYPOINT 的区别

CMD 和 ENTRYPOINT 的区别


测试CMD


测试ENTRYPOINT


Dockerfile中很多命令都十分的相似,我们需要了解它们的区别,我们最好的学习就是对比他们然后测试效果!

2.4DockerFile的构建过程

实战测试:tomcat镜像

下载包:

​ [apache-tomcat-9.0.22.tar.gz](Index of /dist/tomcat/tomcat-9/v9.0.22/bin (apache.org))

​ jdk-8u11-linux-x64.tar.gz

1、准备镜像文件tomcat压缩包,jdk的压缩包!

image-20220605155605315

2、编写dockerfile文件,官方命名Dockerfile, build会自动寻找这个文件,就不需要 -f 指定了!


3、构建镜像


4、运行测试


5、访问测试

image-20220602225025399

发布自己的镜像

Docker Hub

1、注册 Docker Hub 账号:Docker Hub

2、登录Docker Hub



docker tag 新建tag名称镜像


docker push 发布自己的镜像


image-20220603192310397

阿里云镜像服务上

1、登录阿里云

2、选择容器镜像服务

3、申请个人实例

4、创建命名空间

image-20220603193457693

5、创建镜像仓库

image-20220603194035162

6、根据说明实现

image-20220603194121905

将镜像推送到Registry


小结

image-20220605155633825

3、Docker 网络

理解Docker0

学习docker网络时,清空所有环境,方便我们理解Docker网络

Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)

三个网络


Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)

解决 ip add 命令不存在问题


image-20220605152130170

原理:

1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡dockerO桥接模式,使用的技术是 技术!

1、再次测试 ip addr

image-20220605153113688

2、再启动一个容器,发现又多了一对网卡~

image-20220605163809253


Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)

image-20220605172622448

image-20220605172817134

结论: tomcat01和tomcat02是公用的一个路由器,docker0。

所有的容器不指定网络的情况下,都是docker0路由的,docker会给我们的容器分配一个默认的可用IP

小结

Docker使用的是Linux的桥接,宿主机中是一个Docker容器的网桥 docker0。

image-20220605173114574

Docker中的所有的网络接口都是虚拟的。虚拟的转发效率高!(内网传递文件!)

只要容器删除,网桥也跟着删除!

(高可用)

思考一个场景,我们编写了一个微服务,database url=ip:, 项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以名字来进行访问容器 ?



其实这个tomcat03就是在本地配置了tomcat02的配置?


image-20220606183825798

image-20220606184123203

本质探究: –link 就是我们在hosts配置中增加了一个 的

我们现在玩Docker 已经不建议使用 –link了 ! 自定义网络! 不适用docker0 !

docker0 问题: 他不支持容器名连接访问!

自定义网络

容器互联: 多台物理主机之间的容器互联(暴露容器到真实网络中),包括 –link,自定义网络等都是

查看所有的docker网络

image-20220606185656930

网络模式:

  • bridge模式(桥接模式,默认,自己创建也使用桥接模式)
  • host模式(仅主机模式,与宿主机共享网络)
  • none 不配置网络模式
  • container模式:容器网络连接!(用的少,局限大!了解即可)

测试: 创建bridge模式网络



docker network create 创建网络



image-20220606194442222


我们自定义的网络docker都已经帮我们维护好了对应的关系,推荐我们平时这样使用网络!

好处︰
redis – 不同的集群使用不同的网络,保证集群是安全和健康的

​ mysql – 不同的集群使用不同的网络,保证集群是安全和健康的

网络联通

image-20220606220659882

image-20220606222702732



docker network inspect mynet

image-20220606232404779


结论︰假设要跨网络操作别人,就需要使用 docker network connect连通 ! 。。。。

实战:Redis集群布署

image-20220607153545072

shell 脚本


Navicat for Premium 9.0.2激活image-20220607163407060

我们使用了docker之后,所有的技术都会慢慢的变得简单起来!

今天的文章
Navicat for Premium 9.0.2激活(12docker精髓-容器数据卷、DockerFile、Docker网络)分享到此就结束了,感谢您的阅读。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/121631.html

(0)
编程小号编程小号
上一篇 2024-07-06
下一篇 2024-07-07

相关推荐