操作环境:mac OS 10.14.6

docker版本:10.03.1

终端:iterm2 3.3

时间:2019年8月

docker 镜像,是运行容器的模板,通过pull操作会向指定仓库获取镜像,默认仓库为Docker hub

一、镜像常用操作

  • pull
  • run
  • images
  • search
  • rmi

1、获取镜像[默认仓库:docker hub]

命令:

$ docker pull <image_name>[:tag]

# 获取ubuntu:latest
# 在获取镜像时, 若没有指定镜像标签,docker会自动获取标签为`latest`的镜像
$ docker pull ubuntu

镜像文件一般由很多层组成,不同镜像可以复用相同层,每层都拥有一个唯一ID,由64位十六进制字符串进行区分。

2、运行镜像

命令:

$ docker run <image_name>[:tag]

# 运行ubuntu, 同样没有指定标签,自动使用`latest`
$ docker run -it ubuntu bash # 运行镜像后,进入docker的shell
root@7e5c1db9714f:/# cat /etc/issue # 查看系统版本

3、显示镜像

命令:

$ docker  images

标签说明:

REPOSITORY:镜像名称

TAG: 镜像标签

IMAGE ID: 镜像唯一ID

CREATED: 镜像最后更新时间

SIZE: 镜像大小 -> 所有的镜像大小相加并不是占用磁盘大小,占用空间会更小

4、添加镜像名称和标签

$ docker tag <源名称>[:<源标签>] <新名称>[:<新标签>]

$ docker tag nginx:latest porxy:v1.0

::说明:: 源标签 && 新标签如果为latest可以省略

tag命令有点类似创建了一个连接,新创建一个名字和标签,指向一个旧的镜像,

5、镜像历史

$ docker history <镜像名> [:<镜像标签>]

$ docker history  proxy:v1.0

history命令可以查看创建每一层使用的命令, 对于比较长的命令,会自动被截断, 可以通过添加参数--no-trunc显示完整命令

docker history --no-trunc <镜像名>[:<镜像标签>]

6、搜索镜像[默认仓库:Docker hub]

$ docker search <关键字>

7、删除镜像

1)、没有运行镜像的情况

# 使用标签删除,如果对应的镜像只有这唯一的标签,将会删除这个镜像,否则只是解除标签链接
$ docker rmi <镜像名>[:<标签>] # 使用镜像ID删除镜像,如果删除的镜像对应多个标签,docker将不允许删除
$ docker rmi <镜像ID> $ docker rmi proxy:v1.0 # 使用标签删除
$ docker rmi e445 # 使用镜像ID删除, 镜像ID只需要输入前3位或以上
$ docker rmi nginx # 删除单个标签对应镜像, 分为两步,第一步解除标签链接, 第二步删除镜像



2)、运行镜像之后进行删除

运行镜像后如果我们尝试删除, 将出现Error信息:提示镜像对应的容器正在运行,无法删除

可以加参数-f 进行强制删除,也可以先停止容器,删除容器后再进行镜像删除

#常规操作
$ docker ps -a # 查看所有的容器
$ docker stop <容器id> # 对于运行中的容器需要先停止
$ docker rm <容器id> # 通过容器id删除容器
$ docker rm <镜像名称>[: <标签>] # 删除镜像 # 强制操作
$ docker rmi -f <镜像ID> # 不推荐的操作,可能会出现不可预料的后果

步骤说明

  1. 查看运行中的容器docker ps
  2. 停止运行中的容器docker stop <镜像id>
  3. 查看所有容器docker ps -a
  4. 删除停止的容器docker rm <镜像id>
  5. 删除镜像docker rmi <镜像名>[:<标签>]

::说明:: 容器相关操作将在后续章节继续

创建镜像、生成镜像、导出镜像以及导入镜像将在容器之后继续

二、关于镜像可能还想了解

1、查看镜像占用磁盘空间

docker system df

<none>:<none> 镜像

将镜像名称和标签都为的镜像称为虚悬镜像, 产生原因是, 仓库服务器更新了本地相同名称和标签的镜像,并将镜像重新pull到本地,由于新镜像名和标签与原有镜像名和标签相同,docker自动将原有名称和标签修改为

查看虚悬镜像命令

docker images -f dangling=true

删除所有虚悬镜像命令

docker rmi $(docker images -f “dangling=true” -q)

参考页面:

英文:What are Docker : images? —Project Atomic

2、列出部分镜像

  1. docker image ls ubuntu

    ls后接镜像名称, 会显示出对应名称的所有镜像
  2. docker image ls ubuntu:latest

    ls后边接名称和标签,会显示出对应的镜像

3、过滤器 -f or --filter

docker image ls -f since=mongo:3.2

显示mongo:3.2镜像位置之前的镜像 将since替换成before将显示mongo:3.2位置之后的镜像

4、指定格式显示 -q && --format

1. 只显示container id  可以用于启动或者别的操作
`docker images -q` 2. 指定我们需要的格式进行输出或者命令传递

docker images --format “{{.ID}}: {{.Repository}}”

只显示ID && Repository 需要区分大小写

