关于java:docker专栏5详解docker镜像管理命令

38次阅读

共计 2434 个字符,预计需要花费 7 分钟才能阅读完成。

一、国内 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 包的形式传递镜像文件。
欢送关注我的布告号:字母哥杂谈,回复 003 赠送本文所在专栏《docker 修炼之道》的 PDF 版本,30 余篇精品 docker 文章。字母哥博客:zimug.com

正文完
 0