docker镜像相关

什么是docker镜像


docker镜像是使用联合加载技术实现的层叠的只读文件系统,它是容器构建的基石。

docker镜像的存储位置可以通过docker info来查看:
这里写图片描述

列出镜像


命令:

docker images [OPTIONS] [REPOSITORY]
    无参数:显示所有镜像(不显示中间层)
    -a:显示所有镜像
    -f:显示时的过滤条件
    --no-trunc:不以截断的形式显示数据(默认情况下会截断镜像的唯一id)
    -q:只显示唯一id

docker iamges

这里写图片描述

显示当前安装的所有镜像的信息。

  • REPOSITORY:镜像所属的仓库名
  • TAG:镜像标签
  • IMAGE ID:镜像的唯一ID,已被截断,与本地镜像存储目录下的文件名一致
  • CREATED:创建时间
  • SIZE:大小

REPOSITORY和REGISTRY的区别

REPOSITORY和REGISTRY都是仓库的意思,两者的区别是:

REPOSITORY是一系列相关连的镜像的集合,REGISTRY是提供仓库存储服务的。

例如docker hub就是提供镜像存储服务的,他其中有很多REPOSITORY,例如apache,nginx,centos等,而这些REPOSITORY又有具体版本的镜像,如centos的REPOSITORY中有6.5、7.0、7.2等版本的镜像。

所以,REPOSITORY是包含在REGISTRY中的,REPOSITORY组成了REGISTRY

Tag

不同的镜像利用标签来进行区分。一个完整的镜像名字是由:REPOSITORY+Tag来构成的,而一个完整的镜像名称就会构成一个镜像id。

如果不指定镜像的Tag,那么会默认指定标签为:latest。

同一仓库镜像的不同标签可能对应的相同的镜像id,这意味着可以为一个镜像根据不同的需求打上不同的标签。

docker images –no-trunc

使用--no-trunc将会在显示中不截断镜像的id:

这里写图片描述

这个id名和存储镜像文件名一致

docker images -a

-a选项可以显示中间层镜像
这里写图片描述

有一些没有仓库名和Tag的镜像就是中间层镜像

docker iamges -q

将只返回image id这一列的数据

这里写图片描述

指定镜像仓库查看镜像

这里写图片描述

将会放回指定镜像仓库下的所有镜像

查看镜像的详细信息

docker inspect [OPTIONS] CONTAINER|IAMGE    

例如:

docker inspect myimage/httpd
或
docker inspect f54134788407

删除镜像

docker rmi [OPTIONS] IMAGE
    -f:强制删除
    --no-prune:保留镜像中被打标签的副镜像

如果后面接的是镜像id,那么这个id的所有镜像(不同标签)都会删除,如果接的是:镜像名称+tag,那么只有这个tag被删除,镜像本身没有删除。

查找镜像

1、通过docker hub官方网站查找镜像:

https://registry.hub.docker.com

在docker hub官网注册账户后登陆,进入镜像查找界面进行搜索即可,这里不做过多介绍。

2、docker命令行进行查找:

docker search [OPTIONS] TRRM
    --automated:只显示自动化构建的镜像
    --no-trunc:不以截断方式输出
    -s:限定显示结果的最少星级

最多返回25条信息

这里写图片描述

可以看到,返回的内容包括:名称、描述、星级、是否为官方、是否自动构建

使用-s 指定最少星级,比如限定返回三星级以上的可以如下:

docker search -s 3 centos

这里写图片描述

拉取镜像

docker pull [OPTIONS] NAME[:TAG]
    -a:下载仓库中匹配到名字的所有标签的镜像

例如下载ubuntu14.04的镜像如下:

docker pull ubuntu:14.04

这里写图片描述

推送镜像

docker push [镜像名称]

需要先登录docker hub,上传后变成公共镜像

构建镜像

构建docker镜像提供了自定义镜像的能力,能够保存对镜像的修改并再次使用,可以以软件的形式打包并分发服务以及运行环境。

docker提供了两种方式构建镜像:
1、通过容器构建镜像:
docker commit

2、通过Dockerfile构建镜像:
docker build

docker commit构建镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
    -a:指定镜像作者
    -m:记录镜像构建信息
    -p:不暂停正在执行的容器

首先启动一个交互式镜像:

docker run -it -p 80 --name my_test centos /bin/bash

然后对容器进行修改:

yum install -y httpd

安装完成和退出,可以看到刚建立好的容器:

[root@docker ~]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
25a839835fc7        centos              "/bin/bash"         2 minutes ago       Exited (0) 5 seconds ago                       my_test

下面用commit来创建镜像:

docker commit -a 'my docker image commit test' -m 'httpd' my_test mycommit/commit_test1

-a:指定了作者的信息
-m:指定了创建的信息
my_test:这里用的是容器名称,也可以是容器id
my_test mycommit:这里一般可以填docker hub的账户名
commit_test1:任意的镜像名称
结束后返回一个id就是镜像的唯一id

这里写图片描述

Dockerfile构建镜像

步骤:

  1. 创建Dockerfile
  2. 使用docker build命令

    Dockerfile实际上是一个包含一系列命令的文本文件,包含镜像基础、维护人、执行的命令和端口等。

首先创建Dockerfile文件:

mkdir dockerfile
cd dockerfile
vim Dockerfile
    # dockerfile for test

    FROM centos:latest
    MAINTAINER mytest
    RUN yum install httpd
    EXPOSE 80

单后使用docker build构建镜像:

docker build [OPTIONS] PATH | URL
    --force-rm:
    --no-trunc:
    --pull:
    -q:
    --rm:
    -t=:指定构建镜像的tag
docker build -t='dockertest/dockerfile_build' /root/dockerfile/

构建过程就是依次执行文件中的命令,每执行一次就会返回一个id,这个id就是中间层的id

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值