原文地址:Docker零基础入门指南(五)
仓库( Repository )是集中存放镜像的地方。一个容易混淆的概念是注册服务器( Registry )。实际上注册服务器是管理仓库的具体服务器,每一个服务器上能够有多个仓库,而每一个仓库下面有多个镜像。从这方面来讲,仓库能够被认为是一个具体的项目或目录。例如对于仓库地址 dl.dockerpool.com/ubuntu 来讲,dl.dockerpool.com 是注册服务器地址, ubuntu 是仓库名。nginx
Docker Registry用来提供集中的存储、分发镜像的服务。
一个 Docker Registry 中能够包含多个仓库(Repository);每一个仓库能够包含多个标签(Tag);每一个标签对应一个镜像。
一般,一个仓库会包含同一个软件不一样版本的镜像,而标签就经常使用于对应该软件的各个版本。咱们能够经过 <仓库名>:<标签> 的格式来指定具体是这个软件哪一个版本的镜像。若是不给出标签,将以 latest 做为默认标签。docker
以 Ubuntu 镜像 为例,ubuntu 是仓库的名字,其内包含有不一样的版本标签,如,14.04, 16.04。咱们能够经过 ubuntu:14.04,或者 ubuntu:16.04 来具体指定所需哪一个版本的镜像。若是忽略了标签,好比 ubuntu,那将视为 ubuntu:latest。ubuntu
仓库名常常以 两段式路径 形式出现,好比 jwilder/nginx-proxy,前者每每意味着 Docker Registry 多用户环境下的用户名,后者则每每是对应的软件名。但这并不是绝对,取决于所使用的具体 Docker Registry 的软件或服务。服务器
最常使用的 Registry 公开服务是官方的 Docker Hub,这也是默认的 Registry,并拥有大量的高质量的官方镜像。curl
注册工具
能够在 https://cloud.docker.com 免费注册一个 Docker 帐号。网站
登陆ui
能够经过执行 docker login 命令交互式的输入用户名及密码来完成在命令行界面登陆Docker Hub。能够经过 docker logout 退出登陆。url
拉取镜像
能够经过 docker search 命令来查找官方仓库中的镜像,并利用 docker pull 命令来将它下载到本地。命令行
推送镜像
用户也能够在登陆后经过 docker push 命令来将本身的镜像推送到 Docker Hub。
自动建立
自动建立(Automated Builds)功能对于须要常常升级镜像内程序来讲,十分方便。有时候,用户建立了镜像,安装了某个软件,若是软件发布新版本则须要手动更新镜像。而自动建立容许用户经过 Docker Hub 指定跟踪一个目标网站(目前支持 GitHub 或 BitBucket)上的项目,一旦项目发生新的提交或者建立新的标签(tag),Docker Hub 会自动构建镜像并推送到 Docker Hub 中。要配置自动建立,包括以下的步骤:
以后,能够在 Docker Hub 的 自动建立页面 中跟踪每次建立的状态。
除了使用公开服务外,用户还能够在本地搭建私有 Docker Registry。Docker 官方提供了 Docker Registry 镜像,能够直接使用作为私有 Registry 服务。
docker-registry 是官方提供的工具,能够用于构建私有的镜像仓库。如下内容基于dockerregistry v2.x 版本。
安装运行 docker-registry
能够经过获取官方 registry 镜像来运行
$ docker run -d -p 5000:5000 --restart=always --name registry registry
这将使用官方的 registry 镜像来启动私有仓库。默认状况下,仓库会被建立在容器的/var/lib/registry 目录下。能够经过 -v 参数来将镜像文件存放在本地的指定路径。
$ docker run -d \ -p 5000:5000 \ -v /opt/data/registry:/var/lib/registry \ registry
在私有仓库上传、搜索、下载镜像
建立好私有仓库以后,就能够使用 docker tag 来标记一个镜像,而后推送它到仓库。例如私有仓库地址为 127.0.0.1:5000 。
先在本机查看已有的镜像。
$ docker image ls REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB
使用 docker tag 将 ubuntu:latest 这个镜像标记为 127.0.0.1:5000/ubuntu:latest 。
格式为 docker tag IMAGE[:TAG] [REGISTRY_HOST[:REGISTRY_PORT]/]REPOSITORY[:TAG]
$ docker tag ubuntu:latest 127.0.0.1:5000/ubuntu:latest $ docker image ls REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE ubuntu latest ba5877dc9bec 6 weeks ago 192.7 MB 127.0.0.1:5000/ubuntu:latest latest ba5877dc9bec 6 weeks ago 192.7 MB
使用 docker push 上传标记的镜像。
$ docker push 127.0.0.1:5000/ubuntu:latest The push refers to repository [127.0.0.1:5000/ubuntu] 373a30c24545: Pushed a9148f5200b0: Pushed cdd3de0940ab: Pushed fc56279bbb33: Pushed b38367233d37: Pushed 2aebd096e0e2: Pushed latest: digest: sha256:fe4277621f10b5026266932ddf760f5a756d2facd505a94d2da12f4f52f71f5 a size: 1568
用 curl 查看仓库中的镜像。
$ curl 127.0.0.1:5000/v2/_catalog {"repositories":["ubuntu"]}
这里能够看到 {"repositories":["ubuntu"]} ,代表镜像已经被成功上传了。
先删除已有镜像,再尝试从私有仓库中下载这个镜像。
$ docker image rm 127.0.0.1:5000/ubuntu:latest $ docker pull 127.0.0.1:5000/ubuntu:latest Pulling repository 127.0.0.1:5000/ubuntu:latest ba5877dc9bec: Download complete 511136ea3c5a: Download complete 9bad880da3d2: Download complete 25f11f5fb0cb: Download complete ebc34468f71d: Download complete 2318d26665ef: Download complete
(本文出自itcsdaixie.com,转载请注明出处)