支持\t 等转义字符

参考:

列出镜像 · Docker —— 从入门到实践

docker笔记(2)——docker镜像操作的更多相关文章

  1. 六、【Docker笔记】Docker数据管理

    前几节我们介绍了Docker的基本使用和三大核心概念,那么我们在使用Docker的过程中,Docker中必然产生了大量的数据,对于这些数据我们需要查看或者对这些数据进行一个备份,也有可能容器之间的数据 ...

  2. 二、【Docker笔记】Docker的核心概念及安装

    Docker主要有三大核心的概念,分别为镜像(Image).容器(Container)及仓库(Repository). 一.核心概念 1.Docker镜像 ​ Docker镜像其实与虚拟机镜像很类似, ...

  3. docker学习笔记3:镜像操作(查找和下载)

    一.查看本地镜像 只有下载后,镜像才会保存在本地(docker环境所在的主机),通过如下命令可以查看本地已经存在的镜像. 命令:dokcer images 上面命令列出本地所有已经存在的镜像,显示的信 ...

  4. docker 笔记(2) base镜像

    base 镜像有两层含义: 不依赖其他镜像,从 scratch 构建. 其他镜像可以之为基础进行扩展. 所以,能称作 base 镜像的通常都是各种 Linux 发行版的 Docker 镜像,比如 Ub ...

  5. 三、【Docker笔记】Docker镜像

    镜像是Docker的三大核心概念之一.Docker在运行容器之前,本地需要存有镜像,若不存在则Docker会首先尝试从默认的镜像仓库中去下载,当然我们也可以去配置自己的仓库,如此就会从我们配置的仓库中 ...

  6. 四、【Docker笔记】Docker容器

    容器是Docker的另一个核心概念,容器就是镜像的一个运行实例,只是它具有一个可写的文件层,而镜像是一个只读的文件. 一.创建容器 1.新建容器 我们可以使用 docker create 命令来创建一 ...

  7. 七、【Docker笔记】Docker中网络基础配置

    一个系统一般都包含多个服务组件,这些大量的服务组件不可能放在同一个容器中,这就需要多个容器之间可以互相通信.Docker提供了两种方式来实现网络服务:映射容器端口到宿主主机.容器互联机制. 一.端口映 ...

  8. Docker学习笔记(2)-docker镜像操作

    本节将会涉及Docker的镜像操作. 1. 获取镜像 如何获取Docker Hub上的镜像?可通过docker pull命令获取,其格式为: docker pull [选项] [Docker Regi ...

  9. Docker笔记--操作容器命令

    Docker笔记--操作容器命令 创建容器 docker [container] create-- 创建容器,使用docker [container] create命令新建的容器处于停止状态,可以使用 ...

随机推荐

  1. 两种atm取款方式

    1.//函数 密码 账号function User(username, password, account){ this.username = username; this.password = pa ...

  2. 解决oracle 32位64位的问题

    工具-选项-项目和解决方案-勾选第一个

  3. SQL SERVER 表添加新字段

    SQL SERVER 表添加新字段 ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL; -- doc_exa 是表名 -- column_b 是新加的 ...

  4. PHP mysqli_num_fields() 函数

    mysqli_num_fields() 函数返回结果集中字段(列)的数量. 语法 mysqli_num_fields(result); 参数 描述 result 必需.规定由 mysqli_query ...

  5. 「BZOJ 4565」「HAOI 2016」字符合并「区间状压DP」

    题意 给一个长度为\(n(\leq 300)\)的\(01\)串,每次可以把\(k(\leq 8)\)个相邻字符合并,得到新字符和一定分数,最大化最后的得分 题解 考虑设计dp:\(dp[S][i][ ...

  6. mac使用php-version切换PHP版本

    在开发过程中,有时候我们的程序对某个php版本有着极为重要的限制,特别是大型项目. 因此,我们就需要切换多个php版本来满足我们的需求. 我们使用php-version来达到这个目的. 首先我们先使用 ...

  7. codeforces708C

    CF708C Centroids 题意翻译 给定一颗树,你有一次将树改造的机会,改造的意思是删去一条边,再加入一条边,保证改造后还是一棵树. 请问有多少点可以通过改造,成为这颗树的中心?(如果以某个点 ...

  8. ImportError: DLL load failed: 找不到指定的模块

    如果遇到错误:ImportError: DLL load failed: 找不到指定的模块出现错误原因:安装包的来源问题,也可以理解为包版本兼容问题,有的包使用官方出版,有的包使用whl文件安装 解决 ...

  9. 14.链表中倒数第k个结点 Java

    题目描述 输入一个链表,输出该链表中倒数第k个结点. 思路 快指针和慢指针,快指针先跑K个单位然后慢指针开始跑,快指针跑到最后一个节点的时候慢指针对应的就是链表中倒数第k个结点 public stat ...

  10. openfalcon架构及相关服务配置详解(转)

    一:openfalcon组件 1.falcon-agent 数据采集组件 agent内置了一个http接口,会自动采集预先定义的各种采集项,每隔60秒,push到transfer. 2.transfe ...