在Docker中,当我们执行 docker pull xxx 的时候 ,它实际上是从 hub.docker.com 这个地址去查找,这就是 Docker 公司为我们提供的公共仓库。在工作中,我们不可能把企业项目 push 到公有仓库进行管理。所以为了更好的管理镜像,Docker 不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。
docker容器镜像仓库分类:
- 公网仓库:docker hub
- 私网仓库: registry、harbor
一、registry镜像仓库
Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了
1.1、 registry 仓库搭建
搭建步骤
- 拉取 registry 容器镜像
- 创建 registry 仓库容器
搭建过程 a、拉取registry容器镜像
docker pull registry
搭建过程 b、根据镜像创建容器
# 创建持久化存储,将容器镜像存储目录/var/lib/registry挂载到本地/opt/myregistry下:
mkdir /opt/myregistry
# 创建 registry 容器:
docker run -d -p 5000:5000 -v /opt/myregistry:/var/lib/registry --restart=always registry:latest
测试容器应用
curl http://127.0.0.1:5000/v2/_catalog
显示仓库中没有任何镜像
1.2、registry仓库应用-上传镜像
上传镜像步骤
- 设置docker仓库为registry本地仓库
- 给需要存储的镜像打tag
- 上传镜像到registry仓库 a、设置docker仓库为registry本地仓库
# 设置docker 守护进程的配置文件 /etc/docker/daemon.json,默认没有该文件
[root@zutuanxue_manage01 ~]# cat /etc/docker/daemon.json
{
"insecure-registries": ["http://192.168.164.248:5000"]
}
# insecure-registries 指定非安全的仓库地址,多个用逗号隔开
# 重启docker生效配置文件
[root@zutuanxue_manage01 ~]# systemctl daemon-reload
[root@zutuanxue_manage01 ~]# systemctl restart docker
b、给需要存储的镜像打tag
docker tag eco-plat-file 192.168.164.248:5000/eco-plat-file:v1
c、上传镜像到registry仓库
docker push 192.168.164.248:5000/eco-plat-file:v1
#查看上传
curl http://192.168.164.248:5000/v2/_catalog
1.3、 registry仓库应用-客户端下载镜像
- 设置客户端docker仓库为registry仓库
- 拉取镜像到本地
# 设置docker 守护进程的配置文件 /etc/docker/daemon.json,默认没有该文件
[root@zutuanxue_manage01 ~]# cat /etc/docker/daemon.json
{
"insecure-registries": ["http://192.168.164.248:5000"]
}
# insecure-registries 指定非安全的仓库地址,多个用逗号隔开
# 重启docker生效配置文件
[root@zutuanxue_manage01 ~]# systemctl daemon-reload
[root@zutuanxue_manage01 ~]# systemctl restart docker
二、harbor私有仓库
Docker harbor有可视化的web管理界面,可以方便管理Docker镜像,又提供了多个项目的镜像权限管理及控制功能
Harbor离线安装包下载地址:github.com/goharbor/ha…
docker-compose版本选择:github.com/docker/comp…
1、harbor下载
wget https://storage.googleapis.com/harbor-releases/release-1.9.0/harbor-offline-installer-v1.9.2-rc1.tgz
2、docker-compose安装
容器编排工具,执行./install.sh时需要。如果不安装,一会重启docker服务,相关的harbor容器会死掉,安装后就会被随着docker重启
curl -L https://github.com/docker/compose/releases/download/1.25.4/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
3、 harbor安装
tar xf harbor-offline-installer-v1.9.2-rc1.tgz
mv harbor /opt/
/opt/harbor/prepare
修改配置文件中的主机名为本机域名或IP
对 harbor.yml 进行修改
./install.sh
默认 admin 用户的密码为 Harbor12345 ,可以在 harbor.cfg 进行修改。登录后如下:
# 镜像打标签
docker tag eco-plat-file 192.168.164.248:78/eco-server/eco-plat-file:v1
# 登录容器
docker login http://192.168.164.248:78/ -u luhui -p Hust4400
# 推送镜像到私服仓库
docker push 192.168.164.248:78/eco-server/eco-plat-file:v1
三、方案选择
如果是在外网部署,选择 harbor 作为docker的镜像私服。 (安全性比较好,有管理页面,便于管理)
如果是内网部署,考虑简易性可以使用 registry (安装部署容易,操作简单,容易上手)
四、数据迁移
1、register 镜像迁移
只需要迁移持久化目录 /opt/myregistry 即可
2、harbor 镜像迁移
找到 harbor.yml 配置文件 找到 data_volume 配置的目录
迁移 /data 目录。