14 仓库
仓库(Repository)是集中存放镜像的地方。
一个容易与之混淆的概念是注册服务器(Registry)。实际上注册服务器是存放仓库的具体服务器,每个服务器上可以有多个仓库,而每个仓库下面有多个镜像。
从这方面来说,仓库可以被认为是一个具体的项目或目录。例如对于仓库地址hub.docker.com/ubuntu来说,hub.docker.com是注册服务器地址,ubuntu是仓库名。
仓库又分公共仓库和私有仓库,下面我们将分别学习:
- 如何使用DockerHub官方仓库进行登录、下载等基本操作
- 创建和使用私有仓库的基本操作。
14.1 Docker Hub
目前Docker官方维护了一个公共仓库https/hub.dockercom,其中已经包括15000多个的镜像。大部分需求都可以通过在DockerHub中直接下载镜像来实现。
登录可以通过执行docker login
命令来输人用户名、密码和邮箱来完成注册和登录。
注册成功后,本地用户目录的.dockercfg中将保存用户的认证信息。
基本操作
用户无需登录即可通过docker search
命令来查找官方仓库中的镜像,并利用Docker pull
命令来将他下载到本地。
14.1.1 注册用户
https://hub.docker.com 上注册用户
如下图选中部分
14.1.2 登录
使用docker login
命令登录
14.1.3 推送到Docker Hub
我们可以在登录后通过Docker Push 命令将本地镜像推送到Docker Hub。具体如下:
打标签
docker tag redis:latest guodocker/redis888:v8
注意:标签要以你的登录网站的docker ID 开始加斜线,比如,我的dockerId 为 guodocker
推送
docker push guodocker/redis888:v8
上传后登陆网站dockerhub
如果想删除,参照下图:
14.2 创建和使用私有仓库
14.2.1到官网上搜到registry
14.2.2 拉取镜像
docker pull registry
14.2.3 启动容器
docker run -d -p 5000:5000 registry
14.2.4 docker tag 镜像id 域名或者ip:端口/仓库名:tag名
docker tag httpd 192.168.10.7:5000/httpd:v888
192.168.10.7 作为注册中心
192.168.10.10 开发的机器
14.2.5 常见问题
1.如果出现客户端连接超时(阿里云或者其他云服务器)
1. 需要打开防火墙
2. 需要放开对应端口(安全组添加)
2.其他问题
参照官方网站:https://docs.docker.com/registry/insecure/
解决办法,上传客户端比如(192.168.10.10)修改docker的配置:
vim /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"], ## 请注意这是json格式,如果添加一行这行末需要添加,号
"insecure-registries": ["121.40.96.239:5000"]
}
然后重启docker引擎
# centos6
service docker restart
# centos7
systemctl restart docker
然后push
Push 成功后可以通过http api 来访问仓库
curl http://192.168.10.7:5000/v2/_catalog