Docker介绍(二)镜像与容器

一、Docker核心技术之镜像

镜像其实是Docker的可执行文件,包括运行应用程序所需的所有代码内容、依赖库、环境变量和配置文件等。通过镜像可以创建一个或多个容器。

在这里插入图片描述

1.镜像管理的命令

  • 镜像搜索 - docker search
    • 命令格式:docker search [OPTIONS] TERM
    • 命令参数(OPTIONS):
      -f, --filter filter 根据提供的格式筛选结果
      –format string 利用Go语言的format格式化输出结果
      –limit int 展示最大的结果数,默认25个
      –no-trunc 内容全部显示
  • 镜像查看 - docker images/docker image ls
    • 命令格式:
      docker images [OPTIONS] [REPOSITORY[:TAG]] 或者 docker image ls [OPTIONS] [REPOSITORY[:TAG]]
    • 命令参数(OPTIONS):
      -a, --all 展示所有镜像 (默认隐藏底层的镜像)
      –no-trunc 不缩略显示
      -q, --quiet 只显示镜像ID
  • 镜像下载 - docker pull
    • 命令格式:docker pull [OPTIONS] NAME[:TAG|@DIGEST]
    • 命令参数(OPTIONS): -a, --all-tags 下载所有符合给定tag的镜像
  • 镜像删除 - docker rmi/docker image rm
    • 命令格式:docker rmi [OPTIONS] IMAGE [IMAGE…] 或者 docker image rm [OPTIONS] IMAGE [IMAGE…]
    • 命令参数(OPTIONS): -f, --force 强制删除
  • 镜像保存备份 – docker save
    • 命令格式:docker save [OPTIONS] IMAGE [IMAGE…]
    • 命令参数(OPTIONS): -o, --output string 指定写入的文件名和路径
  • 镜像备份导入 - docker load
    • 命令格式:docker load [OPTIONS]
    • 命令参数(OPTIONS):
      -i, --input string 指定要打入的文件,如没有指定,默认是STDIN
      -q, --quiet 不打印导入过程信息
  • 镜像重命名 – docker tag
    • 命令格式:docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
    • 命令参数(OPTIONS): 无
  • 镜像详细信息 – docker image inspect/docker inspect
    • 命令格式:docker image inspect [OPTIONS] IMAGE [IMAGE…] 或者 docker inspect [OPTIONS] IMAGE [IMAGE…]
    • 命令参数(OPTIONS): -f, --format string 利用特定Go语言的format格式输出结果
  • 镜像历史信息 – docker history
    • 命令格式:docker history [OPTIONS] IMAGE
    • 命令参数(OPTIONS):
      -H, --human 将创建时间、大小进行优化打印(默认为true)
      -q, --quiet 只显示镜像ID
      –no-trunc 不缩略显示

二、Docker核心技术之容器

1. 容器简介

  • 容器是一种轻量级、可移植、并将应用程序进行的打包的技术,使应用程序可以在几乎任何地方以相同的方式运行;
  • Docker将镜像文件运行起来后,产生的对象就是容器。容器相当于是镜像运行起来的一个实例
  • 容器具备一定的生命周期
  • 另外,可以借助docker ps命令查看运行的容器,如同在linux上利用ps命令查看运行着的进程那样。
  • 在这里插入图片描述

