一、国内Docker镜像仓库

由于大家都知道的原因,从国外的docker 仓库中pull镜像的下载速度实际上是很慢的。国内的一些一线厂商以及docker官方都在国内免费提供了一些docker镜像仓库,使用国内的镜像仓库下载速度会有很大的提升。例如:

  • Docker 官方提供的中国 registry mirror
  • 阿里云加速器
  • DaoCloud 加速器

我们以Docker官方提供的中国 registry mirror为例,来讲解国内镜像仓库源的配置方式。将 /etc/docker/daemon.json文件内容修改为如下内容,如果该文件不存在就新建一个

{
"registry-mirrors":["https://registry.docker-cn.com"]
}

配置完成之后,重启docker服务

sudo systemctl restart docker

再去下载pull镜像,会发现比以前快了很多。就这么简单!

三、搜索镜像

Docker Hub上有很多的官方镜像以及第三方上传的高质量镜像,下面就为大家介绍如何搜索并获取这些镜像。

  • 第一种方式就是在Dcoker hub上直接搜索镜像,比如我搜索redis镜像,下方出现绿色盾牌标志的就是redis官方提供的镜像,安全性稳定性都是有保证的。

  • 第二种方式可以使用docker search来搜索镜像,

我们也可以使用 命令来搜索镜像。比如我们需要一个tomcat的镜像来作为我们的web服务。我们可以通

过 docker search 命令搜索tomcat来寻找适合我们的镜像。

docker search redis

OFFICIAL字段值为OK的那一条记录为官方的镜像。

四、拉取镜像

从 Docker 镜像仓库获取镜像的命令是 docker pull其命令格式为:

docker pull [选项] [Docker Registey 地址[:端口号]/] 镜像名[:标签]

具体的选项可以通过 docker pull --help 命令看到,这里我们说一下镜像名称的格式。

  • Docker 镜像仓库地址: 地址的格式一般是 <域名/IP>[:端口号]。如果使用默认镜像仓库,是不用写仓库地址的,如本文第一小节的配置。
  • 镜像名称:镜像名称包含两部分 <用户名>/<软件名>。一般来说,软件官方提供的镜像一般都是没有用户名的。

示例:通过 docker pull获取redis最新版本的镜像

docker pull redis:latest

等同于

docker pull redis

五、列出镜像

要想列出已经下载下来的镜像,可以使用 docker image ls 命令。

docker images   //等同于docker image ls

  • REPOSITORY:仓库及镜像名称
  • TAG:标签及版本号
  • IMAGE ID:镜像ID,镜像的唯一标识
  • CREATED:该镜像的构建时间
  • SIZE: 该镜像文件的大小

六、虚悬镜像

在镜像列表中,可能会存在一种特殊的镜像,该镜像既没有仓库名/镜像名称,也没有标签/版本号,这两个位置均显示<none>,这种镜像通常被称为虚悬镜像,如下入所示。

虚悬镜像产生的原因是什么?

其实虚悬镜像最开始pull下载的时候是有镜像名称和标签版本号名称的,比如redis官方发布了一个docker镜像6.0版本,过了一段时间发现6.0版本的镜像有可能存在安全问题,所以重新构建了一个6.0版本的镜像。

镜像名称redis和6.0的TAG都被新发布的镜像占用了,旧版本的镜像就丢失了镜像名称和标签,变成了虚悬镜像。

一般来说,虚悬镜像已经失去了存在的价值,是可以随意删除的,使用下面的命令删除:

docker image prune

七、删除本地镜像

下面的两种语法都可以完成镜像删除的操作:

docker rmi [选项] <镜像1> [<镜像2>.....]
docker image rm <镜像1> [<镜像2>.....]

上文语法中可以使用 镜像ID、镜像名作为镜像的唯一标识用来删除镜像。常用的[选项]是-f表示强制删除,有的时候同一个镜像上传到多个仓库,此时镜像ID就不再是唯一标识,需要使用-f强制删除才能删除镜像(具有同一个镜像ID的所有本地镜像全部删除)。

需要注意的是:删除镜像之前必须确认被删除的镜像,没有被任何容器使用,否则无法删除。

如下所示,删除hello-world镜像的响应结果。

# docker rmi hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:bfea6278a0a267fad2634554f4f0c6f31981eea41c553fdf5a83e95a41d40c38
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
Deleted: sha256:e07ee1baac5fae6a26f30cabfe54a36d3402f96afda318fe0a96cec4ca393359

八、镜像的导入导出

用 save 子命令将本地仓库的镜像保存为当前目录下的tar文件。

docker save -o <自定义包名>.tar <镜像名称>

如下面的命令将 hello-world镜像导出为一个helloworld.tar存放在当前目录

docker save -o helloworld.tar hello-world

我们可以在另一台服务器上,将hello-world镜像导入,导入方法如下:

导入方式一(不输出详细信息)

# docker load -i helloworld.tar

导入方式二(输出详细信息)

# docker load < helloworld.tar

镜像导出导入功能可以用于镜像备份,在没有镜像仓库的公司中也可以使用这种tar包的方式传递镜像文件。

