docker-镜像

docker三大核心概念:仓库、镜像、容器。对于用户,能操作的主要是容器和镜像,而镜像是作为一切的开始。

获取镜像

部署了阿里云的docker服务后,可以方便的获取镜像,镜像可以来自docker官方或者社区。

使用docker pull [OPTIONS] NAME[:TAG|@DIGEST]来获取镜像。

  • name是镜像仓库的名字,比如CentOS、Ubuntu、Debian等
  • tag是镜像的标签,一般用来描述版本信息。
    通常情况下,描述一个镜像需要包括“名称+标签”的形式。

例如,获取一个CentOS可以这样操作:

# docker pull centos
Using default tag: latest
Trying to pull repository docker.io/library/centos ... 
latest: Pulling from docker.io/library/centos
74f0853ba93b: Pull complete 
Digest: sha256:26f74cefad82967f97f3eeeef88c1b6262f9b42bc96f2ad61d6f3fdf544759b8

可以看到:默认的tag是latest,下载的是最新版的镜像。有说法表示,latest标签下载的镜像可能是不稳定版,在生产环境中需要核实标签,避免麻烦。

阿里云用户还可以享受镜像加速服务,详情关注dev.aliyun.com

由下载过程看出,镜像文件包含一个或多个层(layer),74f0853ba93b这个字串就是这个层的唯一ID号,层的好处是假如多个镜像共有某些层,这些曾就可以共用,从而减少空间占用。

当然,镜像还可以从非官方hub下载,例如下载阿里云的alicloudhpc/toolkit镜像,使用命令:有时候,官方镜像并不是最好用的,第三方开发的会更加易用。

查看镜像信息

使用dicker images可以查看本地的所有镜像的基本信息。

REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              328edcd84f1b        4 weeks ago         192.5 MB
docker.io/busybox   latest              efe10ee6727f        6 weeks ago         1.129 MB
  • repository:表示来自于哪个仓库。
  • tag:标签,仅表示版本信息,不能指代镜像本身。
  • id:镜像本身唯一的标识符,可以使用前几个字符表示一个id;标签重复表示同一个镜像。
  • created:镜像更新时间。
  • size:优秀的镜像体积都很小。

我本机有两个镜像,一个是刚刚下载的centos:latest镜像,另一个是先前下载的busybox镜像。

可以使用docker tag来为镜像添加任意新的标签。例如为centos:latest镜像添加tag:

# docker tag centos:latest centos:new
# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              new                 328edcd84f1b        4 weeks ago         192.5 MB
docker.io/centos    latest              328edcd84f1b        4 weeks ago         192.5 MB
docker.io/busybox   latest              efe10ee6727f        6 weeks ago         1.129 MB

可以看到,多出来一个centos new 328edcd84f1b 4 weeks ago 192.5 MB这项,看id和原来的centos一样,上面说了,id才是区分镜像的唯一标识,而id一致说明了是同一个镜像。

使用docker inspect查看镜像的详细信息:

docker inspect centos:new
[
    {
        "Id": "sha256:328edcd84f1bbf868bc88e4ae37afe421ef19be71890f59b4b2d8ba48414b84d",
        "RepoTags": [
            "centos:new",
            "docker.io/centos:latest"
        ],
        "RepoDigests": [
            "docker.io/centos@sha256:26f74cefad82967f97f3eeeef88c1b6262f9b42bc96f2ad61d6f3fdf544759b8"
        ],
        "Parent": "",
        "Comment": "",
        "Created": "2017-08-03T21:34:56.600704666Z",
        "Container": "a77cb215266a7806d19c290368a8d058fbe1bda6a0bea05730d1630b7e9a9e1c",
        "ContainerConfig": {
以下省略……

返回的是json格式的信息,太多太长,可以使用参数来提取信息,如获取镜像的价格:

# docker inspect -f {{".Architecture"}} centos
amd64

删除镜像

可以使用标签和id删除镜像。使用docker rmi [OPTIONS] IMAGE [IMAGE...]删除镜像,image可以是标签或id

使用标签删除镜像

假如要删除centos:new镜像:

# docker rmi centos:new
Untagged: centos:new
Untagged: docker.io/centos@sha256:26f74cefad82967f97f3eeeef88c1b6262f9b42bc96f2ad61d6f3fdf544759b8

查看镜像:

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
docker.io/centos    latest              328edcd84f1b        4 weeks ago         192.5 MB
docker.io/busybox   latest              efe10ee6727f        6 weeks ago         1.129 MB

确实删除了,那如果不带tag,直接输入名字会发生什么?

重新创建了新的centos:new,现在执行:

# docker rmi centos
Untagged: centos:latest

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
centos              new                 328edcd84f1b        4 weeks ago         192.5 MB
docker.io/busybox   latest              efe10ee6727f        6 weeks ago         1.129 MB

可以看到,centos:latest被删除了,手动建立的标签保留。

使用id删除镜像

使用命令为docker rmi [id]

因为一个镜像的多个标签使用同一个id,输入id之后,优先删除手动标签,最后删除原生镜像。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值