美文网首页
2020-11-17

2020-11-17

作者: 沉浮_0644 | 来源:发表于2020-11-17 21:45 被阅读0次

    Docker三大核心概念

    (1)镜像

    镜像类似于虚拟机镜像,可以把它理解为一个只读的模板。例如,一个包含 Nginx 应用程序的镜像,其内部包含一个基本的操作系统环境以及 Nginx 应用程序 。 镜像是创建 Docker 容器的基础,通过版本管理和增量文件系统, Docker 提供了一套机制来创建或更新现有的镜像,我们还可以从网上下载并使用别人已经做好的镜像。

    (2)容器

    Docker 容器类似于一个轻量级沙箱, Docker 利用容器来运行和隔离上层应用。容器与镜像的关系类似于面向对象编程中的对象与类。从镜像中创建的应用,在容器中运行实例,从而保证实例之间不会相互影响。容器可以启动 、 开始 、 停止 、 删除,并且这些容器都是彼此相互隔离 、 互不可见的。

    (3) 仓库

    Docker 仓库类似于代码仓库,是集中存放 Docker 镜像文件的地方。根据所存储的镜像是否公开,我们可以把仓库分为公开仓库 ( Public ) 和私有仓库 ( Private ) 两种形式。

    容器的生命周期

    1、create:初建状态

    2、running:运行状态

    3、stopped:停止状态

    4、paused:暂停状态

    5、deleted:删除状态

    image-20201117090112591

    (1)创建并启动容器

    <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n31" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">docker create -it --name=nginx nginx</pre>

    • docker attach

    • docker exec

      删除容器

      docker rm [OPTIONS] CONTAINER [CONTAINER...]

      删除已经停止的容器

      <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n100" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">docker rm nginx</pre>

      <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n106" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">docker rm -f nginx</pre>

      <pre spellcheck="false" class="md-fences md-end-block ty-contain-cm modeLoaded" lang="" cid="n118" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: var(--monospace); font-size: 0.9em; display: block; break-inside: avoid; text-align: left; white-space: normal; background-image: inherit; background-size: inherit; background-attachment: inherit; background-origin: inherit; background-clip: inherit; background-color: rgb(248, 248, 248); position: relative !important; border: 1px solid rgb(231, 234, 237); border-top-left-radius: 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px; padding: 8px 4px 6px; margin-bottom: 15px; margin-top: 15px; width: inherit; background-position: inherit inherit; background-repeat: inherit inherit;">docker export nginx > nginx.tar</pre>

      image-20201117082806114

      启动容器并查看创建的a.txt文件

      image-20201117082718084

      使用docker images 可以查看导入的镜像

      • 容器导入

        可以使用docker import命令文件将会变成本地镜像,最后通过docker run就可以启动该镜像。

        image-20201117082520904

      此时我们可以看到在当前目录生成了nginx.tar文件,此时就可以完成容器的迁移。

      image-20201117082155363 image-20201117081929127

      我们可以使用docker export CONTAINER导出一个容器到文件(正在运行的容器也可以导出)。我们进入容器,并创建a.txt文件。

      • 容器导出

      容器导入导出

      删除正在运行的容器

    可以使用docker attachdocker execnsenter等命令进入容器。

    进入容器

    image-20201117080941192

    同时你也可以通过docker restart将一个正在运行的容器重新启动

    image-20201117080749199

    此时容器又处于运行状态

    image-20201117080729604

    终止的容器可以通过docker start命令重新启动

    image-20201117080617248

    此时查看容器的状态是停止状态

    image-20201117080544670

    如果我们想停止正在运行的容器,可以使用docker stop,格式:docker stop [-t|--time[10]]

    终止容器

    2、使用docker run命令基于镜像创建一个新的容器,docker run = docker create + docker start

    1、使用docker start命令基于已经创建好的容器直接启动。

    容器的启动的两种方式:

    image-20201117080037877

    使用docker start启动容器

    image-20201117075851837

    使用docker create命令创建的容器处于停止状态

    image-20201117075641019

    相关文章

      网友评论

          本文标题:2020-11-17

          本文链接:https://www.haomeiwen.com/subject/dtifiktx.html