推广 热搜: page  关键词  红书  链接  搜索  获取  哪些  服务  数据分析  小红 

Docker 学习笔记

   日期:2025-01-01     作者:y71q8    caijiyuan   评论:0    移动:https://sicmodule.kub2b.com/mobile/news/14240.html
核心提示:Docker的基本组成镜像(images)docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat

Docker的基本组成

镜像(images

docker镜像就好比是一个模板,可以通过这个模板来创建容器服务,tomcat镜像 ==> run ==> tomcat01容器(提供服务器,通过这个镜像可以创建多个容器(最终服务运行或者项目运行就是在容器中的)。

容器(container

Docker 利用容器技术,独立运行一个或者一个组应用,通过镜像来创建的。

启动,停止,删除,基本命令

仓库(repository

创库是存放镜像的地方

仓库分为 和

Docker Hub(默认是国外的

阿里云...都有容器服务器(配置镜像加速

安装Docker

环境查看

安装

帮助文档

卸载docker

配置阿里云镜像加速

Docker运行流程

底层原理

Docker是怎么工作

Docker是一个 Client-Server 结构的系统,Docker的守护进程运行在主机上。通过Socket从客户端访问

DockerServer 接收到 Docker-Client的指令,就会执行这个命令

Docker为什么比VM快

1、Docker㓟着比虚拟机更少的抽象层

2、Docker 利用的是宿主机的内核,VM需要的是 Guest OS。

3、Docker新建一个容器的时候,不需要像虚拟机一样重新加载一个操作系统内核,避免引导。虚拟机是加载Guest OS,分钟级别的,而docker是利用宿主机的操作系统,省略了这个复杂的过程。

帮助命令

镜像命令

docker images 查看所有本地的主机上的镜像

docker search 搜索镜像

docker pull 下载镜像

docker rmi 删除镜像

容器命令

新建容器并启动

列出所有的运行的容器

退出容器

删除容器

启动和停止容器的操作

常用的其他容器

后台启动容器
查看日志
查看容器中进程信息 ps
查看镜像的元数据
进入当前正在运行的容器
从容器内拷贝文件到主机上
小结
练习
Dokcer 安装 Nginx

docker 安装 Nginx

docker 安装 tomcat
可视化
  • portainer
  • Rancher(CI/CD用

什么是 protainer

Docker图形化管理工具!提供一个后台面板功供操作

访问测试:外网:8088 http://ip:8088/ 需要配置服务器安全组,打开端口

选择本地

可视化面板一般不会用。

镜像是什么

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

所有的应用,直接打包成docker镜像,就可以直接跑起来。

如何得到镜像

  • 从远程仓库下载
  • 别人拷贝给你
  • 自己制作一个镜像 DockerFile

Docker镜像加载原理

UnionFS(联合文件系统

  • UnionFS(联合文件系统:Union文件系统(UnionFS)是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂在到同一个虚拟文件系统下(unite several directores into a single virtulal filesystem)。Union文件系统时 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像,可以制作各种具体的应用镜像。

  • 特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层的文件和目录

Docker 镜像加载原理

  • docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统 UnionFS。
  • (boot file system)主要包含 bootloader 和 kernel,bootloader 主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
  • (root file system,在bootfs之上。包含的就是典型 Linux系统中的 /dev,/proc ,/bin ,/etc等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos等等。

平时安装虚拟机的Centos都是好几个G,为什么Docker这里才200M

  • 对于一个精简的OS,rootfs可以很小,只需要包含最基本的命令,工具和程序库就可以了,因为底层直接用Host的kernel,自己只需要提供rootfs就可以了。由此可见对于不同Linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

  • 虚拟机是级别,容器是级别

分层理解

分层镜像

下载镜像的时候,可以看到是一层一层的在下载

为什么Docker镜像要采用这种分层的结构呢
  • 最大的好处,莫过于是资源共享了!比如有多个镜像都从相同的base镜像构建而来,那么宿主机只需在磁盘上保留一份base镜像,同时内存中也只需要加载一份base镜像,这样就可以为所有的容器服务了,而且镜像的每一层都可以被共享。
  • 查看镜像分层的方式可以通过 命令
理解

所有的Docker镜像都起始于一个基础镜像层,当进行修改或增加新的内容时,就会在当前镜像层之上,创建新的镜像层。

举个例子,假设基于 Ubuntu Linux 16.04 创建一个新的镜像,这就是新镜像的第一层;如果在该镜像中添加 Python 包,就会在基础镜像层之上创建第二个镜像层;如果继续添加一个安全补丁,就会创建第三个镜像层。

该镜像当前以及包含了3个镜像层,如下图所示

在添加额外的镜像层的同时,镜像始终保持是当前所有镜像的组合,理解这一点非常重要。下图中,每个镜像层包含 3个文件,而镜像包含了来自两个镜像层的6个文件。

上图中的镜像层跟之前途中的略有区别,主要目的是便于展示文件。

下图中展示了一个稍微复杂的三层镜像,在外部看来整个镜像只有6个文件,这是因为最上层中的文件 7 是文件 5 的一个更新版本。

这种情况下,上层镜像层中的文件覆盖了底层镜像层中的文件。这样就使得文件的更新版本作为一个新镜像层添加到镜像当中。

  • Docker 通过存储引擎(新版本采用快照机制)的方式来实现镜像层堆栈,并保证多镜像层对外展示位统一的文件系统。
  • Linux 上可用的存储引擎又 AUFS、Overlay2、Devicee Mapper、Btrfs以及 ZFS。顾名思义,每种存储引擎都基于 Linux 中对应的文件系统或者块设备技术,并且每种存储引擎都有其独有的性能特点。
  • Docker 在 Windows 上仅支持 windowsfilter 一种存储引擎,该引擎基于 NTFS 文件系统之上实现了 分层 和 CoW[1]。

下午展示了与系统显示相同的三层镜像。所有镜像层堆叠并合并,对外提供统一的视图。

特点

Docker镜像都是只读的,当容器启动时,一个新的可读层被加载到镜像的顶部

这一层就是容器层,容器只下的都叫镜像层

commit镜像

实战测试

什么是容器数据卷

docker的理念回顾:将应用和环境打包成为一个镜像

数据:如果数据都在容器中,那么一旦容器删除,数据就会丢书需求:数据持久化

MySQL,容器删除,数据也就丢了。需求:MySQL数据可以存储在本地

,这就是卷技术!目录的挂载,将我们的容器内的目录,挂载到Linux上面

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

使用数据卷

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

测试文件的同步
测试宿主机上修改文件

1、停止容器

2、宿主机上修改文件

3、启动容器

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

挂载之后修改只需要在本地修改即可!容器内会自动同步

实战:安装MySQL

当我们将容器删除时

我们挂载到本地的数据卷依旧没有丢失,这就实现了容器持久化功能

具名和匿名挂载

所有的docker容器内的卷,没有指定目录的情况下都是在

可以通过具名挂载能够方便的找到 挂载的卷,大多数情况使用的

扩展

初识Dockerfile

Dockerfile就是用来构建docker镜像的构建文件

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

这个目录就说生成镜像的时候,自动挂载的,数据卷目录

这个卷和外部一定有一个同步的目录

查看卷挂载的路径

测试创建的文件 是否同步出去

这种方式使用的非常频繁!因为通常会构建自己的镜像

假设构建镜像的时候没有挂载卷,要手动镜像挂载 -v 卷名:容器内路径

数据卷容器

多个容器同步数据。

多个MySQL实现数据共享
结论

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

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

DockFile介绍

dokcerfile是用来构建docker镜像的文件!命令参数脚本

构建步骤

1、编写一个 dockerfile 文件

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

3、 docker run 运行镜像

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

DockerFile构建过程

基础知识

1、每个保留关键字(指令)都是必须是大写字母

2、执行从上到下顺序执行

3、# 表示注释

4、每一个指令都会创建提交一个新的镜像层,并提交

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

Docker镜像主键成为企业交付的标准,必须要掌握

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

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

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

DockerFile 的指令

实战测试

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

实战:创建一个自己的 centos

对比:官方的centos

增加之后的镜像

可以列出本地进行的变更历史

CMD 和 ENTRYPOINT 区别

Dockerfile 中很多命令都十分的相似,需要了解他们的区别

实战:Tomcat镜像

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

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

3、构建镜像

4、启动镜像

5、访问测试

6、发布项目(由于做了卷挂载,我们直接在本地编写项目

发布自己的镜像

发布到DockerHub上

1、网站:https://hub.docker.com/

2、在服务器上提交自己的镜像

4、登录之后,就可以提交镜像了! docker push

发布到阿里云镜像服务上

1、 登录阿里云

2、找到容器镜像服务

3、创建命名空间

4、创建容器镜像

5、浏览阿里云

阿里云容器镜像参考官方地址

小结

理解Docker0

清空所有环节

测试

三个网络

原理

1、每启动一个 docker容器,docker 就会给docker容器分配一个 IP,只要安装了docker,就会有一个网卡 docker0

桥接模式,使用的技术是 veth-pair 技术

再次册数 ip addr

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

3、测试 tomcat01 和 tomcat02 是否可以ping 同

绘制网络模型图

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

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

小结

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

Docker中的所有的网络接口都是虚拟的。虚拟的转发效率高

只要容器删除,对应网桥一对 就自动删除了

--link

探究:insprct

tomcat03就是在本地配置了 tomcat02 的配置

本质:--link 就是在 hosts 配置中增加了一个 172.17.0.3 tomcat02 d4e6993fafe1

已经不建议是用 --link 了

自定义网络!不使用 docker0

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

自定义网络

容器互联

查看所有的docker 网络

网络模式
  • bridge:桥接 docker (默认
  • none:不配置网络
  • host:和宿主机共享网络
  • container:容器内网络连通(用得少!局限很大
测试
自定义网络

自定义网络,docker已经维护了对应的关系了!推荐使用自定义网络

好处

redis - 不同的集群使用不同的网络,保证集群是安全和健康的

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

网络连通

结论:假设要开网络操作别的容器,就需要使用 docker network connect 连通

实战:部署Redis集群

docker搭建redis集群完成

使用了docker之后,所有的技术都会简单起来

1、构建springboot项目

2、打包应用

3、编写dockerfile

4、构建镜像

本文地址:https://sicmodule.kub2b.com/news/14240.html     企库往 https://sicmodule.kub2b.com/ , 查看更多

特别提示:本信息由相关用户自行提供,真实性未证实,仅供参考。请谨慎采用,风险自负。

 
 
更多>同类最新资讯
0相关评论

文章列表
相关文章
最新动态
推荐图文
最新资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  鄂ICP备2020018471号