镜像提供容器运行时所需要的程序,资源、配置文件等,是一个特殊的文件系统。是容器运行的基础。镜像是多层文件系统组成的,是一个分层存储的架构,在镜像的构建中,会一层层的构建,每一层构建完成就不会发生改变,后一层的改变只会在自己这一层发生改变。删除前一层的文件操作,实际上不会删除前一层的文件,而是仅仅在该层将文件标记为删除,实际上还存储在前一层。因此在镜像的构建过程中,只尽量的添加该层需要的文件,任何和该层无关的文件要清理。
 
镜像使用命令:
(1)镜像拉取
docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]
docker镜像仓库地址,地址格式<域名/IP>:端口号,默认地址是 Docker Hub
仓库名称:<用户名>/<软件名> ,对于docker hub,没给出用户名。默认是library,即官方镜像
docker pull ubuntu:16.04

(2)运行镜像

运行镜像,是以一个镜像为基础启动一个容器。

docker run  [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签]

docker run -it --rm ubuntu:16.04
-i 交互式操作
-t 伪终端
-rm 容器退出时立即删除,默认是不删除
 
(3)列出镜像
docker image ls

  虚悬镜像:是一种特殊的镜像,没有仓库名,没有标签,均为<none> ,这种镜像是因为镜像维护,新旧镜像同名的话,旧镜像名会被取消,这类无标签的镜像就是虚悬镜像(dangling image)。

列出虚悬镜像命令:docker image ls -f dangling=true

这种镜像是没有意义的,可以随意删除。删除命令:docker image prune

  中间层镜像:为了加速镜像构建、 重复利用资源, Docker 会利用 中间层镜像。 所以在使用一段时间后,可能会看到一些依赖的中间层镜像。默认docker image ls 列表中只会显示顶层镜像, 如果希望显示包括中间层镜像在内的所有镜像的话, 需要加 -a 参数。

命令 : docker image ls -a

(4)删除本地镜像
docker image rm [选项] [镜像ID/镜像名称/镜像摘要]
docker image rm nginx:v2
docker 镜像的删除有 untagged 和 delete 行为
首先是会按照要求取消镜像的tag,但是如果一个镜像有多个标签tag,如果只是删除了指定的标签,镜像还有其他标签,那么不会发生删除delete行为,只是取消了标签。当镜像所有的标签都取消了,才会触发删除行为。因为镜像是多层存储结构,再删除的时候,会从最上层向底层依次进行判断删除,当其他镜像依赖于该镜像的某一层,依旧不会触发删除行为。所以可能会看到删除的层数和docker pull时的层数不一样。
 
容器的运行时建立在镜像基础之上的,如果某个镜像的容器还存在,即使没有运行,该镜像也不能删除。
删除一个还有容器的镜像会报类似这样的错:Error response from daemon: conflict: unable to remove repository reference "nginx:v2" (must force) - container aa59eab5cc29 is using its referenced image 97d1bffd8e7f
 
 

