快盘下载:好资源、好软件、快快下载吧!

快盘排行|快盘最新

当前位置:首页软件教程电脑软件教程 → 云原生技术之docker学习笔记(2)

云原生技术之docker学习笔记(2)

时间:2022-09-18 20:20:26人气:作者:快盘下载我要评论

云原生技术之docker学习笔记(2)

//

云原生技术之docker学习笔记(2)

//

今天我们看看Docker镜像相关内容。

Docker镜像说明

1、什么是Docker镜像?

docker镜像是由多个文件系统叠加而成的,最底层是一个引导文件系统,也就是bootfs,用户基本上不会和底层的引导文件系统有任何交互。所以这块不用了解过于深入。我们只需要知道Docker镜像是由多个文件系统叠加而成的即可。

为了避免抽象,我们举个例子,下面是一个典型的mysql docker镜像文件系统图:

上图中,我们提到了多个镜像,图中不难看出,一个镜像可以放到另外一个镜像的顶部,例如MySQL的镜像,需要被Centos操作系统镜像所承载,位于下面的镜像称之为基础镜像,当一个镜像启动的时候,Docker会在该镜像的最顶层加一个读写文件系统。我们执行程序就是在这个读写层进行。

在Docker中,引导文件系统永远都是只读状态,当Docker刚刚启动的时候,可写容器这一层是空的,当文件系统发生变化的时候,这些变化都会应用到这层,比如我们想修改一个文件,这个文件首先会从下面的内核和引导文件系统层复制到可写容器中,该文件的只读版本依旧存在,但是已经被可写容器层中的文件副本所覆盖。

当Docker容器启动之后,该容器会被移动到内存中,而底层的bootfs引导文件系统会被卸载(unmount),从而节省空间。

基于上面的认识,我们也可以简单的将容器的文件系统划分成两层:

Docker

读写层在需要修改文件的时候,将只读层的文件复制到读写层,这种复制的机制被称之为"写时复制"(copy-on-write)。

docker中的只读镜像层永远不会变化,当我们构建自己的容器时,其实docker为我们构建了一个镜像栈,栈顶是我们的读写层,在加上一些配置数据,就构成了镜像。

2、列出docker镜像、查看容器

可以使用docker images命令来列出当前机器上所有的镜像名称。

[root@VM-16-13-centos ~]# docker images
REPOSITORY                                            TAG                 IMAGE ID            CREATED             SIZE
docker.io/tomcat                                      latest              e0bd8b34b4ea        6 weeks ago         649 MB
docker.io/mysql                                       latest              4f1413420360        7 weeks ago         545 MB
docker.io/busybox                                     latest              f0b02e9d092d        2 months ago        1.23 MB
registry.access.redhat.com/rhel7/pod-infrastructure   latest              99965fb98423        3 years ago         209 MB
docker.io/kubeguide/tomcat-app                        v1                  a29e200a18e9        4 years ago         358 MB
docker.io/kubeguide/redis-master                      latest              405a0b586f7e        5 years ago         419 MB

可以在本机的/var/lib/docker/containers目录下找到本机的容器:

[root@VM-16-13-centos ~]# ll /var/lib/docker/containers/
total 48
drwx------ 5 root root 4096 Nov 20 17:59 3b7634ee3eff796109fca6e198abb75f0544bacda850ae0a690d420ea8d1876b
drwx------ 5 root root 4096 Dec 28 11:06 3d198ee60f2a3c5e7043b50c20c0713f0e9199aef029cc28082ecad1c47fa729
drwx------ 4 root root 4096 Nov 20 17:16 4784586d01e00926f42203e37a38bc661d02445ef08f084d22ca54f7af5d6e2b
drwx------ 5 root root 4096 Dec 28 11:06 4f8f6ea37578b52c348c1b2efa71122ce0b466bb18bb265e8e74e40c37608546
drwx------ 5 root root 4096 Nov 20 18:12 5b83d7645b1fc1205c5fa1c4535315431b8df0e0b1cfab6a4d73935427626815
drwx------ 4 root root 4096 Dec 28 11:25 7a57ee5286e866072627429e72ad795f104ec22d6fbee30cf430cc71e4b33f03
drwx------ 4 root root 4096 Nov 20 18:57 94332658780b0676073a8489d1f4910d7cf30cd5cadd9d7b4d47c957d6e04335
drwx------ 4 root root 4096 Nov 20 18:28 a7ae6684d1965b5910a98a10acc0790ad8f8bde55815f51fd113873744319101
drwx------ 4 root root 4096 Dec 28 11:25 b2ad9bea8d0d1b09d6304aa3621c010afd1e458fa95b5b29668e0c0e80fa8b24
drwx------ 5 root root 4096 Nov 20 17:10 c8acc287dc061e2222998ff8f034750e36a3dae8e9c502617097d8b8374d5366
drwx------ 4 root root 4096 Nov 20 18:44 d2ec1526079f05264912610dfb28373050862da29d645837940a6ee3c9522c40
drwx------ 4 root root 4096 Nov 20 18:57 f11f11999c426d3ff40d7c9b33d9df3e318b3e9902c85f329e33cdb02b538c76

