【容器----Docker】Docker Registry私人仓库搭建+Harbor的使用

基本环境

系统:Cent OS7.5

Docker:18.09.6

一、docker-registry的部署 

查看docker-registry版本信息

yum info docker-registry

安装docker-registry

yum -y install docker-registry

查看安装后docker-distribution的的配置文件位置

rpm -ql docker-distribution

修改配置文件

vim /etc/docker-distribution/registry/config.yml
version: 0.1
log:
  fields:
    service: registry
storage:
    cache:
        layerinfo: inmemory
    filesystem:
        rootdirectory: /opt/module/docker-registry
http:
    addr: :5000

 启动服务

systemctl start docker-distribution
systemctl enable docker-distribution

这样我们就装好了docker-registry

二、测试

把node3机器上的镜像推到docker-registry机器上

[root@k8s-node3 ~]# docker images
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
mysql   

准备把node3上的mysql:5.7.22镜像推到docker-registry机器上,需要先给node3机器上的镜像mysql打标签

docker tag mysql:5.7.22 docker-registry:5000/mysql:5.7.22
[root@k8s-node3 ~]#  docker images
REPOSITORY                                    TAG                 IMAGE ID            CREATED             SIZE
docker-registry.com:5000/mysql                5.7.22              6bb891430fb6        3 months ago        372 MB

注意,docker-registry是主机名,要用hosts文件解析到对应的registryip地址上。

[root@k8s-node3 ~]# docker push docker-registry:5000/mysql:5.7.22
The push refers to a repository [docker-registry:5000/mysql]
Get https://docker-registry:5000/v1/_ping: http: server gave HTTP response to HTTPS client

注意:如果上面写作docker-registry:5000/mysql,说明推送的是mysql顶级仓库下所有的镜像版本。

    上面看到,我们docker push 时报错了,这是因为docker 客户端默认使用的https形式的,但是dockr registry server端是http形式的。 

    如果我们实在就用http的,那就需要对docker 客户端做如下修改: 

[root@k8s-node3 ~]# vim /etc/docker/daemon.json 
{
"registry-mirrors": ["https://registry.docker-cn.com"],
"insecure-registries": ["docker-registry:5000"]
}

注意,上面的dokcer-registry是主机名。 

[root@k8s-node3 ~]# systemctl  restart docker

然后再推就能推上去了。 

[root@k8s-node3 ~]# docker push docker-registry:5000/mysql:5.7.22

The push refers to a repository [docker-registry:5000/mysql]
a968f24d4187: Pushed 
f8cb294d5d80: Pushed 
489bddb9c55e: Pushed 
22b402e93939: Pushed 
8aeebb3964c1: Pushed 
94f8d8f5acbf: Pushed 
c0c26734fb83: Pushed 
4801a487d51a: Pushed 
aae63f31dee9: Pushed 
6f8d38b0e2b6: Pushed 
cdb3f9544e4c: Pushed 

5.7.22: digest: sha256:1d3119703eb04855c971a9ec24646184444fa1bd889b201de3ce8904c35eb627 size: 2621

然后,我们登录到docker registry服务器,就能看到推送过来的镜像了: 

[root@docker-registry ~]# ll /var/lib/registry/docker/registry/v2/repositories/mysql/

total 0

drwxr-xr-x. 3 root root 20 Oct 25 05:13 _layers
drwxr-xr-x. 4 root root 35 Oct 25 05:14 _manifests
drwxr-xr-x. 2 root root  6 Oct 25 05:14 _uploads

    下面我们就让其他服务器从docker-registry服务器上下载镜像。 

    首先也需要在其他服务器上更改docker配置,加个"insecure-registries"参数,如下:

[root@k8s-node1 ~]# cat /etc/docker/daemon.json 
{
    "registry-mirrors": ["https://registry.docker-cn.com"],
    "insecure-registries": ["docker-registry:5000"]
}
[root@k8s-node1 ~]# systemctl restart docker

    然后在这个机器上下载docker-registry机器上的镜像: 

[root@k8s-node1 ~]# docker pull docker-registry:5000/mysql:5.7.22

5.7.22: Pulling from mysql

2da35ff30a7d: Pull complete 
46459f75a599: Pull complete 
fe071c86fe94: Pull complete 
75457c650197: Pull complete 
6506db22c932: Pull complete 
a6e0a2acd728: Pull complete 
3182738b1913: Pull complete 
ea75bfdf07be: Pull complete 
6b85e8810885: Pull complete 
5dca51ac89bd: Pull complete 
b3400d337f49: Pull complete 

Digest: sha256:1d3119703eb04855c971a9ec24646184444fa1bd889b201de3ce8904c35eb627

Status: Downloaded newer image for docker-registry:5000/mysql:5.7.22
[root@k8s-node1 ~]# docker images