字母哥博客:zimug.com

【docker专栏5】详解docker镜像管理命令的更多相关文章

  1. 附005.Docker Compose文件详解

    一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...

  2. Docker网络模式详解

    一.Docker四种工作模式 安装Docker时,它会自动创建三个网络,bridge(创建容器默认连接到此网络). none .hosthost:容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用 ...

  3. docker之镜像管理命令

    一.docker image 镜像管理命令 指令 描述ls 列出本机镜像build 构建镜像来自Dockerfilehistory 查看镜像历史inspect 显示一个或多个镜像详细信息pull 从镜 ...

  4. 详解Docker 端口映射与容器互联

    详解Docker 端口映射与容器互联 1.端口映射实现访问容器 1.从外部访问容器应用 在启动容器的时候,如果不指定对应的参数,在容器外部是无法通过网络来访问容器内部的网络应用和服务的. 当容器中运行 ...

  5. 003-docker命令-远程镜像仓库命令,本地镜像管理命令

    1.远程镜像仓库 docker login/logout:查看 [不常用] docker push:查看 [不常用] docker search:从Docker Hub查找镜像 语法:docker s ...

  6. (4)top详解 (每周一个linux命令系列)

    (4)top详解 (每周一个linux命令系列) linux命令 top详解 引言:今天的命令是用来看cpu信息的top top 我们先看man top top - display Linux pro ...

  7. (5)ps详解 (每周一个linux命令系列)

    (5)ps详解 (每周一个linux命令系列) linux命令 ps详解 引言:今天的命令是用来看进程状态的ps命令 ps 我们先看man ps ps - report a snapshot of t ...

  8. (3)lscpu详解 (每周一个linux命令系列)

    (3)lscpu详解 (每周一个linux命令系列) linux命令 lscpu详解 引言:今天的命令是用来看cpu信息的lscpu lscpu 我们先看man lscpu display infor ...

  9. (2)free详解 (每周一个linux命令系列)

    (2)free详解 (每周一个linux命令系列) linux命令 free详解 引言:今天的命令是用来看内存的free free 换一个套路,我们先看man free中对free的描述: Displ ...

随机推荐

  1. vulnhub DC:1渗透笔记

    DC:1渗透笔记 靶机下载地址:https://www.vulnhub.com/entry/dc-1,292/ kali ip地址 信息收集 首先扫描一下靶机ip地址 nmap -sP 192.168 ...

  2. OSPF MTU问题

    OSFP(开放式最短路径优先)链路状态协议,IGP 1.mtu 检测 链路俩段不匹配 假设双方的mtu不一致时 ospf建立如下: R1与R2交互hello报文,其中包含:目的IP地址:224.0.0 ...

  3. [洛谷] P1065 [NOIP2006 提高组] 作业调度方案

    点击查看代码 #include<bits/stdc++.h> using namespace std; const int N = 1e6 + 10; int m, n, ans = 0; ...

  4. Django学习——Django测试环境搭建、单表查询关键字、神奇的双下划线查询(范围查询)、图书管理系统表设计、外键字段操作、跨表查询理论、基于对象的跨表查询、基于双下划线的跨表查询

    Django测试环境搭建 ps: 1.pycharm连接数据库都需要提前下载对应的驱动 2.自带的sqlite3对日期格式数据不敏感 如果后续业务需要使用日期辅助筛选数据那么不推荐使用sqlite3 ...

  5. vue大型电商项目尚品汇(前台篇)day02

    现在正式回归,开始好好做项目了,正好这一个项目也开始慢慢的开始起色了,前面的准备工作都做的差不多了. 而且我现在也开始慢慢了解到了一些项目才开始需要的一些什么东西了,vuex.router这些都是必备 ...

  6. 日期和时间API - 读《Java 8实战》

    日期与时间 LocalDate 创建一个LocalDate对象并读取其值 // 根据年月日创建日期 LocalDate date1 = LocalDate.of(2014, 3, 18); // 读取 ...

  7. python基础学习6

    Python的基础学习6 内容概要 while + else 死循环.while的嵌套 for循环基本使用 range关键字 for循环补充.爬虫 基本数据类型及内置方法 内容详情 while + e ...

  8. App上看到就忍不住点的小红点是如何实现的?

    你有没有发现,我们解锁手机后桌面上App右上角总能看到一个小红点,这就是推送角标.推送角标指的是移动设备上App图标右上角的红色圆圈,圆圈内的白色数字表示未读消息数量.角标是一种比较轻的提醒方式,通过 ...

  9. SCI论文写作注意事项

    1. 先写结论:(划定范围,以防添加无效的内容)     并非一开始就把整个结论都写出来,而是把

  10. JZOJ5384. 【NOIP2017提高A组模拟9.23】四维世界

    题目 Description 众所周知,我们常感受的世界是三维的. Polycarp突然对四维空间产生了兴趣,他想对四维空间进行一些研究.但是在此之前,他必须先对三维世界了解透彻. 于是Polycar ...