一、镜像仓库

将Docker镜像和Git进行对比,镜像仓库类似GitHub、GitLab等托管平台,Docker的镜像仓库托管的不是代码项目,而是镜像。

Docker镜像仓库最大的作用是实现了Docker镜像的分发。借助镜像仓库,得到了一个镜像的中转站,可以将开发环境上所使用的镜像推送至镜像仓库,并在测试或生产环境上拉取到它们,而这个过程仅需要几个命令,甚至自动化完成。

Docker另一项重要的功能是将镜像管理纳入到了功能之中,实现虚拟化只是程序能够无缝移植的一部分,而有了镜像管理,就真正取代了移植过程中的繁琐操作。利用Docker的镜像管理功能,可以很方便的通过网络传输和分享镜像,并保障镜像内容的一致性。

A、获取镜像

可以通过很多方式将镜像引入Docker之中,但最常用的获取镜像的方式是直接从镜像仓库中拉取,因为这种方式简单、快速、有保障。

可以使用docker pull命令拉取镜像,命令的参数就是镜像仓库名。

# 拉取镜像
docker pull ubuntuUsing default tag: latest
latest: Pulling from library/ubuntu
6cf436f81810: Pull complete
987088a85b96: Pull complete
b4624b3efe06: Pull complete
d42beb8ded59: Pull complete
Digest: sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Status: Downloaded newer image for ubuntu:latest# 查看本地镜像
docker imagesREPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              47b19964fb50        12 days ago         88.1MB

运行命令后,Docker就会开始从镜像仓库中拉取指定的镜像,在控制台中,可以看到镜像拉取的进度。下载进度会分为几行,每行代表一个镜像层。Docker首先会拉取镜像所基于的所有镜像层,之后再单独拉取每一个镜像层并组合成这个镜像。如果在本地已经存在相同的镜像层(共享于其他的镜像),Docker就直接略过这个镜像层的拉取而直接采用本地的内容。

当没有提供镜像标签时,Docker会默认使用latest这个标签,也能够使用完整的镜像命名来拉取镜像。

二、Docker Hub

Docker Hub是Docker官方建立的中央镜像仓库,除了普通镜像仓库的功能外,它内部还有更加细致的权限管理,支持构建钩子和自动构建,以及优雅的web操作页面。

Docker Hub的定位是Docker的中央镜像仓库系统,同时也是Docker Engine的默认镜像仓库,所以使用Docker Hub是开发者共享镜像的首选,常用服务软件的镜像都能在Docker Hub中找到,甚至能找到针对它们不同用法的不同镜像。

同时,Docker Hub也允许用户上传镜像,与Docker用户共享成果。

A、搜索镜像

由于Docker Hub提供了一套完整的web操作界面,搜索其中的镜像会非常方便。

除了直接通过Docker Hub网站搜索镜像这种方式外,还可以用docker CLI中docker search这个命令搜索Docker Hub中的镜像。

docker search ubuntuNAME                                                   DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
ubuntu                                                 Ubuntu is a Debian-based Linux operating sys…   9198                [OK]
dorowu/ubuntu-desktop-lxde-vnc                         Ubuntu with openssh-server and NoVNC            270                                     [OK]
rastasheep/ubuntu-sshd                                 Dockerized SSH service, built on top of offi…   201                                     [OK]

使用docker search命令,可以得到一个类似于Docker Hub网页版搜索的镜像列表结果,其中的信息与网页版也是类似的。通过这种方式可以在不方便访问web的环境下搜索镜像。

三、管理镜像

docker images可以列出本地 Docker 中的所有镜像,如果要获得镜像更详细的信息,可以通过docker inspect命令。

A、参数识别

不论通过镜像名还是镜像ID传递到docker inspect或者其他类似的命令(需要指定Docker对象的命令)里,Docker都会根据传入的内容去寻找与之匹配的内容,只要所给出的内容能够找出唯一的镜像,那么Docker就会对这个镜像执行给定的操作。反之,如果找不到唯一的镜像,那么操作不会进行,Docker也会显示错误。

例如:

docker imagesREPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
php                   7-fpm               f214b5c48a25        11 days ago         368MB
ubuntu                latest              cd6d8154f1e1        13 days ago         84.1MB
redis                 3.2                 2fef532eadb3        13 days ago         76MB
redis                 4.0                 e1a73233e3be        13 days ago         83.4MB
openresty/openresty   1.13.6.2-alpine     08d5c926e4b6        3 months ago        49.3MB
cogset/cron           latest              c01d5ac6fc8a        16 months ago       125MB

镜像ID前缀为2的只有redis:3.2,可以使用2来指代这个镜像。

docker inspect 2

而前缀为c的镜像有两个,这时候如果直接使用c来指代镜像的话,Docker会提示未能匹配到镜像。

B、删除镜像

虽然Docker镜像占用的空间比较小,但日渐冗杂的镜像和凌乱的镜像版本会让管理越来越困难,所以有时候需要清理一些无用的镜像,将它们从本地的Docker Engine中移除。

# 删除本地镜像
docker rmi ubuntuUntagged: ubuntu:latest
Untagged: ubuntu@sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Deleted: sha256:47b19964fb500f3158ae57f20d16d8784cc4af37c52c49d3b4f5bc5eede49541
Deleted: sha256:d4c69838355b876cd3eb0d92b4ef27b1839f5b094a4eb1ad2a1d747dd5d6088f
Deleted: sha256:1c29a32189d8f2738d0d99378dc0912c9f9d289b52fb698bdd6c1c8cd7a33727
Deleted: sha256:d801a12f6af7beff367268f99607376584d8b2da656dcd8656973b7ad9779ab4
Deleted: sha256:bebe7ce6215aee349bee5d67222abeb5c5a834bbeaa2f2f5d05363d9fd68db41