REPOSITORY                                                       TAG                 IMAGE ID            CREATED             SIZE
tomcat                                                           latest              05af71dd9251        8 days ago          463 MB
docker-registry:5000/mysql                                       5.7.22              6bb891430fb6        3 months ago        372 MB

看到下载的镜像就是我们私有仓库里面的。

三、harbor的部署

我们看到上面搭建的docker私有仓库是命令行界面的,很丑陋。不过,好消息是,目前有个开源项目叫harbor,是在docker registry基础上做的,并带了个漂亮的web界面,还支持冗余等。是个非常不错的项目。另外,CNCF组织也非常青睐harbor,可见harbor的前景非常不错。 

可是,harbor的部署是非常麻烦的。还好,现在可以用docker compose(单机编排工具)来做harbor的安装。 

下面我们准备安装harbor试一下。 

官方项目地址是: https://github.com/goharbor/harbor

官方安装文档:https://github.com/goharbor/harbor/blob/master/docs/installation_guide.md

harbor官方要求配置为: 

SoftwareVersionDescription
Pythonversion 2.7 or higherNote that you may have to install Python on Linux distributions (Gentoo, Arch) that do not come with a Python interpreter installed by default
Docker engineversion 1.10 or higherFor installation instructions, please refer to:  https://docs.docker.com/engine/installation/
Docker Composeversion 1.6.0 or higherFor installation instructions, please refer to:  https://docs.docker.com/compose/install/
Openssllatest is preferredGenerate certificate and keys for Harbor

先安装epel源

cd /etc/yum.repos.d/
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

 看epel里面的docker-compose版本情况

yum info docker-compose

harbor下载地址:https://github.com/goharbor/harbor/releases

下载tar包后上传到/opt/software目录下,解压后移动到/opt/module目录下,然后进入harbor目录

修改harbor.yml

port: 20801
harbor_admin_password: 123456

其他默认即可

修改docker-compose.yml

porxy:
    ports:
      - 20801:80

停止docker-distribution

systemctl stop docker-distribution

安装docker-compose 

yum install docker-compose

安装harbor

./prepare
./install.sh

备注:

harbor停止命令

docker-compose stop
或者
docker-compose down -v

重启

docker-compose start
或者
docker-compose up -d
或者
./install.sh

启动后访问ip:20801,用户名admin,密码123456

 

四、Harbor推送镜像

推送镜像首先解决Https的问题,

 vim /opt/module/harbor/docker-compose.yml

 修改daemon.json,增加配置

vim /etc/docker/daemon.json
"insecure-registries": [
        "xxx.xxx.xxx.xxx"
    ]

修改docker.service,注释掉默认的ExecStart一行,并新增值

vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd
                |--insecure-registry=10.19.46.15

重新加载docker.service,并重启docker

systemctl daemon-reload
systemctl restart docker

然后用另一台机器上的docker登录,使用本机无法登录

 docker login xxx.xxx.xxx.xxx:20801

 

push镜像,在harbor页面有提示,进入到新增的dev项目中

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Docker Harbor是一个开源的企业级容器镜像仓库,它可以帮助用户管理和分发Docker镜像。通过搭建Docker Harbor仓库,用户可以自己创建和维护私有的镜像仓库,并使用https认证方式进行安全访问。 要搭建Docker Harbor仓库,首先需要下载和安装Docker Compose工具。可以使用以下命令下载和安装Docker Compose: ``` curl -L https://github.com/docker/compose/releases/download/1.21.1/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` 接着,可以使用以下命令检查Docker Compose是否安装成功: ``` docker-compose -v ``` 下载完Docker Compose后,需要维护和管理Harbor仓库。首先,需要下载registry镜像并创建本地私有仓库。可以使用以下命令下载registry镜像: ``` docker pull registry ``` 接着,在daemon.json文件中添加私有镜像仓库地址。可以使用以下命令编辑daemon.json文件: ``` vim /etc/docker/daemon.json ``` 并在文件中添加如下内容: ``` { "registry-mirrors": ["https://3c7tpzyf.mirror.aliyuncs.com"], "insecure-registries": ["192.168.122.10:5000"] } ``` 然后,重启Docker服务以使更改生效: ``` systemctl restart docker.service ``` 最后,使用以下命令运行registry容器来启动私有仓库: ``` docker run -itd -v /data/registry:/var/lib/registry -p 5000:5000 --restart=always --name registry registry:latest ``` 以上就是搭建Docker Harbor仓库的过程。通过这个仓库,您可以方便地管理和分发Docker镜像。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [docker-harbor2.4.2-https私有仓库-有验证和web](https://download.csdn.net/download/qq_34953582/87952076)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Docker私有仓库Harbor](https://blog.csdn.net/weixin_48861962/article/details/121726836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值