3、镜像、仓库、和容器的关系

这个关系之前的文章中也有介绍,我们再来看下:

镜像(Image) 容器(Container) 仓库(Repository)

Docker

这三部分组成了Docker的整个生命周期,如上图所示。

docker镜像包含了文件系统,类似于虚拟机的镜像,它是只读的模板。

docker容器是由镜像实例化而来的,这和我们学习的面向对象的概念十分相似,我们可以把镜像想象成类,把容器想象成类经过实例化后的对象,这样就非常好理解镜像和容器的关系了。

docker仓库:类似代码仓库,是Docker集中存放镜像文件的场所

这个关系可以更加清楚的表述为:

容器

镜像保存在仓库中,仓库位于registry中,也叫docker hub。默认的registry是:

https://registry.hub.docker.com/ ,它也称之为顶层仓库;

当然,你可以拥有自己的registry,这种称之为用户仓库。

4、查找镜像

例如我们查找mysql的镜像,可以使用下面的命令:

[root@VM-16-13-centos ~]# docker search mysql
INDEX       NAME                                        DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
docker.io   docker.io/mysql                             MySQL is a widely used, open-source relati...   10339     [OK]       
docker.io   docker.io/mariadb                           MariaDB is a community-developed fork of M...   3832      [OK]       
docker.io   docker.io/mysql/mysql-server                Optimized MySQL Server Docker images. Crea...   757                  [OK]
docker.io   docker.io/percona                           Percona Server is a fork of the MySQL rela...   518       [OK]       
docker.io   docker.io/centos/mysql-57-centos7           MySQL 5.7 SQL database server                   86                   
docker.io   docker.io/mysql/mysql-cluster               Experimental MySQL Cluster Docker images. ...   79                   
docker.io   docker.io/centurylink/mysql                 Image containing mysql. Optimized to be li...   60                   [OK]
docker.io   docker.io/bitnami/mysql                     Bitnami MySQL Docker Image                      47                   [OK]
docker.io   docker.io/deitch/mysql-backup               REPLACED! Please use http://hub.docker.com...   41                   [OK]
docker.io   docker.io/tutum/mysql                       Base docker image to run a MySQL database ...   35                   
docker.io   docker.io/databack/mysql-backup             Back up mysql databases to... anywhere!         34                   
docker.io   docker.io/prom/mysqld-exporter                                                              34                   [OK]
docker.io   docker.io/schickling/mysql-backup-s3        Backup MySQL to S3 (supports periodic back...   29                   [OK]

其中:

Name:是镜像名称

DESC:是镜像描述

Stars列反映的是镜像的受欢迎程度。

Official表示是否官方

Automated表示是否是由Docker hub自动构建流程完成的。

5、关于Docker构建镜像

这部分内容稍微多点,我们后续再说。

相关文章

网友评论

快盘下载暂未开通留言功能。

关于我们| 广告联络| 联系我们| 网站帮助| 免责声明| 软件发布

Copyright 2019-2029 【快快下载吧】 版权所有 快快下载吧 | 豫ICP备10006759号公安备案:41010502004165

声明: 快快下载吧上的所有软件和资料来源于互联网,仅供学习和研究使用,请测试后自行销毁,如有侵犯你版权的,请来信指出,本站将立即改正。