zoukankan      html  css  js  c++  java
  • Docker镜像

    镜像是什么

    镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,

    包括代码、运行时、库、环境变量和配置文件。

    Docker镜像原理

    UnionFS(联合文件系统)

    Union文件系统(UnionFS) 是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来层层的叠加,

    同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行集成,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

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

    Docker 镜像加载原理

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

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

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

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

    Docker 镜像联合文件系统分层,Tomcat镜像示例

       采用这种分层结构最大的一个好处就是共享资源,比如有多个镜像都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,

      同时内存中也只需要加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

       docker 镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作 “容器层” ,“容器层” 之下的都叫镜像层。

    特点

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

    这一层就是我们通常说的容器层,容器之下的都叫镜像层!

    commit镜像

    如何提交一个自己的镜像

    docker commit 提交容器成为一个新的副本
    
    docker commit -m="提交的描述信息" -a="作者" 容器id 目标镜像名:[TAG]
    

    测试

    #启动一个默认的tomcat
    [root@iz2zeaet7s13lfkc8r3e2kz /]# docker run -it -p 8080:8080 tomcat
    #发现这个默认的tomcat 是没有webapps应用。镜像的原因。
    root@585d63efcef0:/usr/local/tomcat# cd webapps
    root@585d63efcef0:/usr/local/tomcat/webapps# ls
    #我自己拷贝进去了基本的文件
    root@585d63efcef0:/usr/local/tomcat# cp -r webapps.dist/* webapps
    root@585d63efcef0:/usr/local/tomcat# cd webapps
    root@585d63efcef0:/usr/local/tomcat/webapps# ls
    ROOT  docs  examples  host-manager  manager
    
    # 将我们操作过的容器通过commit提交为一个镜像!以后就使用修改后的镜像即可!
    [root@iz2zeaet7s13lfkc8r3e2kz ~]# docker commit -a="ysl" -m="add webapps app" ca829305596e tomcat02:1.0
    sha256:b0152d8846e16274929acb433905ef8d98ea22842a2706983adaeccb9739bcf2
    [root@iz2zeaet7s13lfkc8r3e2kz ~]# docker images
    REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
    tomcat02              1.0                 b0152d8846e1        15 seconds ago      652MB
    tomcat                latest              1b6b1fe7261e        6 days ago          647MB
    nginx                 latest              9beeba249f3e        7 days ago          127MB
    elasticsearch         7.6.2               f29a1ee41030        8 weeks ago         791MB
    portainer/portainer   latest              2869fc110bf7        2 months ago        78.6MB
    centos                latest              470671670cac        4 months ago        237MB
    

  • 相关阅读:
    Poj 2017 Speed Limit(水题)
    Poj 1316 Self Numbers(水题)
    Poj 1017 Packets(贪心策略)
    Poj 1017 Packets(贪心策略)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    Poj 2662,2909 Goldbach's Conjecture (素数判定)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2388 Who's in the Middle(快速排序求中位数)
    poj 2000 Gold Coins(水题)
    poj 2000 Gold Coins(水题)
  • 原文地址:https://www.cnblogs.com/yslss/p/12982188.html
Copyright © 2011-2022 走看看