ကျွန်တော်တို့ ပထမဆုံး Nexus Repository Manger ကို Local မှာပဲ စမ်းမှာ ဖြစ်လို့ docker compose သုံးပြီး run လိုက်ပါမယ်။ Kubernetes ပေါ်မှာဆိုရင် Helm သုံးပြီးပဲ ဖြစ်ဖြစ် VM ပေါ်မှာပဲ ဖြစ်ဖြစ် Deploy လို့လည်း အဆင်ပြေပါတယ်။ Docker compose file ကတော့ ဒီတိုင်းပါပဲ
version: "3"
services:
nexus:
image: sonatype/nexus3
restart: always
volumes:
- "nexus:/sonatype-work"
ports:
- "8081:8081"
- "8088:8088"
volumes:
nexus: {}
Port 8081
က GUI အတွက် ဖြစ်ပြီး 8088
ကိုတော့ Docker Registery အတွက် သုံးပါမယ်။
Docker compose ကို သုံးပြီး Run လိုက်ပါမယ်
docker compose up
server init လုပ်တာ ခဏ စောင့်ရပါမယ် ခဏ စောင့်ပြီးရင် [vm-ip]:8081
ကို ခေါ်ကြည့်မယ်ဆိုရင် UI တက်လာပါလိမ့်မယ်
အဲ့ဒီမှာ generated password ကို ကြည့်ဖို့ အတွက် Docker container ထဲ ဝင်ဖို့ docker exec
သုံးရပါမယ်။
docker exec -it [container ID] cat /nexus-data/admin.password
Password ရလာပါလိမ့်မယ်
username - admin password -
နဲ့ login ဝင်ပြီးသွားရင် လုပ်စရာ ရှိတာ ဆက်လုပ်လို့ရပါပြီ။
ပုံထဲ က ပြထားတဲ့ အတိုင်း ဆက်သွားရင် Docker Proxy Repo ကို ရပါမယ်
အခု တစ်ဆင့်မှာလည်း ပုံမှာ ပြထားတဲ့ အတိုင်းပဲ လိုက်ဖြည့်ပါမယ် Repo Name မှာတော့ အဆင်ပြေတာထည့်လို့ရပါတယ်။
!
Remote storage မှာ https://registry-1.docker.io သုံးပါမယ်။ တစ်ခြား self-hosted register တွေမှာသုံးချင်ရင်လဲ ထိုနည်း အတိုင်းပါပဲ။ HTTP port ကို မထည့်ပါနဲ့ဦး
ခု Docker Group ဆောက်ရပါမယ်။ အောက်က အတိုင်းပဲ စမ်းကြည့်လိုက်ပါ။
Docker Proxy ကို member add ပေးရပါမယ်
အခုဆို စမ်းသုံးလို့ ရပြီထင်ပါတယ်
Local machine ရဲ့ /etc/docker/daemon.json မှာ nexus ရဲ့ docker proxy address ထည့်ကြည့်ပါမယ်
Host's ip address = 13.250.111.79
Docker Group's Port = 8088
အဲ့လို ဖြစ်လို့ အောက်ပါအတိုင်း ထည့်လိုက်ပါတယ်, local DNS ဒါမှ မဟုတ် DNS တစ်ခုခုနဲ့လည်း bind ပြီးမှ ထည့်လို့ရပါတယ်။
example docker-proxy.example.com:8088
vim /etc/docker/daemon.json
{
"insecure-registries": [
"13.250.111.79:8088"
]
}
docker service ကို restart လုပ်ပေးရပါမယ်
sudo systemctl restart docker.service
Nexus UI ထဲကို သွားကြည့်မယ် ဆိုရင် docker image’s cache တွေ ရှိဦးမှာ မဟုတ်ပါဘူး
အဲ့ဒါဆိုရင် အခု docker pull စမ်းကြည့်ကြမယ်
docker pull 13.250.111.79:8088/alpine
### OUTPUT ###
Using default tag: latest
latest: Pulling from alpine
Digest: sha256:c5b1261d6d3e43071626931fc004f70149baeba2c8ec672bd4f27761f8e1ad6b
Status: Image is up to date for 13.250.111.79:8088/alpine:latest
13.250.111.79:8088/alpine:latest
docker images
### Output ###
REPOSITORY TAG IMAGE ID CREATED SIZE
13.250.111.79:8088/alpine latest 05455a08881e 2 months ago 7.38MB
Nexus UI ကို သွားကြည့်လိုက်ရင် အောက်က ပုံအတိုင်း cached ထားတဲ့ registry ကို တွေ့ရမှာ ဖြစ်ပါတယ်
ဒီတစ်ခေါက်တော့ ဒီလောက်ပါပဲ နောင် post တွေကျရင် k8s နဲ့ ဘယ်လို တွဲသုံးသင့်လဲဆိုတာကို ရေးဖို့ စဥ်းစားမိထားပါတယ်။
ကျေးဇူးတင်ပါတယ်