Docker 镜像私服搭建

1,900 阅读3分钟

在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 配置的目录

image.png

迁移 /data 目录。