# 架設私有 Docker 倉庫
在用wsl直上一次Harbor
由於呢,不想再開VM 所以也找不到有 wsl 架設的目前只是測試用,不過可以順利RUN 起 WSL
# 安裝 harbor
https://github.com/goharbor/harbor/releases
目前是下載

>wget https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz
>
解壓縮
> tar xvf https://github.com/goharbor/harbor/releases/download/v2.0.1/harbor-offline-installer-v2.0.1.tgz
切至harbor 目錄
>修改裡面的harbor yml 檔案
>
# add harbor.yml
```yml
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: activate.adobe.com << 目前的 位於 etc/hosts 裡面的 這個代表指向 hostname
# http related config
http:
# port for http, default is 80. If https enabled, this port will redirect to https port
port: 80
# https related config
https:
# https port for harbor, default is 443
port: 443
# The path of cert and key files for nginx
certificate: /home/x213212/harbor/ca.crt
private_key: /home/x213212/harbor/ca.key
```
# 產生憑證
https://ivanzz1001.github.io/records/post/docker/2018/04/09/docker-harbor-https
> openssl req \
-newkey rsa:4096 -nodes -sha256 -keyout ca.key \
-x509 -days 365 -out ca.crt
>
# 開始安裝
> sudo ./install.sh
>
這邊可以發現


# 修改 hostname
因為 docker desktop 預設 ip 是浮動的,我是不曉得有沒有其他方式可以固定下來應該有 目前只應急

這邊是我的可以看到根本不行,我之前修改過一次存檔後,他下一次把我覆蓋掉所以測試用途我直接使用 activate.adobe.com 去做測試
# 修改配置 vim /etc/docker/daemon.json
這時候你會發現 外面的 docker desktop 掛掉了
可能是腳本那邊有複寫到 docker desktop daemon
查閱官網技術文件說 docker desktop 沒有 daemon (??)
> sudo vim /etc/docker/daemon.json
>

可以看到中間那個insecure-registries 我把他指向 activate.adobe.com ,正常來說 ip 也是可以它的用意好像是
>The IP address or hostname to access admin UI and registry service.
>DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
>
可能會被其他使用者訪問的意思 ,這邊我們只有我所以指定自己
> {
> "registry-mirrors": [],
> "insecure-registries": [
> "activate.adobe.com" ],
> "debug": true,
> "experimental": false
> }
# WSL2: docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.
>sudo mkdir /sys/fs/cgroup/systemd
sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
https://github.com/microsoft/WSL/issues/4189
# docker 重啟 vim /etc/docker/daemon.json
因為我們的 docker 跑去讀
> sudo dockerd &
>

# 重新執行配置檔 vim /etc/docker/daemon.json
預設docker desktop 是沒有的所以
因為我們的docker 掛掉了 ,所以我們乾脆重裝一次看正不正常
> sudo ./install.sh
這邊我當初怕麻煩所以又重裝一下
這時候可以看到剛剛那個畫面

成功我們來瀏覽一下
# 進入 harbor
這邊可以看到我還是用 ip 去做瀏覽,不知道為什麼我們的 https://activate.adobe.com/ 並沒有生效

進入後我們來申請一下腳色權限

申請一組 管理員帳號 等等 docker login 要用

# docker login


我剛剛已經登入過了
>docker login activate.adobe.com
>第一次登入 要你輸入 username 和 password
>
# 嘗試推上我們的私有倉庫
這邊要注意我們的project name 很重要


這邊有寫如果要推送 image 到這個 project 要下哪一些指令
Docker Push Command
Tag an image for this project:
>docker tag SOURCE_IMAGE[:TAG] 172.24.232.224/library/REPOSITORY[:TAG]
Push an image to this project:
> docker push 172.24.232.224/library/REPOSITORY[:TAG]
# 推送範例

>docker pull nginx:1.12.1
>docker tag nginx:1.12.1 activate.adobe.com/library/nginx:1.12.1
>docker push activate.adobe.com/library/nginx:1.12.1
>
# received unexpected HTTP status: 500 Internal Server Error
假設我們的insecure-registries 沒有填入我們的正確ip和 hostname 或者是 project name錯誤可能會出現
received unexpected HTTP status: 500 Internal Server Error
# 拉取範例
Pull Image
>docker pull activate.adobe.com/library/nginx:1.12.1
>

假設不想搞東搞西的話 這樣是最好的要回歸最初的 docker 只要

按下去 就好了我們的 docker 配置檔就回歸到最初配置了
# 接入 portainer 看看

> docker container ls 這邊可以看到 我們的 harbor 其實就是 docker-compose
>
我們來安裝
docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /home/Portainer:/data portainer/portainer


可以看到也可以正常使用了