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
➜ ~
参考链接
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。