Docker镜像仓库Harbor离线部署

Docker容器应用的开发和运行离不开可靠的镜像管理,虽然Docker官方也提供了公共的镜像仓库,但是从安全和效率等方面考虑,部署我们私有环境内的Registry也是非常必要的。

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

Harbor安装

前提准备:需要事先安装好docker,可参考Docker离线部署

1、安装docker-compose

#Harbor的部署需要事先安装好docker-compose

GitHub的docker-compose下载地址:https://github.com/docker/compose/releases

有网的情况可以直接执行以下命令下载,无网就通过上方地址手动下载下来放置/usr/local/bin/下并授予执行权限即可

curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

chmod +x /usr/local/bin/docker-compose

#检查是否安装成功

docker-compose --version

2、解压安装包

tar -zxvf harbor-offline-installer-v1.5.3.tgz -C /usr/local

3、修改Harbor配置文件

cd /usr/local/harbor

vi docker-compose.yml

proxy:
    image: vmware/nginx-photon:v1.5.3
    container_name: nginx
    restart: always
    volumes:
      - ./common/config/nginx:/etc/nginx:z
    networks:
      - harbor
    ports:
      #修改该项,默认对外映射为80端口,在此我改成了5000
      - 5000:80
      - 443:443
      - 4443:4443

vi harbor.cfg

#修改为自己本机IP地址
hostname = 192.168.36.151

4、安装启动

./install.sh

5、验证

访问http://192.168.36.151:5000即可(自己的设备IP地址)

默认密码:admin/Harbor12345

在配置文件harbor.cfg下有说明,可以进行修改

harbor_admin_password = Harbor12345

如果修改了harbor配置文件,需要重启

docker-compose down

./prepare 

 docker-compose up -d

6、测试连通性

#使用docker访问下harbor看下是否可以成功连接

docker login http:192.168.36.151:5000

Username: admin
Password: Harbor
Error response from daemon: Get https://http:192.168.36.151:5000/v1/users/: dial tcp: too many colons in address http:192.168.36.151:5000 

其实出现以上错误正常的,因为docker默认是https协议的,而harbor是http

7、Harbor的https协议配置

vi harbor.cfg

#修改以下配置
ui_url_protocol = https ssl_cert = /usr/local/harbor/data/cert/server.crt ssl_cert_key = /usr/local/harbor/data/cert/server.key

mkdir -p /usr/local/harbor/data/cert/

配置秘钥证书

openssl genrsa -des3 -out server.key 2048

Enter pass phrase for server.key:1234567                    #输入密码
Verifying - Enter pass phrase for server.key:1234567        #输入密码

openssl req -new -key server.key -out server.csr

Enter pass phrase for server.key:1234567                    #上方所创建的密码
Country Name (2 letter code) [XX]:CN                        #国家
State or Province Name (full name) []:BJ                    #省
Locality Name (eg, city) [Default City]:BJ                  #城市
以下可以都为空
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:

cp server.key server.key.org

#退掉密码

openssl rsa -in server.key.org -out server.key

Enter pass phrase for server.key.org:1234567                #输入上方密码

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

chmod a+x server.crt server.csr server.key

mv server.crt server.key server.csr /usr/local/harbor/data/cert/

8、重启harbor

docker-compose down

./prepare

docker-compose up -d

此时再次访问harbor页面就会自动走https

但是此时其实docker还是无法连接harbor的

9、配置信任 

vi /etc/systemd/system/docker.service

#修改以下项,Harbor的地址
ExecStart=/usr/bin/dockerd --insecure-registry 192.168.36.151 

10、重启Docker

systemctl daemon-reload

systemctl restart docker.service

#再次使用docker访问下harbor看下是否可以成功连接,Login Succeeded即为成功

docker login 192.168.36.151

Username: admin
Password: Harbor12345
Login Succeeded

Harbor的使用

#首先我们得需要拥有一个镜像,这里,我本地有一个tomcat镜像

docker images

REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
tomcat                              latest              c0e850d7b9bb        12 months ago       667 MB

#需要先给现有镜像打个tag

docker tag tomcat:latest 192.168.36.151/library/tomcat:latest

docker images

REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
192.168.36.151/library/tomcat       latest              c0e850d7b9bb        12 months ago       667 MB
tomcat                              latest              c0e850d7b9bb        12 months ago       667 MB

#上传镜像

docker push 192.168.36.151/library/tomcat:latest

#去Habor页面上查看

 #从Harbor上拉取镜像

docker pull 192.168.36.151/library/tomcat:latest

若我们的镜像是私有(private)权限的话,则需要docker login认证后才可以进行push和pull操作  

 

posted @ 2022-04-28 09:32  RFAA  阅读(953)  评论(0编辑  收藏  举报