<Docker学习>3. docker镜像命令使用的更多相关文章

  1. Docker学习之Docker镜像基本使用

    Docker学习之Docker镜像基本使用 获取镜像 命令格式:docker pull [选项] [Docker Registry 地址[:端口号]/]仓库名[:标签] 例如: docker pull ...

  2. Docker学习总结之Run命令介绍

    Docker学习总结之Run命令介绍 本文由Vikings(http://www.cnblogs.com/vikings-blog/) 原创,转载请标明.谢谢! 在使用Docker时,执行最多的命令某 ...

  3. Docker学习笔记 — Docker私有仓库搭建

    Docker学习笔记 — Docker私有仓库搭建   目录(?)[-] 环境准备 搭建私有仓库 测试 管理仓库中的镜像 查询 删除 Registry V2   和Mavan的管理一样,Dockers ...

  4. Docker学习之Docker容器基本使用

    Docker学习之Docker容器基本使用 新建容器并启动 命令格式:docker run --options repository:tag 后台运行 命令格式:-d 已存在的容器相关操作 启动:do ...

  5. docker学习笔记2--对镜像/容器的命令操作

    Docker启动一个Centos镜像 我们下载完成一个Centos镜像之后,开始启动 docker run -d -i -t <imageID> /bin/bash 这样就能启动一个一直停 ...

  6. docker学习笔记-常用镜像相关命令

    docker images # 1.使用 [root@iZbp13qr3mm4ucsjumrlgqZ ~]# docker images REPOSITORY TAG IMAGE ID CREATED ...

  7. Docker 最常用的镜像命令和容器命令

    本文列出了 Docker 使用过程中最常用的镜像命令和容器命令,以及教大家如何操作容器数据卷,实现容器数据的备份.熟练练习这些命令以后,再来一些简单的应用部署练习,大家就可以学习 Docker 的镜像 ...

  8. docker学习之二镜像创建

    继上一篇docker入门之后写一点使用的经验. 通过命令:docker run -it REPOSITORY或IMAGE ID   注:-it后面跟的字段可以通过下面指令获得 创建运行的容器,会进入一 ...

  9. Docker学习笔记之镜像与容器

    0x00 概述 镜像和容器作为 Docker 里最基础的概念,我们很有必要了解 Docker 对它们的很多定义以及其他与它们有关的知识.在这一小节里,我们就专门针对镜像与容器两个概念展开,细致的梳理与 ...

随机推荐

  1. CSS知识点梳理

  2. vue打包后CSS中引用的背景图片不显示问题

    vue项目中,在css样式中引用了一张背景图片,开发环境下是可以正常显示,build之后背景图片不显示. 解决方法: 找到build/utils.js文件 修改成为如下所示内容:  添加红框中的内容即 ...

  3. ARM平台指令虚拟化初探

    0x00:什么是代码虚拟化? 虚拟机保护是这几年比较流行的软件保护技术.这个词源于俄罗斯的著名软件保护软件“VmProtect”,以此为开端引起了软件保护壳领域的革命,各大软件保护壳都将虚拟机保护这一 ...

  4. ios两个app之间跳转,传值的实现

    两个APP之间的跳转是通过[[UIApplication sharedApplication] openURL:url]这种方式来实现的. 1.首先设置第一个APP的url地址 2.接着设置第二个AP ...

  5. pure-ftp 修改用户信息

    1.修改用户test的密码 [root@localhost bin]# ./pure-pw passwd test #修改密码 Password: Enter it again: [root@loca ...

  6. c++基础(积少成多)

    1.#include<string> #include<iostream> 这是引用头文件: 2.Using namespace std; 这是引用命名空间,防止同一个命名空间 ...

  7. java compiler没有1.8怎么办

    选择第一个点击安装,安装完成后,重启eclipse,打开java compiler 就可以选择1.8了. 成功:  扫个红包吧! Donate捐赠 如果我的文章帮助了你,可以赞赏我 1 元,让我继续写 ...

  8. java集合框架——Set

    一.Set概述 Set集合的特点是元素不允许重复,而且是无序的(添加和取出的顺序不一致). Set接口中的方法和Collection接口中的方法几乎相同,略. Set接口下常用的两个类:HashSet ...

  9. Jenkins添加项目说明,增加项目描述

    背景:往往正常Jenkins上呈现的内容,太过简短,不易直观看了解项目是干嘛的,如下面的内容: 解决方案,使用插件,Extra Columns Plugin 安装成功后配置,需要结合自定义视图使用,新 ...

  10. UESTC 757 棋盘

    虽然是水题,但是还是很interesting的.(大概就是我最晚出这个题了... 博弈感觉就是靠yy能力啊.这题是对称性. 最后的必败态是白色格子对称的,一旦对称形成,对手怎么选,跟随就好,对手无法摆 ...