Docker 仓库
介绍
Docker 仓库中存储着各种 Docker 镜像,我们可以从仓库中下载镜像到本地,也可以从本地上传镜像到仓库。常见仓库:
下载镜像:
- 登录仓库
- 搜索镜像
-
docker pull
下载镜像
上传镜像:
- 登录仓库
- 创建 Docker Repository
-
docker login
登录 Docker Registry -
docker tag
重命名本地镜像 -
docker push
上传镜像
Docker Hub
创建仓库
登录 Docker Hub,点击 Create a Repository 按钮创建仓库。
你的 Docker Hub 账号名称会作为你创建的仓库的命名空间,在同一个命名空间下,仓库不能重名。
如下图所示,我有三个仓库,三个仓库都处于 yumanli 命名空间下。
上传镜像
登录 Docker Hub Registry,用于登录的用户名为 Docker Hub 账号全名,密码为 Docker Hub 账号密码。
docker login
在将本地镜像上传到 Docker Hub 之前,你必须首先使用你的 Docker Hub 账号名称和你在 Docker Hub 上创建的仓库名称为本地镜像命名。Docker Hub 账号、仓库和镜像之间的关系如下:
- 账号名称:yumanli
- 仓库名称:yumanli/nodejs
- 镜像名称:yumanli/nodejs:latest
你可以使用以下方法来为本地镜像命名:
-
当你创建本地镜像的时候,使用
docker build -t <hub-user>/<repo-name>[:<tag>] PATH
$ vi Dockerfile FROM centos RUN yum -y install nodejs $ docker build -t yumanli/nodejs:latest . $ docker push yumanli/nodejs:latest
-
修改已经存在的本地镜像名称,使用
docker tag <existing-image> <hub-user>/<repo-name>[:<tag>]
$ docker pull nodejs $ docker tag nodejs yumanli/nodejs:latest $ docker push yumanli/nodejs:latest
你可以上传多个镜像到同一个仓库,通过在镜像名后面添加 :tag
来区分镜像,如果没有指定 tag,则 tag 默认为 latest。
- 账号名称:yumanli
- 仓库名称:yumanli/test
- 镜像名称:yumanli/test:hello-world yumanli/test:good-morning
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
yumanli/test hello-world fce289e99eb9 13 months ago 1.84kB
yumanli/test good-morning fce289e99eb9 13 months ago 1.84kB
$ docker push yumanli/test:hello-world
$ docker push yumanli/test:good-morning
下载镜像
你可以通过 docker search
命令搜索 Docker Hub 上的镜像。
$ docker search centos
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 1034 [OK]
ansible/centos7-ansible Ansible on Centos7 43 [OK]
tutum/centos Centos image with SSH access. For the root... 13 [OK]
...
你可以搜到 centos
和 ansible/centos7-ansible
两个结果。第一个结果 centos
没有前缀,表明该镜像来自 Docker 的官方仓库。他是第二个结果 ansible/centos7-ansible
有前缀,表明该镜像来自 ansible 用户的 centos7-ansible 仓库。
当你找到了你想要的镜像后,便可以使用 docker pull
命令下载镜像。
$ docker pull centos
latest: Pulling from centos
6941bfcbbfca: Pull complete
41459f052977: Pull complete
fd44297e2ddb: Already exists
centos:latest: The image you are pulling has been verified. Important: image verification is a tech preview feature and should not be relied on to provide security.
Digest: sha256:d601d3b928eb2954653c59e65862aabb31edefa868bd5148a41fa45004c12288
Status: Downloaded newer image for centos:latest
阿里云容器镜像服务
创建仓库
登录 阿里云容器镜像服务
创建命名空间
创建镜像仓库
选择代码源为本地仓库
上传镜像
登录阿里云 Docker Registry,用于登录的用户名为阿里云账号全名,密码为开通服务时设置的密码。可以在访问凭证页面修改凭证密码。
docker login --username=阿里云账号 registry.cn-beijing.aliyuncs.com
在将本地镜像上传到阿里云之前,你必须使用 docker tag
命令重命名镜像,新的镜像名称需要包括专有网络地址、命名空间和仓库名称。
docker tag [ImageId] registry.cn-beijing.aliyuncs.com/yumanli/test:[镜像版本号]
上传镜像
docker push registry.cn-beijing.aliyuncs.com/yumanli/test:[镜像版本号]