0
点赞
收藏
分享

微信扫一扫

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作


🏡  博客首页:派 大 星


🎢  本文由派大星原创编撰

🚧  系列专栏:Docker—云原生

🎈  本系列记录容器化技术的初次探险与深入思考历程,如有描述有误的地方还望诸佬不吝赐教

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_容器

详解Docker如何启动、终止、导入导出容器等操作

  • ​​前言:什么是容器​​
  • ​​启动容器​​
  • ​​①新建并启动​​
  • ​​②启动已终止容器​​
  • ​​守护态运行​​
  • ​​终止容器​​
  • ​​导出和导入容器​​
  • ​​①导出容器​​
  • ​​②导入容器快照​​
  • ​​删除容器​​

前言:什么是容器

​       容器​​(Container)​​​作为​​Docker​​​的核心组件之一,是独立运行的一个或一组应用,以及它们的运行态环境。对应的,虚拟机可以理解为模拟运行的一整套操作系统(提供了运行态环境和其他系统环境)和跑在上面的应用。其次​​容器和镜像之间的关系​​,类似于面向编程中对象与类之间的关系`,因为容器是通过镜像来创建的,所以必须先有镜像才能创建容器,而生成的容器时一个独立于宿主机的隔离进程,并且有属于容器自己的网络和命名空间。

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_云原生_03

启动容器

启动容器有两种方式:

  • 基于镜像新建一个容器并启动
  • 将在终止状态​​(stopped)​​的容器重新启动

由于Docker 的容器实在太轻量级了,很多时候在实际操作时都是随时删除和新创建容器

①新建并启动

首先在启动一个容器时使用到的命令为​​docker run​

在操作之前先通过一个简单地实例进行演示:使用命令输出一个​​Hello World​​,之后终止容器

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_centos_04


但是这和在本地直接执行​​/bin/echo 'Hello World'​​有什么实际上的区别呢?

那么再使用命令启动一个​​bash​​终端从而允许用户进行交互

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_容器_05

在实际操作之前先来了解一下命令中的指令的含义:

  • ​-t​​:让Docker分配一个伪终端并绑定到容器的标准输入上
  • ​-i​​:让容器的标准输入保持打开

在交互模式下,用户可以通过所创建的伪终端来输入命令从而使用

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_容器_06

当使用​​docker run​​来创建容器时,Docker在后台运行的标准操作包括:

  • 检查本地是否存在指定的镜像,不存在就从公有仓库下载
  • 利用镜像创建并启动一个容器
  • 分配一个文件系统,并在只读的镜像层外面挂载一层可读写层
  • 从宿主主机配置的网桥接口中桥接一个虚拟接口到容器中去
  • 从地址池配置一个​​ip​​地址给容器
  • 执行用户指定的应用程序
  • 执行完毕后容器被终止

②启动已终止容器

启动已终止的容器可以使用​​docker start​​命令将一个已经终止的容器启动运行

容器的核心为所执行的应用程序,所需要的资源都是应用程序运行所必须的,并且可以在启动的伪终端中利用​​ps​​​或者​​top​​来查看进程信息

ps

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_centos_07

top:

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_容器_08

从上述可见,容器中仅运行了指定的​​bash​​​应用,这种特点使得​​Docker​​对资源的利用率极高

守护态运行

其实在更多的时候,需要让​​Docker​​​容器在后台以守护态​​(Daemonized)​​​形式运行,可以通过​​-d​​参数来实现

例如执行下面的命令可以使容器在后台运行

[root@VM-4-14-centos /]# docker run -d ubuntu:12.04 /bin/sh -c "while true; do echo hello world; sleep 1; done"

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_容器_09


在容器启动后会返回一个唯一的​​id​​​,也可以通过​​docker ps​​命令来查看容器信息

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_centos_10


如果想要获取容器更多的输出信息,可以使用​​docker logs​​命令来输出日志

[root@VM-4-14-centos /]# docker logs [容器ID]
hello world
hello world
hello world
hello world
...

终止容器

终止一个正在运行的容器可以使用​​docker stop​​命令来实现

除此之外,当​​Docker​​容器中指定的应用终结时,容器也自动终止

终止状态的容器可以使用​​docker ps -a​​命令查看,如下:

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_云原生_11

并且处理终止状态的容器,可以通过​​docker start​​​命令来重新启动,或者可以使用​​docker restart​​命令会将一个正在运行的容器终止,然后再重启该容器。

导出和导入容器

①导出容器

如果想要导出本地某个容器时,可以使用​​docker export​​命令

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_原力计划_12

通过以上的操作可以导出快照到本地文件

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_云原生_13

②导入容器快照

在导入本地容器快照可以使用​​docker import​​从容器快照文件中再导入为镜像

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_原力计划_14

注意📢:用户可以使用​​docker load​​​来导入镜像存储文件到本地镜像库,也可以使用​​docker import​​来导入一个容器快照到本地镜像库,这两者的区别在于容器快照文件将丢弃所有的历史记录和元数据信息(即仅保存容器当前的快照状态),而镜像存储文件将保存完整的记录,体积也要大。

删除容器

可以使用​​docker rm ​​来删除一个处于终止状态的容器

[root@VM-4-14-centos /]# docker rm [容器ID]
[容器ID]

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_docker_15

【云原生&Docker基础篇第3篇】详解Docker如何启动、终止、导入导出容器等操作_云原生_17


举报

相关推荐

0 条评论