您现在的位置是:首页 > 正文

7. docker——镜像

2024-02-01 03:25:05阅读 2

1. 概述

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

1.1 UnionFS(联合文件系统)

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

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

1.2 Docker镜像加载原理

        docker镜像实际上由一层层的文件系统组成,这种层级的文件系统UnionFS。

        bootfs主要包含bootloader和kernel,BootLoader主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs,这一层与典型的linux/unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

        rootfs,在bootfs之上,包含的就是典型的Linux系统中的/dev、/proc、/bin、/etc等标准目录和文件。rootfs就是各种不同操作系统发行版,比如Ubuntu,Centos等等。

1.3 docker镜像commit操作

docker commit提交容器副本使之成为一个新的镜像

语法:

docker commit -m="提交的描述信息" -a="作者" 容器ID 要创建目标镜像名:[标签名]

案例演示:

1)从Hub上下载Tomcat镜像到本地并成功运行

docker pull tomcat

以交互方式运行

### 以交互式的方式启动Tomcat,本机端口8888映射Tomcat端口8080
docker run -it -p 8888:8080 tomcat

注意;这里的参数是小写的p,表示指定端口,如果改成大P,就表示随机端口

如图:


访问:

1.3.1 解决404问题

1)先关闭防火墙

service firewalld stop

2)进入Tomcat容器

docker exec -it 0820a84543da /bin/bash

3)查看目录

ls -l

4)查看webapps目录,发现其是空的,在查看webapps.dist发现其有内容

因此,将webapps目录删除,将webapps.dist改成webapps

再次访问,成功的访问到了Tomcat

2)故意删除上一步的镜像生产Tomcat容器的文档

2.1 进入Tomcat容器

docker exec -it  bd98b373d138 /bin/bash

2)进入webapps目录,删除doc文件夹

3)再次访问Tomcat的doc,报错,如图:

3)以删除了docs目录的Tomcat为模板,commit一个没有doc的Tomcat新镜像tomcat02

docker commit -a="zoudm" -m="del tomcat docs" bd98b373d138 bjc/tomcat02:1.2

执行结果如图:

最后查询镜像,发现镜像列表存在刚才提交的镜像,如图:

4)启动新镜像并和原来的对比

docker run -it -p 9999:8080 bjc/tomcat02:1.2 

访问新容器的Tomcat,可以访问,但是,访问其docs报错,如图:

网站文章

  • Kotlin的数据类,枚举类,单例类

    Kotlin的数据类,枚举类,单例类

    数据类 Kotlin 新增 数据类的概念,使用data关键字声明class,不用手动写一堆 getter和setter方法, 自动生成通用方法的默认实现 data class UserInfoBean( val authStatus: String, // 认证状态 val authTime: String, //认证时间 va...

    2024-02-01 03:24:35
  • 前端 mock 接口响应数据

    前端 mock 接口响应数据

    前端mock数据

    2024-02-01 03:24:29
  • Ant Design of Vue 时间选择框踩坑 && Ant Design of Vue 时间选择器数据回显解决方法

    Ant Design of Vue 时间选择框踩坑 && Ant Design of Vue 时间选择器数据回显解决方法

    表格中使用时间选择器 并使其数据回显 本人在项目开发中使用的框架为 Ant Design of Vue 因为这个组件在实际开发中用的是比较少的(一般都是用日期选择框) 肯定有人遇到和我一样的问题框架的...

    2024-02-01 03:24:23
  • atom服务器系列,新Atom:微型服务器我来了

    atom服务器系列,新Atom:微型服务器我来了

    "Atom正在努力探索两条新路,一是智能手机和平板机,二就是微型服务器,这两方面都正在与ARM展开正面交锋。面向微型服务器的Atom平台开发代号Bordenville,处理器代号Centerton,采...

    2024-02-01 03:24:17
  • 安装wsl并将Python和OpenCV Python包导入到wsl里

    安装wsl并将Python和OpenCV Python包导入到wsl里

    1、不一定非得安装原版python,可以选择aconda,里面包含了一些要用的包和工具,会更加方便,也更利于版本控制。其中python安装时我按照如下顺序勾选,看教程说几种安装方式都可以,过程稍微有点...

    2024-02-01 03:23:47
  • 通过CSS类型的顺序改变网页超级连接翻滚效果

    <script type="text/javascript"> </script> <script type="text/javascrip...

    2024-02-01 03:23:39
  • getaddrinfo ENOENT raw.githubusercontent.com

    找到问题所在,解决起来就容易得多了,直接找到可用的ip地址写进host里面,这里刚好有一个,如果下面的ip地址不行,找到可用ip地址就好。发生场景:react 老项目在执行npm install时报错。

    2024-02-01 03:23:31
  • 同符号数学运算

    描述 读入一个整数N,分别计算如下内容: 1. N的绝对值; 2. N与10进行同符号加法、减法和乘法运算,同符号运算指使用N的绝对值与另一个数进行运算,运算结果的绝对值被赋予N相同的符号,其中,0的符号是正号。 将上述4项结果在一行输出,采用空格分隔,输出结果均为整数。 程序如下: n=eval(input())a=abs(n)b=a+10c=a-10d=a*10if n>...

    2024-02-01 03:23:01
  • github团队开发之申请加入团队

    github团队开发之申请加入团队

    github团队协作开发,仓库创建者需要邀请团队成员加入,然后才能协作开发;远程库创建者登录,打开仓库地址,然后点击 Settings点击左侧 Manage access再点击 “Invite a c...

    2024-02-01 03:22:54
  • 数据可视化—随机漫步

    数据可视化—随机漫步

    随机漫步顾名思义就是你也不知道它下一步走哪,可能这辈子你都找不到两个一模一样的随机漫步(不信可以试试)

    2024-02-01 03:22:48