docker镜像和仓库

2018年8月19日13:49:04 发表评论

一、镜像和容器

docker中的镜像和容器对应linux环境中的程序和进程,不运行时是一个静态的二进制文件,运行就成了系统中的一个进程。docker运行时被称作容器,静态的文件则被称作镜像。

镜像是docker三大核心中最为重要的,因为运行docker首先得要有镜像。而镜像的来源有多种,可以从官方仓库获取,也可以手动制作。默认情况下启动一个镜像,如果不存在于本地,默认会从镜像仓库去获取。

1.1 获取镜像

如果想要从镜像仓库获取镜像,使用 docker pull 命令就可以完成,例如:

仓库中的镜像包含两部分:镜像名和版本,版本字段可以省略,默认使用latest。

例如我们要获取ubuntu 14.04镜像,可以使用下面的命令完成:

1.1 查看本地镜像

查看本地已有的镜像可以通过命令 docker imagesdocker image ls 完成:

显示的结果中包含了镜像名,版本号,镜像ID,创建时间和镜像大小等,镜像ID是用来标识镜像的唯一ID。

1.3 搜索仓库中的镜像

使用docker search命令可以在远程仓库中搜索想要的镜像:

默认会显示镜像名,镜像描述和star等信息,OFFICIAL表示是否为官方镜像,如果标有[OK]则表示是官方的,最后的AUTOMATED表示是否为自动创建的镜像。

search中提供了一些筛选的选项:

  • -s, --stars=n : 老版本中用来筛选star用的,表示只显示star大于等于n的镜像。新版docker用 --filter=start=n 来筛选。
  • --no-trunc=truc|false : 是否截断描述信息,默认情况下描述超多长度之后会被截断成...显示。

1.4 镜像标签

镜像标签类似于linux中的 alias ,相当于给镜像取了别名:

新创建的标签镜像和实际的镜像ID都是相同的,指向了同一个镜像。

1.5 删除镜像

docker rmi 可以删除本地已经存在的镜像,删除镜像可以使用 镜像名+标签镜像id 完成。

例如当前 hello-world 镜像的id为 2cb0d9787c4d ,把它删除:

值得注意的是:如果容器镜像已经被运行了,即使容器处于停止的状态,镜像也是无法删除的。

这里提示镜像无法删除,因为有一个容器 5549f2060977 正在使用它,查看此时运行的容器:

可以看到有一个已经停止了的容器 5549f2060977 ,它在占用 hello-world 镜像,删除经向前要把这个容器也删除了才行,删除容器使用 docker rm

当镜像存在多个标签的时候,删除镜像只是删除了镜像的当前标签,实际的镜像并没有删除:

最后能看到,删除 myubuntu 之后,镜像并没有删除,原来的ubuntu和镜像依旧存在。

1.6 查看镜像信息

每个镜像都有自己的详细信息,包括作者、版本以及镜像大小等相关信息,使用命令 docker inspect 即可查看:

docker history 命令可以查看镜像的历史信息:

二、镜像仓库

2.1 Docker Hub

docker镜像仓库是一个集中存放镜像的地方,docker pull 就是直接在这个仓库获取的镜像。

docker官方维护了一个公共的镜像仓库Docker Hub,里面有许多优质的镜像。

docker镜像和仓库

除了下载镜像,这里还能上传个人制作的个人镜像。

2.1 阿里云镜像加速器

docker安装后默认的仓库地址Docker Hub,对于国内用户来说速度比较慢,可以考虑使用国内加速器来替换。国内的镜像加速器常见的有:DaoCloud, 时速云, 阿里云等。

阿里云镜像加速器的用法点击进去即可看到,需要登陆后使用,对不同系统均有使用教程,按照步骤设置即可。

Ubuntu下的替换教程:

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: