Docker(二) -- 容器Container

一:简要概述

上一节Docker镜像中详细讲解了相关Docker安装以及Docker基础镜像的知识,但是Docker的核心还是容器。它是Docker封装管理应用程序的集装箱,可以理解为一个箱子。本节的要点就是介绍有关容器Create、Start、Run、Pause、Delete、Stop、Exec等知识

二:容器状态

在这里插入图片描述
本图片复制于有明大佬掘金Docker小册,感兴趣的朋友推荐购买这个小册,理论知识还是比较丰富

可以看到图中标注的几个容器状态,这张图片绘制的详细让我比较推崇,不仅仅绘制出状态变化路径,并且给出了详细的Docker指令,状态释义如下:

  • Createdocker pull拉取镜像之后通过docker create [name] / [ID] 可以制作对应容器,此时控制台会输出一个32位的ID,这和镜像ID意义一致,唯一标识
  • Running:通过docker create制作好的容器执行docker start [name] / [ID]即可运行容器,这时容器内部应用会启动,容器状态变更为Running
  • Stop:Linux中停止进程你会Kill进程,Docker中提供了docker stop指令用于停止容器,自然容器内应用随之而停,状态变更为Stop
  • Delete:虽然Doker的容器占用内存不多,但是当长期不使用镜像存在列表也难管理。通过命令dcoker rm [name] / [ID]
  • Pause:只想停止容器内应用而不停止容器怎么办?Docker提供指令docker pause [name] / [ID]

三:命令详解

前面一小节通过介绍Docker容器几个状态的变更提及些许Docker容器较为重要的指令,但是某些细节地方还是不够完善,且遗漏了某些常用命令。本节重点就是查漏补缺,并详细阐述前面涉及到的指令

3.1 容器创建

镜像 – 容器才算是Docker使用迈出坚实的一步,Docker的容器通过镜像制作而成,形成一个封闭运行环境。命令格式如下:分配的32位唯一ID与镜像ID意义一致

docker create [镜像名称]  / [镜像ID]

在这里插入图片描述

3.2 容器查看

拉取的镜像可以通过docker images查看,制作好的容器怎么查看?难道就一直使用控制台输出的32ID?显然不可能,Docker提供以下格式命令管理查看容器:

// 注意这个命令只能查看正在运行的容器
// 查看所有容器命令后添加参数 -a 或者是 --all
docker ps

在这里插入图片描述

  • CONTAINER ID:容器唯一标识ID
  • IMAGE:创建容器依赖的镜像
  • COMMAND:后续详解,启动容器的命令
  • CREATED:从创建到目前查询时长
  • STATUS:容器状态,Running状态容器会提示开始运行到目前查询时长
  • PORTS:占用端口
  • NAMES:容器名称
3.3 容器命名

镜像的操作可以根据ID亦或是名称进行,容器的操作亦是如此。前面已经很多次提到了容器的名称,但是我们发现docker create创建出来的容器实例并没有名称,这时候就需要进行指定,通过参数–name,示例如下:

// 创建容器命名
docker create --name redis-zsl redis:latest

在这里插入图片描述

3.4 容器启动

通过docker create制作好容器实例后容器处于Create状态,并没有正常运行。此时可以通过命令docker start [name] / [ID] 启动容器,是的容器及容器内应用启动运行:

// 启动容器
docker start redis-zsl

在这里插入图片描述
可能很多人就要说,容器的启动好麻烦,create + start才能实现。别着急,给你一个等式,run = create + start

// 根据镜像创建、启动容器
// -d 代表后台运行
docker run --name redis-run -d redis:latest

在这里插入图片描述
比较牛逼的是如果本地没有这个镜像,那么此时Docker会去镜像仓库下载该镜像并进行容器制作与启动
在这里插入图片描述

3.5 容器删除

容器不使用总不能一直占用资源吧,况且也会造成不好管理的问题。所以容器的删除实现提供命令docker rm,这里强调的是运行状态(Running)的容器不能被删除,所以需要先stop容器然后再删除,当然也可以使用 -f 参数强制删除,不过不推荐使用
在这里插入图片描述

3.6 容器导出 / 加载

上一篇文章镜像中提到了将镜像打包成tar包保存到本地后,迁移到其它Docker环境加载。将修改的容器commit成镜像,再通过镜像打包传递对于我而言是麻烦事儿。这里将一步到位,直接迁移打包修改的容器。需要注意一点,导出的容器在导入后是一个镜像,不是直接导入成为容器

// 保存导出容器
docker export -o 容器导出保存路径 导出容器名称

// 导入容器
docker import [-m '修改信息'] [-c 修改dockerfile命令] 导出容器存储名称 [导入容器后镜像名称] 
3.7 保存修改

Docker容器可能在后续中进行了一些配置修改,为了保存容器这些修改为镜像,方便后续所有节点使用。Docker提供命令docker commit,就像代码提交一样将会生成一个新的镜像

// 保存容器
docker commit [-m '提交镜像保存信息'] 需要保存的容器 保存后镜像名称

四:深入容器

容器运行过程中深入容器内部探究可以帮助我们更精准的定位某些问题,Docker封装了命令docker exec创建虚拟客户端对容器内环境进行操作

// docker exec 进入容器基本命令
// -i 保持输入流 -t 创建伪终端
// sh/bash 两种客户端,推荐bash功能更多
docker exec -it redis-exec bash

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章