之前几篇文章把 Docker 的入门说了一下,大部分常用命令也都做了解释,应对普通实用基本是够了,Docker 是属于那种入门简单,深入较难的,想熟练掌握的话需要多多实践。

本文主要来说一下一些看起来相似的命令有什么区别。


kill 与 stop

两个命令都是停止容器,不同之处在于:

docker stop: 先发 SIGTERM 信号给容器,允许其在一定时间(默认 10s)内进行一些操作,若这段时间内容器未停止,则发送 SIGKILL 信号强行杀掉容器;

docker kill: 直接发送 SIGKILL 信号杀掉容器。

这两个命令在实际使用时,通俗说法就是 stop 类似按关机键关机,kill 则相当于直接拔电源。


save,export 与 commit

这三个命令都是打包,不过各自有一些区别:

docker save:打包一个或多个镜像,命令格式为 docker save -o 文件名.tar 镜像名称 ,如果是多个镜像,则用空格隔开即可。

虽然理论上这条指令是用来打包镜像的,但指定对象为容器也可以,会自动打包容器背后对应的镜像。

打包后再载入的命令为 docker load -i 镜像名.tar,如果本地已经存在名称相同的镜像,则会被覆盖。

save 命令主要用途比较有限,就是镜像的单纯打包,比如一个应用是使用 docker-compose.yml 编排的多个镜像组合,然后要迁移到另一台无法联网的宿主机上,那么就可以使用此命令导出镜像,再导入到宿主机上。

save 命令打包的镜像会保留历史记录。


docker export:用于将容器打包成基础镜像,主要作用就是制作基础镜像,比如拉取了一个空白系统镜像,创建容器后安装了一堆自己需要的环境,就可以使用 export 命令打包成自己的基础镜像,作为后续使用。

export 打包的镜像,使用 import 命令进行导入,导入时可以指定新的镜像名称,本地如有相同名称的镜像,则原有镜像的名称会被拿掉,赋予给新导入的镜像,原镜像变成只能通过镜像 ID 进行管理。

export 导出的镜像不会保留历史记录。


docker commit:commit 是一个综合性的容器打包命令,基本作用和 export 类似,也是将修改后的容器打包成镜像,而且打包时可以对镜像添加作者/版本号/仓库名等描述内容。

commit 命令主要常用于将打包好的镜像推送到仓库,以及对仓库里镜像推送版本更新。


rm 与 rmi

这个其实很容易理解,rm 是 linux 下删除指令,直接使用的话就是删除对应容器。

rmi 的话,其实就是 rm image 的意思,代表删除对应镜像。


copy 和 add

两个命令的作用都是从宿主机复制文件到容器里,不同之处在于 copy 命令就是单纯复制文件,add 命令可以实现自动解压等功能。

关于这俩命令,之前也写过文章介绍:如何管理 Docker 容器里的文件

docker export_Docker 几个相似命令的区别相关推荐

  1. Docker的save和export命令的区别

    [摘要] 我最近在玩Docker,一种应用程序容器和Linux的虚拟技术.它太酷了,创建Docker镜像和容器只需要几分钟.所有的工作都是开箱即用的. 在结束我一天的工作之前,我希望能保存下我的工作. ...

  2. docker镜像、容器以及命令操作

    docker image docker image是一个极度精简版的Linux程序运行环境,官网的java镜像包括的东西更少,除非是镜像叠加方式的如centos+java7 docker image是 ...

  3. 从Docker在Linux和Windows下的区别简单理解Docker的层次结构

    上篇文章我们成功在Windows下安装了Docker,输出了一个简单的Hello World程序.本文中我们将利用Docker已有的云端镜像training/webapp来发布一个简单Python的W ...

  4. docker实践(2)常用命令和DockerFile详解

    <docker实践(1) 入门和springBoot实践部署> <docker实践(2)常用命令和DockerFile详解> <docker实践(3) 仓库registr ...

  5. Docker 安装和使用日常命令全覆盖

    Docker安装和使用 一. Centos7安装docker 1.1 Docker 要求 CentOS 系统的内核版本高于 3.10 uname –r 1.2 使用 root 权限登录 Centos一 ...

  6. Docker基本管理:上篇(Docker理论概述和基础命令)

    文章目录 Docker 的优点 一.Docker 架构 1.1:容器与虚拟机的区别 二.docker安装: 2.1:镜像基础命令操作 三.Docker基础操作 Docker 是一个开源的应用容器引擎, ...

  7. docker 的最基础知识命令,可以当作笔记来看,学习还是要看相关的课程视频,自此整理了一套docker基础的文档笔记希望对你有用

    https://www.docker.com: docker官网 https://docs.docker.com: docker文档学习 https://hub.docker.com: docker仓 ...

  8. docker 删除容器_Docker使用命令和技巧

    既然已经搭建好了Docker关于基础的命令以及使用方式我们当然要进行学习,还有一些小技巧比如批量操作镜像加速和怎么寻找合适的Docker-Images都是本节的内容 附上: 喵了个咪的博客:w-blo ...

  9. Linux下su与su -命令的区别

    Linux下su与su -命令的区别 在启动服务器ntpd服务时遇到一个问题 使用 su root 切换到root用户后,不可以使用service命令: 使用 su - 后,就可以使用service命 ...

最新文章

  1. 微生物组入门必读+宏基因组实操课程=新老司机赶快上车
  2. pandas.DataFrame()的基本操作
  3. Java开发领域的大牛有哪些
  4. POJ 3111 K Best 贪心 二分
  5. Rust: 用于量化研究的尝试探讨
  6. selenium 使用带密码的socks5代理方法
  7. C++异常处理throw
  8. 01.JavaSwing(概述)
  9. java中的面向对象(基础)
  10. 精读FREE: Feature Refinement for Generalized Zero-Shot Learning
  11. 25 scala 进阶
  12. 老年机打不出电话拨号失败服务器无响应,老年机为什么打不出去电话
  13. 游戏角色是怎么动起来的?3D游戏动画系统介绍
  14. 剑指offer题目记录
  15. 从事计算机科学的要求,申请康奈尔大学计算机科学专业有什么要求?
  16. 啊哈添柴挑战Java1222. 输出菱形
  17. Linux网络配置和常用命令
  18. yii2.0.37反序列化漏洞审计
  19. nginx配置区分移动端和PC端,访问不同域名
  20. mysql中修改密码及反问限制设置详解

热门文章

  1. java周志第二周_第二周JAVA学习日志
  2. elementui Cascader 省市区联动选择器,应用与回显
  3. java猜数字代码,我写的猜数字游戏的java代码!
  4. hysys动态模拟教程_Steam特别好评!新游《模拟消防英豪》现已上市
  5. 关于autotrace和explain plan是否可以反映真实的执行计划
  6. 廖雪峰--python教程:笔记四-函数式编程
  7. 设计模式8(享元模式,解释器模式)
  8. 开发中常遇到的linux系统配置操作整理
  9. 分享一些自己的学习过程和学习方法
  10. 转: CentOS 安装 SVN1.8 客户端