2.容器与虚拟机

  • 相同点:
    • 容器和虚拟机一样,都会对物理硬件资源进行共享使用。
    • 容器和虚拟机的生命周期比较相似(创建、运行、暂停、关闭等等。
      在这里插入图片描述 在这里插入图片描述
    • 容器中或虚拟机中都可以安装各种应用,如redis、mysql、nginx等。也就是说,在容器中的操作,如同在一个虚拟机(操作系统)中操作一样。
    • 同虚拟机一样,容器创建后,会存储在宿主机上:linux上位于/var/lib/docker/containers下
  • 不同点:
    • 虚拟机的创建、启动和关闭都是基于一个完整的操作系统。一个虚拟机就是一个完整的操作系统。而容器直接运行在宿主机的内核上,其本质上以一系列进程的结合
    • 容器是轻量级的,虚拟机是重量级的。首先容器不需要额外的资源来管理(不需要Hypervisor、Guest OS),虚拟机额外更多的性能消耗;其次创建、启动或关闭容器,如同创建、启动或者关闭进程那么轻松,而创建、启动、关闭一个操作系统就没那么方便了。因此,意味着在给定的硬件上能运行更多数量的容器,甚至可以直接把Docker运行在虚拟机上。
      在这里插入图片描述 在这里插入图片描述

3.命令

  • 容器创建 – docker create
    • 命令格式:docker create [OPTIONS] IMAGE [COMMAND] [ARG…]
    • 命令参数(OPTIONS):
      -t, --tty 分配一个伪TTY,也就是分配虚拟终端
      -i, --interactive 即使没有连接,也要保持STDIN打开
      –name 为容器起名,如果没有指定将会随机产生一个名称
    • 命令参数(COMMAND\ARG):
      COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令
      ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等
  • 容器启动 – docker start
    • 命令格式:docker start [OPTIONS] CONTAINER [CONTAINER…]
    • 命令参数(OPTIONS):
      -a, --attach 将当前shell的 STDOUT/STDERR 连接到容器上
      -i, --interactive 将当前shell的 STDIN连接到容器上
  • 容器创建并启动 – docker run
    • 命令格式:docker run [OPTIONS] IMAGE [COMMAND] [ARG…]
    • 命令参数(OPTIONS):查看更多
      -t, --tty 分配一个伪TTY,也就是分配虚拟终端
      -i, --interactive 即使没有连接,也要保持STDIN打开
      –name 为容器起名,如果没有指定将会随机产生一个名称
      -d, --detach 在后台运行容器并打印出容器ID
      –rm 当容器退出运行后,自动删除容器
    • 命令参数(COMMAND\ARG):
      COMMAND 表示容器启动后,需要在容器中执行的命令,如ps、ls 等命令
      ARG 表示执行 COMMAND 时需要提供的一些参数,如ps 命令的 aux、ls命令的-a等等

docker run 相当于 docker create + docker start –a 前台模式
docker run -d 相当于 docker create + docker start 后台模式

  • 容器暂停 – docker pause
    • 命令格式:docker pause CONTAINER [CONTAINER…]
    • 命令参数(OPTIONS):无
  • 容器取消暂停 – docker unpause
  • 容器关闭 – docker stop
  • 容器终止 – docker kill
docker stop和docker kill的区别

docker stop 会先发出SIGTERM信号给进程,告诉进程即将会被关闭。在-t指定的等待时间过了之后,将会立即发出SIGKILL信号,直接关闭容器。
docker kill 直接发出SIGKILL信号关闭容器。但也可以通过-s参数修改发出的信号。
因此会发现在docker stop的等过过程中,如果终止docker stop的执行,容器最终没有被关闭。而docker kill几乎是立刻发生,无法撤销。此外还有些异常原因也会导致容器被关闭,比如docker daemon重启、容器内部进程运行发生错误等等“异常原因”。

补充>>>>Linux两种终止进程的信号:SIGTERM和SIGKILL

SIGKILL信号:无条件终止进程信号。进程接收到该信号会立即终止,不进行清理和暂存工作。该信号不能被忽略、处理和阻塞,它向系统管理员提供了可以杀死任何进程的方法。
SIGTERM信号:程序终结信号,可以由kill命令产生。与SIGKILL不同的是,SIGTERM信号可以被阻塞和终止,以便程序在退出前可以保存工作或清理临时文件等。

  • 容器重启 – docker restart
  • 容器删除 – docker container rm
  • 容器详细信息 – docker container inspect
  • 容器日志信息 – docker logs
  • 容器重命名 – docker rename
  • 容器连接 – docker attach
  • 容器中执行新命令 – docker exec

三、容器与镜像的关系

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值