Docker系列教程01-使用Docker镜像 冷不防 2021-08-30 00:31 447阅读 0赞 ## docker系列导读 ## ## [一文带你读懂什么是docker][docker] ## [Docker安装部署][Docker] [10张图带你深入理解Docker容器和镜像][10_Docker] ## 前言 ## 学习Docker,我们需要掌握它的三大核心概念:`镜像`、`容器`和`仓库`。 今天先带大家学习Docker镜像相关的基础知识。 ## Docker镜像简介 ## # 1、什么是镜像? # Docker镜像是一个只读的模板。如果读者之前是VM管理员,则可以把Docker镜像理解为VM模板,如果您是一名研发人员,可以将镜像理解为`类`(class)。 **简单说,Docker镜像是一个`不包含系统内核`而又精简的操作系统。** 例如:一个镜像可以包含一个基本的 ubuntu 操作系统环境,里面仅安装了 Nginx 应用程序。可以把它称为Nginx镜像。 # 2、镜像从哪里来的? # `Docker Hub`是由Docker公司负责维护的公共注册中心,包含大量的容器镜像,Docker工具`默认`从这个公共镜像库下载镜像。 ![format_png][] 下载nginx镜像 ## 镜像管理命令 ## 我们先列出镜像相关的命令 ![format_png 1][] ## 1、搜索镜像 ## ![format_png 2][] docker search 语法 例如,搜索mysql相关的镜像,命令如下: ![format_png 3][] ## 2、下载镜像 ## ![format_png 4][] docker pull 语法 **通常情况下, 描述一个镜像需要包括“`名称`+`标签`“信息。** 比如下载`Ubuntu 18.04`系统镜像,命令如下: ![format_png 5][] 若不指定标签,则默认会选择latest标签。测试如下: ![format_png 6][] > 在这里特别强调下,不要被`latest`的字面意思“最新的”所误解了,它只是这个资源库的拥有者约定这样,没有附加作用,更不会自动更新。举个例子,我可以轻易把一个过时的镜像打上`latest`标签,实验如下: # docker images web_repo REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE web_repo 1.0 2e9f372f03a0 44 seconds ago 2.433 MB web_repo latest 2e9f372f03a0 44 seconds ago 2.433 MB web_repo 0.9 4986bf8c1536 2 weeks ago 2.433 MB # docker tag -f web_repo:0.9 web_repo:latest # docker images web_repo REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE web_repo 1.0 2e9f372f03a0 About a minute ago 2.433 MB web_repo 0.9 4986bf8c1536 2 weeks ago 2.433 MB web_repo latest 4986bf8c1536 2 weeks ago 2.43 **这里带latest标签的镜像与0.9版本的镜像是一样的,都是两周前的版本,然而1.0的镜像是一分钟以前的。此时带有latest标签的镜像还是最新版本吗?** ## 3、查看镜像 ## 1)使用images 命令列出本地镜像列表 ![format_png 7][] 解释列出的字段信息: * `REPOSITORY` 说明镜像来自哪个仓库,比如 ubuntu 表示ubuntu 系列的基础镜像 * `TAG` 镜像的标签信息,人为标识镜像的不同版本 * `IMAGE ID` 镜像的ID,用来唯一标识镜像,如果两个镜像ID相同,表示它们指向同一个镜像,只是标签名称不同而已 * `CREATED` 镜像最后更新的时间 * `SIZE` 镜像大小 2)使用inspect命令查看镜像详细信息 ![format_png 8][] 只展示部分 > 上图返回的是一个JSON格式,内容包括镜像制作者、适应架构、各层的数字摘要等。如果只要其中一项内容时,可使用`-f`指定,例如,获取镜像的创建时间: ![format_png 9][] 3)使用history命令查看镜像历史 > docker pull 下载镜像时也我们发现了`镜像文件由多个层组成`,可以使用history子命令列出各层的创建信息。例如,查看Ubuntu:18.04镜像的创建过程,命令如下: ![format_png 10][] 注意:由于`CREATED BY`部分命令过长,被自动截断了,可使用`--no-trunc`选项输出完整命令。 ## 4、为镜像添加标签 ## ![format_png 11][] docker tag 语法 为ubuntu:latest镜像添加一个新标签:myubuntu:v1 ![format_png 12][] ## 5、删除镜像 ## ![format_png 13][] docker rmi 语法 1)使用标签删除镜像 [root@qll251 ~]# docker rmi myubuntu:v1 Untagged: myubuntu:v1 > 当同一个镜像拥有多个标签时,docker rmi命令只是删除该镜像的一个标签副本,并不影响镜像文件。 2)使用镜像ID删除镜像 docker rmi 命令后跟镜像ID的前缀即可匹配删除 ![format_png 14][] 如果出现以下情况:![format_png 15][] 仔细观察,发现`005d2078bdfa`这个镜像id指向了两个repository,因此无法删除。 此时我们可以依次删除该镜像对应的标签即可删除,或者使用`-f`参数强制删除,命令如下: ![format_png 16][] 3)清除镜像 > 使用Docker一段时间后,系统中可能会遗留一些临时镜像文件,以及一些未被使用的镜像,可以通过`docker image prune`命令进行清理。 ![format_png 17][] docker image prune 语法 例如, 如下命令会自动清理临时的遗留镜像文件层, 最后会提示释放的存储空间: [root@qll251 ~]# docker image prune -f Total reclaimed space: 1.6 GB ## 6、存出和载入镜像 ## 1、存出镜像 ![format_png 18][] docker save 语法 例如,导出`ubuntu:18.04镜像`为本地文件`ubuntu:18.04.tar`,代码如下: [root@qll251 ~]# docker save -o /data/ubuntu:18.04.tar ubuntu:18.04 [root@qll251 ~]# ls /data ubuntu:18.04.tar > `- o`参数:表示导出镜像到指定的文件中。 2、载入镜像 > 可使用`docker load`将导出的tar文件再次导入到本地镜像库。语法格式如下: ![format_png 19][] docker laod 语法 例如,将`ubuntu:18.04.tar`文件导入本地镜像库,代码如下: ![format_png 20][] > 注意:使用`docker load`导入的镜像将保留所有的镜像历史记录和元数据信息。后续会我们会在容器章节中与`docker load`做对比。 ## 7、上传镜像 ## 使用`docker push`命令默认将镜像上传到Docker Hub官方仓库(需要登录)。命令格式如下: ![format_png 21][] docker push 语法 例如,将本地的`myubuntu:v1`镜像上传至官方仓库。代码如下: 1、为 待上传的镜像打上标签 [root@qll251 ~]# docker tag ubuntu:18.04 qinlulu/myubuntu:v1 2、登录到Docker Hub(没有账号的需在官网注册) [root@qll251 ~]# docker login Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one. Username: qinlulu Password: WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded 3、上传镜像 [root@qll251 ~]# docker push qinlulu/myubuntu:v1 The push refers to repository [docker.io/qinlulu/myubuntu] 28ba7458d04b: Pushed 838a37a24627: Pushed a6ebef4a95c3: Pushed b7f7d2967507: Pushed v1: digest: sha256:b58746c8a89938b8c9f5b77de3b8cf1fe78210c696ab03a1442e235eea65d84f size: 1152 Docker Hub官网地址: `https://hub.docker.com` 登录后,验证镜像已上传: ![format_png 22][] ## 本章命令小结 ## 1、搜索镜像 `docker search mysql` 2、下载镜像 `docker pull ubuntu:18.04` 3、列出本地镜像列表 `docker images` 4、查看镜像详细信息 `docker inspect ubuntu:18.04` 5、查看镜像历史信息 `docker history ubuntu:18.04` 6、为镜像添加标签 `docker tag ubuntu:latest myubuntu:v1` 7、删除镜像 `docker rmi myubuntu:v1` 8、清除临时镜像文件 `docker image prune -f` 9、存出镜像 `docker save -o ubuntu.tar ubuntu:18.04` 10、载入镜像 `docker load -i ubuntu.tar` 11、上传镜像 `docker push qinlulu/myubuntu:v1` [docker]: https://mp.weixin.qq.com/s?__biz=MzI3NzQ4MTE4Mw%3D%3D&chksm=eb64d11edc1358085fd8fa6df570f617cb62dacaf1a0e13387d8e71f4a872f01e88981e7c0cd&idx=1&lang=zh_CN&mid=2247484078&scene=21&sn=d0244bb6e6c63c77eb41de88f809190f&token=956237123#wechat_redirect [Docker]: https://mp.weixin.qq.com/s?__biz=MzI3NzQ4MTE4Mw%3D%3D&chksm=eb64d11edc135808b8fcf5332499d8461f5b96924929a9380c91873552a80917bca75808a794&idx=2&lang=zh_CN&mid=2247484078&scene=21&sn=44b2122bc184203ff99fcbf595d77eae&token=956237123#wechat_redirect [10_Docker]: https://blog.csdn.net/weixin_38889300/article/details/105743434 [format_png]: /images/20210726/bf94c0a5c4c84b1790ae5cb112e11133.png [format_png 1]: /images/20210726/4ebdc2e0ef294b5b8737377f66d733bd.png [format_png 2]: /images/20210726/c80c200f6ef846958b03fa0d12d7cc15.png [format_png 3]: /images/20210726/c1a7494aa2fa42d7b5b2335e7ba0375a.png [format_png 4]: /images/20210726/d949624c1b3a4f10b4ba8bc286a8a74e.png [format_png 5]: /images/20210726/10520fff751b4548a86b6356de26452a.png [format_png 6]: /images/20210726/eec244266f7c41efa2419370eddeeffe.png [format_png 7]: /images/20210726/227c71d513ed4c109b4a8009a8d2088e.png [format_png 8]: /images/20210726/6208ea8e4c964d11b9356aed5da7ac63.png [format_png 9]: /images/20210726/6e7c4e685e514258b62ca1d6a4a46ee8.png [format_png 10]: /images/20210726/fcc95b286f8840078a7cc10116f0f66e.png [format_png 11]: /images/20210726/453ef1f7f94746b491d373571183a4b3.png [format_png 12]: /images/20210726/7decbd3fa1354d24a9489718106b6117.png [format_png 13]: /images/20210726/1105c04ecba648a59934f468b8899e68.png [format_png 14]: /images/20210726/37c37a53a0eb43c98e76f37167f1b689.png [format_png 15]: /images/20210726/33a3fb26d15f4b13bfdec16ec208d6a5.png [format_png 16]: /images/20210726/ec146abad5a24232951ac78d881f3905.png [format_png 17]: /images/20210726/288cd8a82c484dedb4b695b14fc48470.png [format_png 18]: /images/20210726/caca15b18a0b4e9cbefbc5f982d0fd87.png [format_png 19]: /images/20210726/04416fb793734a6e87df2a404d6e2f98.png [format_png 20]: /images/20210726/284fa99a90e54dd5ab19c678747787b9.png [format_png 21]: /images/20210726/fc951536b3ca41caaba802f02ef6f4c6.png [format_png 22]: /images/20210726/05568301cce74978bcec22e41ecd5537.png
还没有评论,来说两句吧...