# Docker Harbor ## install [harbor](https://github.com/goharbor/harbor) (Github) * install_1 ```bash= # 這邊安裝目前最新版, 依照所需選擇安奘版本 [user@docker1 harbor]$ wget https://github.com/goharbor/harbor/releases/download/v2.9.1/harbor-online-installer-v2.9.1.tgz # 解壓縮 [user@docker1 ~]$ tar xzvf harbor-online-installer-v2.9.1.tgz ``` * copy ```bash= # 先複製檔案, 因為後面安裝是認 ".yml" 檔 [user@docker1 harbor]$ cp ./harbor.yml.tmpl ./harbor.yml ``` * edit **1. 至少要改 hostname** **2. https的部分全部註解** ```bash= [user@docker1 harbor]$ vim harbor.yml hostname: 192.168.68.201 # hostname 可以設IP, 也可以設主機名稱 harbor_admin_password: admin # 管理者密碼 #https: # https port for harbor, default is 443 #port: 443 # The path of cert and key files for nginx #certificate: /your/certificate/path #private_key: /your/private/key/path ``` 其他YML相關設定參考: [Configure the Harbor YML File](https://goharbor.io/docs/2.9.0/install-config/configure-yml-file/) * install_2 ```bash= [user@docker1 harbor]$ sudo ./install.sh ...waiting::: ...waiting::: ...waiting::: # 成功提示 ✔ ----Harbor has been installed and started successfully.---- # 完成後會有以下東西 [user@docker1 harbor]$ ls common common.sh docker-compose.yml harbor.yml harbor.yml.tmpl install.sh LICENSE prepare ``` ## Connect * browser input hostIP ![image](https://hackmd.io/_uploads/Bk7UwNyS6.png) --- ## test * create user (簡單建立兩個用戶) ![image](https://hackmd.io/_uploads/H1p89UJra.png) * create project (如果用管理員身分創建可能會有權限不足無法上傳的問題) ![image](https://hackmd.io/_uploads/BJxn9LJHa.png) * docker images 上傳下載時格式為: server/project/tag **docker2 push & docker3 pull** * 啟動 docker_harbor (docker1) ```bash= [user@docker1 harbor]$ sudo docker-compose up -d [+] Running 10/10 ✔ Network harbor_harbor Created 0.1s ✔ Container harbor-log Started 0.0s ✔ Container redis Started 0.1s ✔ Container harbor-db Started 0.1s ✔ Container registryctl Started 0.1s ✔ Container registry Started 0.0s ✔ Container harbor-portal Started 0.1s ✔ Container harbor-core Started 0.0s ✔ Container harbor-jobservice Started 0.0s ✔ Container nginx Started 0.0s ``` * push * edit ```bash= [user@docker2 ~]$ sudo vim /etc/docker/daemon.json [user@docker2 ~]$ cat /etc/docker/daemon.json { "insecure-registries":["192.168.68.201"] } ``` * login ```bash= [user@docker2 ~]$ sudo docker login -u Tom -p Tom12345 192.168.68.201 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded ``` * push ```bash= [user@docker2 ~]$ sudo docker push 192.168.68.201/test_docker_harbor/busybox:harbor The push refers to repository [192.168.68.201/test_docker_harbor/busybox] 3d24ee258efc: Pushed harbor: digest: sha256:023917ec6a886d0e8e15f28fb543515a5fcd8d938edb091e8147db4efed388ee size: 528 ``` ![image](https://hackmd.io/_uploads/BJHG9LJrT.png) * pull * login ```bash= [user@docker3 ~]$ sudo docker login -u Marry -p Marry123 192.168.68.201 WARNING! Using --password via the CLI is insecure. Use --password-stdin. WARNING! Your password will be stored unencrypted in /root/.docker/config.json. Configure a credential helper to remove this warning. See https://docs.docker.com/engine/reference/commandline/login/#credentials-store Login Succeeded ``` * pull ```bash= [user@docker3 ~]$ sudo docker pull 192.168.68.201/test_docker_harbor/busybox:harbor harbor: Pulling from test_docker_harbor/busybox 3f4d90098f5b: Pull complete Digest: sha256:023917ec6a886d0e8e15f28fb543515a5fcd8d938edb091e8147db4efed388ee Status: Downloaded newer image for 192.168.68.201/test_docker_harbor/busybox:harbor 192.168.68.201/test_docker_harbor/busybox:harbor # check images [user@docker3 ~]$ sudo docker images REPOSITORY TAG IMAGE ID CREATED SIZE 192.168.68.201/test_docker_harbor/busybox harbor a416a98b71e2 4 months ago 4.26MB ``` :::info 如果在創建專案時有設"公開", 不用登入也可以下載 :::