精华内容
下载资源
问答
  • 容器镜像的区别

    千次阅读 2019-06-15 13:40:19
    这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。 当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常...

    这篇文章希望能够帮助读者深入理解Docker的命令,还有容器(container)和镜像(image)之间的区别,并深入探讨容器和运行中的容器之间的区别。

    当我对Docker技术还是一知半解的时候,我发现理解Docker的命令非常困难。于是,我花了几周的时间来学习Docker的工作原理,更确切地说,是关于Docker统一文件系统(the union file system)的知识,然后回过头来再看Docker的命令,一切变得顺理成章,简单极了。

     

    题外话:就我个人而言,掌握一门技术并合理使用它的最好办法就是深入理解这项技术背后的工作原理。通常情况下,一项新技术的诞生常常会伴随着媒体的大肆宣传和炒作,这使得用户很难看清技术的本质。更确切地说,新技术总是会发明一些新的术语或者隐喻词来帮助宣传,这在初期是非常有帮助的,但是这给技术的原理蒙上了一层砂纸,不利于用户在后期掌握技术的真谛。

     

    Git就是一个很好的例子。我之前不能够很好的使用Git,于是我花了一段时间去学习Git的原理,直到这时,我才真正明白了Git的用法。我坚信只有真正理解Git内部原理的人才能够掌握这个工具。

     

    # Image Definition

     

    镜像(Image)就是一堆只读层(read-only layer)的统一视角,也许这个定义有些难以理解,下面的这张图能够帮助读者理解镜像的定义。

    从左边我们看到了多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机(译者注:运行Docker的机器)的文件系统上访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。我们可以在图片的右边看到这个视角的形式。

    你可以在你的主机文件系统上找到有关这些层的文件。需要注意的是,在一个运行中的容器内部,这些层是不可见的。在我的主机上,我发现它们存于/var/lib/docker/aufs目录下。

    •  
    sudo tree -L 1 /var/lib/docker//var/lib/docker/

     

    # Container Definition

     

    容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。

    细心的读者可能会发现,容器的定义并没有提及容器是否在运行,没错,这是故意的。正是这个发现帮助我理解了很多困惑。

     

    要点:容器 = 镜像 + 可读层。并且容器的定义并没有提及是否要运行容器。

     

    接下来,我们将会讨论运行态容器。

     

    # Running Container Definition

     

    一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。

    正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write layer)。下面这张图展示了这个行为。

    我们可以通过运行以下命令来验证我们上面所说的:

    •  
    docker run ubuntu touch happiness.txt

    即便是这个ubuntu容器不再运行,我们依旧能够在主机的文件系统上找到这个新文件。

    •  
    find / -name happiness.txt

     

    # Image Layer Definition

     

    为了将零星的数据整合起来,我们提出了镜像层(image layer)这个概念。下面的这张图描述了一个镜像层,通过图片我们能够发现一个层并不仅仅包含文件系统的改变,它还能包含了其他重要信息。

    元数据(metadata)就是关于这个层的额外信息,它不仅能够让Docker获取运行和构建时的信息,还包括父层的层次信息。需要注意,只读层和读写层都包含元数据。

    除此之外,每一层都包括了一个指向父层的指针。如果一个层没有这个指针,说明它处于最底层。

    Metadata Location:
    我发现在我自己的主机上,镜像层(image layer)的元数据被保存在名为”json”的文件中,比如说:

    •  
    /var/lib/docker/graph/e809f156dc985.../json

    e809f156dc985…就是这层的id。

     

    一个容器的元数据好像是被分成了很多文件,但或多或少能够在/var/lib/docker/containers/<id>目录下找到,<id>就是一个可读层的id。这个目录下的文件大多是运行时的数据,比如说网络,日志等等。

     

    # 全局理解(Tying It All Together)

     

    现在,让我们结合上面提到的实现细节来理解Docker的命令。

    •  
    docker create <image-id>

    docker create 命令为指定的镜像(image)添加了一个可读层,构成了一个新的容器。注意,这个容器并没有运行。

    •  
    docker start <container-id>

    Docker start命令为容器文件系统创建了一个进程隔离空间。注意,每一个容器只能够有一个进程隔离空间。

     

    docker run <image-id>

    看到这个命令,读者通常会有一个疑问:docker start 和 docker run命令有什么区别。

    从图片可以看出,docker run 命令先是利用镜像创建了一个容器,然后运行这个容器。这个命令非常的方便,并且隐藏了两个命令的细节,但从另一方面来看,这容易让用户产生误解。

     

    题外话:继续我们之前有关于Git的话题,我认为docker run命令类似于git pull命令。git pull命令就是git fetch 和 git merge两个命令的组合,同样的,docker run就是docker create和docker start两个命令的组合。

    •  
    docker ps

    docker ps 命令会列出所有运行中的容器。这隐藏了非运行态容器的存在,如果想要找出这些容器,我们需要使用下面这个命令。

    •  
    docker ps –a

    docker ps –a命令会列出所有的容器,不管是运行的,还是停止的。

    •  
    docker images

    docker images命令会列出了所有顶层(top-level)镜像。实际上,在这里我们没有办法区分一个镜像和一个只读层,所以我们提出了top-level镜像。只有创建容器时使用的镜像或者是直接pull下来的镜像能被称为顶层(top-level)镜像,并且每一个顶层镜像下面都隐藏了多个镜像层。

    •  
    docker images –a

    docker images –a命令列出了所有的镜像,也可以说是列出了所有的可读层。如果你想要查看某一个image-id下的所有层,可以使用docker history来查看。

    •  
    docker stop <container-id>

    docker stop命令会向运行中的容器发送一个SIGTERM的信号,然后停止所有的进程。

    •  
    docker kill <container-id>

    docker kill 命令向所有运行在容器中的进程发送了一个不友好的SIGKILL信号。

    •  
    docker pause <container-id>

    docker stop和docker kill命令会发送UNIX的信号给运行中的进程,docker pause命令则不一样,它利用了cgroups的特性将运行中的进程空间暂停。具体的内部原理你可以在这里找到:https://www.kernel.org/doc/Documentation/cgroups/freezer-subsystem.txt,但是这种方式的不足之处在于发送一个SIGTSTP信号对于进程来说不够简单易懂,以至于不能够让所有进程暂停。

    •  
    docker rm <container-id>

    docker rm命令会移除构成容器的可读写层。注意,这个命令只能对非运行态容器执行。

    •  
    docker rmi <image-id>

    docker rmi 命令会移除构成镜像的一个只读层。你只能够使用docker rmi来移除最顶层(top level layer)(也可以说是镜像),你也可以使用-f参数来强制删除中间的只读层。

    •  
    docker commit <container-id>

    docker commit命令将容器的可读写层转换为一个只读层,这样就把一个容器转换成了不可变的镜像。

    •  
    docker build

    docker build命令非常有趣,它会反复的执行多个命令。

    我们从上图可以看到,build命令根据Dockerfile文件中的FROM指令获取到镜像,然后重复地1)run(create和start)、2)修改、3)commit。在循环中的每一步都会生成一个新的层,因此许多新的层会被创建。

    •  
    docker exec <running-container-id>

    docker exec 命令会在运行中的容器执行一个新进程。

    •  
    docker inspect <container-id> or <image-id>

    docker inspect命令会提取出容器或者镜像最顶层的元数据。

    •  
    docker save <image-id>

    docker save命令会创建一个镜像的压缩文件,这个文件能够在另外一个主机的Docker上使用。和export命令不同,这个命令为每一个层都保存了它们的元数据。这个命令只能对镜像生效。

    •  
    docker export <container-id>

    docker export命令创建一个tar文件,并且移除了元数据和不必要的层,将多个层整合成了一个层,只保存了当前统一视角看到的内容(译者注:expoxt后的容器再import到Docker中,通过docker images –tree命令只能看到一个镜像;而save后的镜像则不同,它能够看到这个镜像的历史镜像)。

    •  
    docker history <image-id>

    docker history命令递归地输出指定镜像的历史镜像。

    展开全文
  • 很多刚刚接触容器技术的朋友,不容易弄清楚容器,容器镜像和Docker这几个词的区别和联系。 我们首先来看容器和容器镜像。举个例子,执行命令行docker search nginx,搜索结果的一条条记录就是一个个容器镜像。 ...

    很多刚刚接触容器技术的朋友,不容易弄清楚容器,容器镜像和Docker这几个词的区别和联系。

    我们首先来看容器和容器镜像。举个例子,执行命令行docker search nginx,搜索结果的一条条记录就是一个个容器镜像。

    所谓镜像,就是一个静态概念,一个镜像由若干只读层(read-only layer)构成。

    上图左边是Docker镜像的内部实现细节,我们能看到多个只读层叠加在一起,层与层之间通过指针关联,这些层能够在运行Docker的宿主机的文件系统上访问到。

    Linux的统一文件系统(union file system)技术将这些叠加的只读层合并成一个文件系统,该系统为这些只读层提供了一个统一的视角,从而为Docker的用户隐藏了多层的存在。

    从Docker用户的视角出发,一个Docker镜像只存在一个文件系统,即上图右边所示。

    这些文件系统的设计是Docker实现细节,一般情况下我们不用去深究。但如果您足够好奇,使用命令sudo tree浏览目录 /var/lib/docker即可:

    比如我用命令docker images浏览下载到本地的docker镜像:

    其中一个叫jerry-nginx的镜像,是一个web应用,它的所有内容能在/var/lib/docker目录下的这个目录查到:

    讲完了容器镜像,我们再来看容器。

    容器和容器镜像一样,也是若干层的叠加,唯一区别是所有只读层的最上面一层,是一层可读可写层,如上图绿色图例所示。

    初学者可以记住这个简单的公式:容器 = 容器镜像 + 可读可写层

    我们如果用命令docker ps --all查看本机所有容器列表,会发现有的容器处于运行状态,有的处于退出状态。

    因此,一个处于运行状态的容器(running container)包含一个可读写的文件系统加上隔离的进程空间。

    容器里的进程可以对这个可读写文件系统内的文件进行修改、删除、创建等操作。

    镜像里每一层其实都能在docker文件夹的containers子目录下找到:

    上图每一个红色文件夹代表镜像里的一层,蓝色文件包含了该层运行时的日志文件,或者网络相关配置等。

    做个实验:

    ubuntu这个容器执行结束后,使用find / -name i042416.txt文件,这说明docker运行时能对宿主机的文件系统进行写操作。

    下面分析几个常用的易混淆的命令。

    docker create

    先看它的帮助文档:

    试着执行以下:

    产生一个输出id:

    7ee10851c3f1e53bbd35e5f196f34de560afa1a20d9bf1ced587630dbcda877b

    create创建的容器,状态变为created:

    docker create命令给通过命令行传入的容器镜像创建了一个新的可读可写层,从而生成了一个新的容器实例:

    然后再执行docker start,输入docker create创建的容器实例ID,就可以启动这个容器实例了。

    而docker run其实就是docker create和docker start这两个命令合二为一的版本。

    希望这篇文章能帮助大家理解容器和容器镜像的区别。
    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

    展开全文
  • 常见容器镜像仓库

    千次阅读 2018-02-07 11:03:29
    阿里镜像:http://dev.aliyun.com/search.html daocloud镜像市场:https://hub.daocloud.io/ 网易镜像中心:https://c.163.com/hub#/m/home/ 时速云:https://hub.tenxcloud.com/  灵雀云:...
    阿里镜像:http://dev.aliyun.com/search.html
    
    daocloud镜像市场:https://hub.daocloud.io/
    网易镜像中心:https://c.163.com/hub#/m/home/
    时速云:https://hub.tenxcloud.com/ 
    灵雀云:https://hub.alauda.cn/
    展开全文
  • 镜像容器的最基础的载体,docker作为最流行的容器runtime,其最大的贡献就是把镜像作为容器应用的标准交付方式,镜像包含了容器运行的所有基础文件,可以说镜像的安全就决定了容器安全。 但现实不乐观,在docker...

    镜像安全的解决方案

    镜像是容器的最基础的载体,docker作为最流行的容器runtime,其最大的贡献就是把镜像作为容器应用的标准交付方式,镜像包含了容器运行的所有基础文件,可以说镜像的安全就决定了容器安全。

    但现实不乐观,在docker官方镜像中有超过30%的镜像有高危漏洞,平均每一个镜像有127个中危漏洞,几乎没有镜像没有漏洞。镜像在构建过程中会安装依赖组件,这些组件存在大量漏洞,而这仅仅是基础运行环境的软件漏洞。

    安全前移是目前最主流的安全治理思路,希望镜像在进入生产环境前尽量解决安全问题,对于镜像的安全控制可以在三个地方:

    一、构建时,在使用持续集成平台自动构建后,拿jenkins来举例说明,当镜像构建完成后,对构建的镜像进行漏洞扫描,如果出现策略不允许出现的安全漏洞,中断流程,达到安全控制。

    二、存储时,在镜像仓库中对上传的镜像进行漏洞扫描,发现安全问题,禁止拉取。

    三、运行时,在镜像拉取到主机节点,启动时扫描镜像漏洞,禁止镜像运行。

    所以,镜像安全问题最好在持续集成过程中和镜像仓库中解决。

     

    开源免费的镜像漏洞扫描器使用得最多的就是Clair,Clair是最早由Quay推出的开源镜像漏洞扫描器,也是目前应用最广的扫描器;另外使用较多是Anchore,Anchore以最早支持应用框架漏洞扫描闻名。Clair扫描器的社区活跃度是最高的,经历了几个大的版本迭代,扫描效率有所提升,但是准确度还存在一些问题,而Anchore由python开发,扫描效率比Clair要低,社区活跃度一般。

     

    小佑科技免费扫描器harbor-scanner介绍

    小佑科技作为国内领先的云原生安全产品提供商,将其商业版的镜像扫描部分功能免费出来,提供给用户使用。本次我们推出的免费镜像扫描工具得到Harbor开源社区的大力支持,Harbor是Vmware中国团队推出的优秀开源项目,世界上最流行的镜像私有仓库,在Github上超过1万的starts,也是云原生基金会(CNCF)项目,Harbor镜像仓库在最新的1.10版本后加入了镜像漏洞扫描器的管理,用户可根据自身需求选择镜像漏洞扫描器,取代之前内置的Cliar扫描器。

     

    https://github.com/goharbor/harbor/releases/tag/v1.10.0

    小佑科技推出的免费镜像扫描工具harbor-scanner作为Harbor第一批官方推荐的扫描器,通过Harbor的兼容性测试,用户可放心使用。

    https://github.com/goharbor/harbor/blob/master/docs/harbor_compatibility_list.md#Scanner-Adapters

    目前全球有4款免费的镜像扫描器通过兼容性测试,除上文介绍到的Clair和Anchore,还有著名以色列容器安全公司的Aqua的Trivy扫描器,而小佑科技的Harbor-scanner是唯一支持中文漏洞库扫描器。

    可以从以下地址获取:https://github.com/dosec-cn/harbor-scanner

    小佑科技的Harbor-Scanner镜像漏洞扫描器开箱即用,考虑到很多用户在无联网环境中使用,我们的安装包包含了在版本发布时的全部最新漏洞库,其中包括最新的CNNVD中文漏洞库,用户无需联网也可以获取到比较新的漏洞库,同时产品支持实时在线更新漏洞库。

    与当下流行的开源镜像漏洞扫描器相比, Harbor-Scanner 扫描器主要有以下几个特点:

    1.       扫描更准确,可识别各个系统发行版中非统一的小版本;

    2.       可显示中文漏洞描述信息;

    3.       支持 CVE 和 CNNVD 双漏洞编号;

    4.       离线版本中已包含发布日期时最新的全量漏洞库,首次安装无需更新漏洞库即可立即对镜像进行安全扫描;

    5.       联网情况下可以自动更新漏洞库(需要在配置中开启自动更新参数)。

    支持扫描的操作系统类型如下:

      • Debian >= 7,unstable

      • Ubuntu LTS releases >= 12.04

      • Red Hat Enterprise Linux >=5

      • CentOS >= 5

      • Alpine >= 3.3

      • Oracle Linux >= 5

     

    安装及使用方法

    用户可根据下面的步骤进行安装配置后就可以在 Harbor 的管理界面直接对镜像进行安全扫描

    提醒: Harbor 的 1.10 版本新增了自定义扫描器的功能,Harbor-Scanner 扫描器需要 Harbor >= 1.10 才可以使用

    一、安装

    推荐将 Harbor-Scanner 和 Harbor 镜像仓库部署在同一台服务器。

    1、下载 Harbor-Scanner 的离线安装包并解压

     wget https://github.com/dosec-cn/harbor-scanner/releases/download/v1.0/dosec-scanner.tgz
    

    # 解压

    tar xf dosec-scanner.tgz
    

    # 进入项目

    cd dosec-scanner
    

    2、运行 Install 脚本

    需要提前安装 docker-compose

    ./Install.sh

    3、配置 Harbor 仓库

    登录 Harbor 管理界面 -> 配置管理 -> Scanners -> NEW SCANNER

                       填写扫描器配置 ->点击 ADD 确认添加

            ① 填写扫描工具的名称

             ② 填写扫描工具的 IP 和端口

             ③ 测试 Harbor 和扫描工具是否能正常连接

             ④ 只有测试连接成功后才能添加

    二、定义配置

    可根据需要更改docker-compose.yaml文件

    
    version: '2.2'
    
    services:
      dosec-db-hb:
        image: hub.dosec.cn/library/dosec-db-hb:2019-10-24T18.39.33
        restart: always
    
      dosec-scannerapp:
        depends_on:
          - dosec-db-hb
        image: hub.dosec.cn/library/dosec-scannerapp:2019-10-24T19.17.35V1.0.0_prod
        # 默认映射了主机的 8899 端口
        ports:
          - "8899:8899"
        restart: always
        # 默认将程序日志映射到了主机的 /var/log/dosec-scanner 目录
        volumes:
          - /var/log/dosec-scanner:/dosec/log
    
      dosec-scanner-hb:
        depends_on:
          - dosec-db-hb
          - dosec-scannerapp
        image: hub.dosec.cn/library/dosec-scanner-hb:2019-10-25T11.58.04V1.0_release
        # command: ["-update_cve"]
        # 默认注释了在线更新 CVE 功能,会消耗大量 CPU 和内存
        restart: always
        # 默认将程序日志映射到了主机的 /var/log/dosec-scanner 目录
        volumes:
          - /var/log/dosec-scanner:/dosec/log
    

    三、卸载

    进入 Harbor-Scanner 项目目录,执行以下命令即可完全卸载

    docker-compose down

    与商业版对比

    小佑科技同时提供商业版本的镜像扫描工具,商业版本的镜像安全除免费版的功能外,还包含开源框架漏洞扫描、镜像内病毒木马检测、镜像中敏感数据扫描、镜像操作历史追踪、镜像修复建议及加固等。同时提供容器资产管理,容器入侵检测与防护、容器云原生防火墙、微服务与API安全、kubernetes安全、合规审计等其他云原生安全功能。

     

     

    功能

    Harbor-Scanner

    镜界容器安全防护平台

    许可

    免费

    企业版

    Harbor 集成

    显示中文描述

    显示 CVE 和 CNNVD 双漏洞编号

    离线漏洞库

    系统软件包漏洞扫描

    开源组件漏洞扫描

     

    恶意软件扫描

     

    敏感数据扫描

     

    镜像配置检查

     

    镜像历史行为分析

     

    阻止非信任镜像运行

     

     

     

    后续更新计划

    容器安全或云原生安全属于比较新的安全领域,小佑科技旨在为推动国内的容器及云原生安全出一份力。对已上线的容器环境中,快速且免费的为用户提供一个基本的安全防护能力,该项目会永久免费且维护,计划在后续的版本中:

    1. 进一步优化性能及准确性;

    2. 推出可独立运行的镜像漏洞扫描器;

    3. 并提供独立的API便于集成;

    4. 提供可视化镜像漏洞扫描结果报告。

     

    欢迎使用者积极与我们反馈相关问题,监督我们做得更好。

    可以通过加以下微信号,拉入社区讨论群:

    展开全文
  • Docker中容器镜像的关系【通俗易懂】

    万次阅读 多人点赞 2019-10-30 20:57:52
    docker中容器镜像的关系是什么? 最近学习了docker,感觉容器镜像学的有点模糊。 特别是镜像容器,感觉完全分不开,所以在此学习,然后总结了一下,便于后面的学习。 docker的整个生命周期有三部分组成:...
  • Docker总结(配合阿里云容器镜像服务)

    千次阅读 2018-10-26 16:39:40
    Docker是个很好的工具,刚开始用觉得还没虚拟环境好用,随着深入了解,越发觉得Docker好用,今天就来总结一下使用心得。 一、Docker基础 ... Docker 属于 Linux 容器的一种封装,提供简单易用的...
  • 阿里云上的Docker容器镜像仓库

    千次阅读 2020-06-08 08:10:00
    关注“Java艺术”一起来充电吧!去年笔者写了一篇关于如何使用AWS的镜像仓库ECR,因为老东家使用AWS服务。今天再分享一篇类似的文章,即如何使用阿里云上的Docker容器镜像仓库。这...
  • 通过kubeadm部署k8s集群,在执行kubeadm init命令时,默认生成的manifests文件夹下yaml文件的镜像都是gcr.io上的,在国内由于被墙而不能正常下载,也就导致了集群不能正常安装。那么问题来了,要怎样才能下载这些...
  • Docker容器镜像仓库详解

    千次阅读 2019-03-03 22:21:39
    Docker容器之镜像仓库详解 文章目录Docker容器之镜像仓库详解1. 什么是Docker Image?2. 什么是Docker Registry?3. 镜像相关的操作 本文将集中对镜像、仓库、容器的概念与三者之间的...容器镜像是一个不可的只读文...
  • 将代码(jar包)托管在github上,使用阿里云容器镜像服务绑定github上的源代码,实现github上发生变更时,阿里云自动构建镜像,docker从阿里云拉取最新镜像并运行,关系如下: 本例主要的目的是引入阿里云镜像服务...
  • Docker制作容器镜像的2种方法

    千次阅读 2019-03-02 01:15:09
    第一种方式(手动修改容器镜像) 1.先下载centos镜像 2.启动容器并进行安装配置 3.安装配置完成后,进行打包成新的镜像 第二种方式(推荐:利用Dockerfile文件) 1.创建Dockerfile文件 2.执行docker build ...
  • Docker容器打包镜像文件

    千次阅读 2020-07-27 20:50:58
    1、查看镜像 docker image 2、选择要打包的镜像,执行打包命令 docker save -o 打包镜像名称.tar(名称自定义) 镜像名称 ...5、容器打包镜像,打包完成后,使用ls命令查看 docker commit -a “xxx”
  • Before 最近使用虚拟机搭建rocketMQ环境,Docker无法拉取pull成功!!!一直显示waiting. ...1.打开阿里云首页,搜索 容器镜像服务 2.登录方可显示下图 3. 使用以下指令(注:Docker版本大于1.10.0...
  • Httpd 容器镜像使用概要

    千次阅读 2017-06-26 13:21:30
    镜像名称:httpd 下载方法:docker pull httpd 镜像用途:Apache Web 服务器,提供Web服务。   运行方法: 1、简单方式运行 httpd: docker run -it -d --name myhttpd httpd 访问方式:http://ip ,显示内置的...
  • 在本地创建一个容器后,可以依据这个容器创建本地镜像,并可把这个镜像推送到Docker hub中。 目录 根据镜像启动容器:docker run 根据启动的容器创建新的镜像:docker commit 将由容器生成的镜像push到镜像仓库...
  • Docker 容器镜像删除命令

    千次阅读 2018-11-22 17:30:04
    在操作Docker的过程中,常常发现启动命令 --name=do 时发现该名字已被占用,但是我已经用stop dockerId这个命令去停止该容器, 最终还是要在docker ps -a中查询不到该容器才启动,因此记录下相关操作 2.实操 1.停止所有...
  • Docker容器镜像的区别

    千次阅读 2020-09-10 18:44:39
    在学习使用docker过程中会遇到镜像容器,两者之间的区别是什么?有什么关联?本文将用图文并茂的方式介绍容器镜像的区别,能够很好的帮助各位深入理解Docker。   一、什么是镜像? 1.1 Image Layer(镜像层...
  • Docker是一个开源的应用容器引擎,将应用以及依赖打包到一个可移植的镜像中,然后发布到服务器上,并且可以实现虚拟化,有助于快捷高效的交付应用。...阿里云容器镜像服务提供Docker镜像仓库托管,配置...
  • docker容器镜像之间的区别

    千次阅读 2019-06-17 10:49:11
    容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。 容器 = 镜像 + 可读层。 一个运行态容器(running container)被定义为一个可读写的统....
  • 利用Podman和Buildah构建容器镜像

    千次阅读 2020-08-30 08:11:12
    这是有关构建容器镜像的一系列博客文章中的第二篇。该系列从《未来我们如何构建容器镜像?》开始。该文章探讨了自Docker首次发布以来构建镜像的变化以及如何克服使用Dockerfile的诸多...
  • docker删除停止的容器镜像

    千次阅读 2019-02-25 15:15:24
    删除停止的容器 :sudo docker rm -v $(sudo docker ps -aq -f status=exited) 删除镜像: sudo docker rmi $(sudo docker images | grep "none" | awk '{print $3}'); sudo docker rmi -f id ...
  • 可以使用阿里云容器镜像服务由海外机器构建 国内同时可以使用阿里云的镜像加速器加速镜像下载 仅需要将含有相关镜像的Dockerfile提交到阿里云即可 申请云Code代码托管账号作为代码源 可以绑定到阿里云镜像仓库的...
  • 关于docker容器镜像的区别

    万次阅读 多人点赞 2017-11-13 17:00:43
    docker的整个生命周期有三部分组成:镜像(image)+容器(container)+仓库(repository);  如下图所示,容器是由镜像实例化而来,这和我们学习的面向对象的概念十分相似,我们可以把镜像看作类,把容器看作类...
  • 20190420 学习过程中,不注意就一堆 images,一容器,经过一轮学习之后,希望全部删除重来! Docker 最终还是要落实到 Dockerfile 和 Docker-compose,只要将有用的项目和服务再build或 up 一轮就 ok! 参考:...
  • Docker容器镜像的关系及安装

    千次阅读 2018-11-22 22:00:34
    用户基于镜像来运行自己的容器镜像也是 Docker 生命周 期中的“构建”部分。也可以将镜像当作容器的“源代码”。镜像体积很小,非常“便携”,易于分享、存储和更新。 二、什么是Docker容器容器是基于镜像...
  • docker 删除 容器/镜像 方法

    万次阅读 2019-06-17 14:17:21
    docker的删除有两种,一个是rm 删除容器,一个是rmi删除镜像 想要删除运行过的images(镜像) 必须首先删除它的container(容器) 首先查看并找到要删除的镜像 docker images 这里我们要删除hello-world镜像 使用...
  • 容器创建、修改和更新Docker镜像

    千次阅读 2021-01-21 22:04:07
    镜像作为容器运行 修改Docker镜像 从修改后的容器创建新镜像以进行分发 分发Docker镜像 使用存储库分发 通过创建Tar文件进行分发 结论 背景 在软件开发过程中,有时我们需要配置容器化解决方案并进行迭代...
  • docker 已有镜像修改更新 1) docker images # 列出所有镜像 以wiscan/wiscan_server:3.2.0 为例,修改生成wiscan/wiscan_server:3.3.0 2) docker run -it --name my_test wiscan/wiscan_server:3.2.0 /bin/...
  • Docker 容器更新镜像

    千次阅读 2016-12-24 18:22:00
    每当远程的镜像有更新之后,首先pull到本地 docker pull gogs/gogs docker images 的时候会有两个同名称的镜像,一个tag是 latest ,一个tag是 none 更新脚本 #!/bin/sh docker rm -f gogs docker run ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 215,377
精华内容 86,150
关键字:

容器镜像变大