仓库(Repository)是集中存放镜像的地方。
#1.常用官方仓库:Docker Hub,目前 Docker 官方维护了一个公共仓库 Docker Hub。
#2.常用私有仓库:Registry、Harbor
一、Docker公有仓库登录
大部分需求都可以通过在 Docker Hub 中直接下载镜像来实现。
#1.注册
在 https://hub.docker.com 免费注册一个 Docker 账号。
#2.登录和退出
登录需要输入用户名和密码,登录成功后,我们就可以从 docker hub 上拉取自己账号下的全部镜像。
[root@docker100 ~]# docker login
#3.退出 docker hub
[root@docker100 ~]# docker logout
二、Docker公有仓库常用命令
#1.搜索镜像
[root@docker100 ~]# docker search ubuntu:18.04
#2.拉取镜像
[root@docker100 ~]# docker pull ubuntu:18.04
用户登录后,可以通过 docker push 命令将自己的镜像推送到 Docker Hub。
以下命令中的 username 请替换为你的 Docker 账号用户名。
#3.打上镜像tag
[root@docker100 ~]# docker tag ubuntu:18.04 jhno1/ubuntu:18.04
#4.查看镜像
[root@docker100 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
jhno1/ubuntu 18.04 54919e10a95d 13 days ago 63.1MB
ubuntu 18.04 54919e10a95d 13 days ago 63.1MB
#5.推送镜像到Docker Hub
[root@docker100 ~]# docker push jhno1/ubuntu:18.04
#6.再次搜索镜像
[root@docker100 ~]# docker search jhno1/ubuntu
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
username/ubuntu
三、Registry私有镜像仓库搭建
1.下载Registry镜像
[root@docker100 ~]# docker pull registry
2.运行Registry镜像
docker run -d -v /data/images/registry:/var/lib/registry
-p 5000:5000
--restart=always
--name private-registry registry
3.查看容器
[root@docker100 ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a0e2c2189ce7 registry "/entrypoint.sh /etc…" 5 seconds ago Up 3 seconds 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp private-registry
4.查看镜像仓库中的所有镜像
[root@docker100 ~]# curl localhost:5000/v2/_catalog
{"repositories":[]}
这里返回的json数据代表暂无任何仓库,因为我们还没有上传任何镜像。
四、修改Docker配置
[root@docker100 ~]# vim /etc/docker/daemon.json
{
"registry-mirrors": ["https://8mh75mhz.mirror.aliyuncs.com"],
"insecure-registries" : [ "10.0.0.100:5000" ]
}
五、重启Docker
[root@docker100 ~]# systemctl restart docker.service
六、上传镜像
#1.给镜像打上tag
[root@docker100 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest ad4c705f24d3 3 days ago 133MB
registry latest b2cb11db9d3d 12 days ago 26.2MB
centos latest 300e315adb2f 9 months ago 209MB
[root@docker100 ~]# docker tag centos:latest 10.0.0.100:5000/jhno1/centos8.6
#2.正式上传镜像到服务端镜像仓库
[root@docker100 ~]# docker push 10.0.0.100:5000/jhno1/centos8.6
Using default tag: latest
The push refers to repository [10.0.0.100:5000/jhno1/centos8.6]
七、验证镜像仓库的内容
[root@docker100 ~]# curl localhost:5000/v2/_catalog
curl localhost:5000/v2/_catalog
{"repositories":["jhno1/centos8.6"]}
八、下载镜像
#1.拉取镜像
[root@docker100 ~]# docker pull 10.0.0.100:5000/jhno1/centos8.6
#2.想要知道要下载的镜像都有哪些tag(或版本),可以通过下面这个api来获取:
[root@docker100 ~]# curl http://10.0.0.100:5000/v2/jhno1/centos8.6/tags/list
{"name":"jhno1/centos8.6","tags":["latest"]}