删除镜像的过程实际是删除镜像内的镜像层,在命令打印的结果里,可以看到被删除的镜像层以及它们的ID。如果存在两个镜像共用一个镜像层的情况,也不需要担心Docker会删除被共享的那部分镜像层,只有当镜像层只被当前被删除的镜像所引用时,Docker才会将它们从硬盘空间中移除。

docker rmi命令也支持同时删除多个镜像,只需要通过空格传递多个镜像ID或镜像名即可。


参考:

http://blog.poetries.top/2018/11/20/docker-base/

docker desktop ubuntu镜像_「Docker」 - 镜像仓库相关推荐

  1. centos7 怎么封装自己的镜像_「10」-CentOS7.5(1804)

    终于也是到了虚拟机的安装了,vm虚拟机的安装和介绍就不多说了今天的重点是Cent0S7.5 有人就会问了,为什么不是6.5或其他的6的版本呢? 是这样的,本人最近购买了一个云服务器,看到上面的选项中确 ...

  2. 如何使用docker desktop 下载x86、amd64、arm64 镜像?

    如何使用docker desktop 下载x86.amd64.arm64 镜像? 环境 修改配置 重启docker后下载镜像 验证镜像架构 环境 修改配置 官网地址,开启 Docker CLI 的实验 ...

  3. Docker Desktop 如何运行第一个 Docker 项目

    Docker Desktop 安装后的界面是这样的. 你可能会有点困惑,如何运行第一个 Docker 项目. 其实上面的界面中已经告诉你运行的命令行工具了: docker run -d -p 80:8 ...

  4. docker php composer 使用_「PHP编程」如何使用Docker制作自己的LNMP/LAMP镜像

    LNMP和LAMP是PHP常用的两种运行环境,L代表Linux,N代表Nginx,A代表Apache,M代表Mysql,P代表PHP.在文章<「PHP编程」安装开发环境太烦?告诉你几个简单方法, ...

  5. docker desktop ubuntu镜像_原创 | Docker入门,看了不理解,假一赔命

    写在前面 这篇博客适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二, ...

  6. docker desktop ubuntu镜像_资深专家都知道的顶级 Docker 命令!

    开发人员一直在努力提高 Docker 的使用率和性能,命令也在不停变化.Docker 命令经常被弃用,或被替换为更新且更有效的命令,本文总结了近年来资深专家最常用的命令列表并给出部分使用方法. 目前, ...

  7. docker 容器运行 golang程序_「Docker」 - 运行 amp; 管理容器

    容器是基于容器技术所建立和运行的轻量级应用运行环境,它是Docker封装和管理应用程序或微服务的「集装箱」,在Docker中,容器是最核心的部分. 一.容器的创建和启动 Docker容器的生命周期里分 ...

  8. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具安卓ADB的使用(15) adb(Androi ...

  9. python docker自动化_「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17)...

    原创文章,欢迎转载.转载请注明:转载自 IT人故事会,谢谢! 原文链接地址: 「docker实战篇」python的docker爬虫技术-移动自动化控制工具appium工具(17) Appium是一个开 ...

最新文章

  1. IOS设计模式学习(1)设计模式初窥
  2. 全网唯一的Microsoft?NETFramework3?5SP1简体中文完整版离线安装包安装netframewo
  3. android 如何将WPS文档转成PDF
  4. VisualGDB for Linux 安装配置
  5. 读书笔记:《亮剑 .Net》——将类转化为XML并保存已经去读后反序列化为类对象...
  6. 华为鸿蒙麒麟玉兔_华为P50Pro概念图:1亿像素+麒麟9000+鸿蒙
  7. MFC函数——CWnd::OnCreate
  8. Egret中的三种单例写法
  9. 每日一句20191229
  10. 2018-3-28 摩尔定律
  11. [答疑]能举一个人取代业务实体的例子吗
  12. SEO内链优化,网站内部链接优化方法
  13. 编写TaskMgr.exe的时候学习的知识点
  14. matlab中complex的详细用法,Matlab基本函数-complex函数
  15. 跳转gridview
  16. mysql已启动但无法连接_MySQL无法正常启动,Navicat连接出错,解决2003问题
  17. ctrl键频繁失灵,但不是键盘本身的问题,换个键盘同样失灵
  18. 自从玩了我自己创造的这个c++游戏后,总感觉一分钟好长(火龙征战V1.0.1)
  19. 不洁尸体的“诅咒”:靠死者的馈赠长高,却换来了另一种怪病
  20. 【20180808】集训题d3

热门文章

  1. .NET分层登陆——机房收费系统再总结
  2. leetCode 50.Pow(x, n) (x的n次方) 解题思路和方法
  3. 【Java虚拟机的垃圾收集算法】
  4. Kaneboy:临时启事:寻找在北京,熟悉SPS、ASP.NET,有两周空闲时间的朋友
  5. #1300 : 展胜地的鲤鱼旗(dp)
  6. K8s之ControllerRateLimiter简单理解
  7. 委托 匿名类 var隐式类型 匿名方法
  8. 个人JS体系整理(二)
  9. List去重为什么要写equals(),hashCode()方法
  10. java基础知识-对象和类