1、Docker 仓库介绍

        Docker 仓库是集中存放 Docker 镜像的地方,Docker Hub 是 Docker 官方维护的一个最大的 Docker Repository,我们的大部分需求都可以直接通过此仓库来获取相应的镜像来满足。

        但并不是说 Docker 的仓库就只有官方这一个,其实还有其他的 Docker ,只是服务商不一样,而且我们也可以自建 Docker 仓库来存放我们自己的镜像。

2、发布镜像到官方仓库

        要将镜像发布至官方的镜像仓库,首先我们需要去 https://hub.docker.com 免费注册一个 Docker 账号,然后回到终端,使用 docker login 来登录到官方的镜像仓库,同样的,也可以使用 docker logout 来退出登录。

        我们平时使用 docker pull 来拉取官方的镜像,要推送镜像到官方仓库,可以在登录的情况下使用 docker push 命令来实现镜像推送。过程如下,其中 username 为你的 Docker Hub 上的账号ID

➜  ~ docker login
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: username
Password:
Login Succeeded
➜  ~
➜  ~ docker images
REPOSITORY           TAG     IMAGE ID       CREATED         SIZE
hello-world          latest  fce289e99eb9   11 months ago   1.84kB
➜  ~
➜  ~ docker tag hello-world:latest username/hello-world:latest
➜  ~ docker images
REPOSITORY           TAG     IMAGE ID        CREATED        SIZE
username/hello-world latest  fce289e99eb9    11 months ago   1.84kB
hello-world          latest  fce289e99eb9    11 months ago   1.84kB
➜  ~
➜  ~ docker push username/hello-world:latest
The push refers to repository [docker.io/username/hello-world]
af0b15c8625b: Mounted from library/hello-world
latest: digest: sha256:92c7f9c92844bbbb5d0a101b22f7c2a7949e40f8ea90c8b3bc396879d95e899a size: 524

        接下来你通过web登入你的 Docker Hub ,就可以看到推送的镜像了。

3、发布镜像到私有仓库

        某些情况下,公司需要将自己的镜像私有化,或者说需要将镜像发布到私有的仓库,这时候就需要我们自建仓库;Docker Hub 为我们提供了一个镜像来实现这个需求,那就是 registry 仓库,其相当于一个没有GUI界面的 Docker Hub 仓库。

3.1、获取镜像

➜  ~ docker pull registry
➜  ~ 
➜  ~ docker images registry
REPOSITORY  TAG        IMAGE ID            CREATED             SIZE
registry    latest     f32a97de94e1        9 months ago        25.8MB

3.2、通过镜像启动容器

➜  ~ docker run --name local_registry -p 5000:5000 --restart always -d registry:latest
b92075ccaf78166e617394adff1281e0dd8540f6160bb66af9e306fe3a2187b4

3.3、发布镜像到本地仓库

➜  ~ docker pull ubuntu
➜  ~ docker tag ubuntu localhost:5000/ubuntu
➜  ~ docker push localhost:5000/ubuntu

3.4、验证发布是否成功

# 通过registry提供的api进行验证
➜  ~ curl http://localhost:5000/v2/_catalog
{"repositories":["nginx"]}

# 通过删除镜像重新pull来验证
➜  ~ docker images
REPOSITORY            TAG      IMAGE ID      CREATED        SIZE
nginx                 latest   231d40e811cd  3 weeks ago    126MB
localhost:5000/nginx  latest   231d40e811cd  3 weeks ago    126MB
registry              latest   f32a97de94e1  9 months ago   25.8MB

➜  ~ docker rmi localhost:5000/nginx
➜  ~ docker images
REPOSITORY            TAG      IMAGE ID      CREATED        SIZE
nginx                 latest   231d40e811cd  3 weeks ago    126MB
registry              latest   f32a97de94e1  9 months ago   25.8MB

➜  ~ docker pull localhost:5000/nginx:latest
➜  ~ docker images
REPOSITORY            TAG      IMAGE ID      CREATED        SIZE
nginx                 latest   231d40e811cd  3 weeks ago    126MB
localhost:5000/nginx  latest   231d40e811cd  3 weeks ago    126MB
registry              latest   f32a97de94e1  9 months ago   25.8MB
➜  ~

参考链接

https://www.runoob.com/docker/docker-repository.html


Liu_wt
35 声望3 粉丝

业余选手,多多指教!