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 attach、docker exec、nsenter等命令进入容器。
进入容器
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
网友评论