13 เม.ย. 2559

Docker private registry with Portus+Enable SSL(Self sign)

//bash command
#git clone https://github.com/SUSE/Portus.git
#cd Portus
#./compose-setup.sh

ทำตาม Configuring-the-registry โดยเฉพาะ USE SSL -> Skip Remote Checks
//ดู สถานะ container
#docker ps

ให้สนใจที่ docker name registry
*จะสนใจ เฉพาะ Docker ID 16b8f518ca08
จากนั้น หา mount volume ของ container ตัวนี้
//หา Mount point ของ 16b8f518ca08
#docker inspect -f {{.Mounts}} 16b8f518ca08

ได้จุด mount ที่ไป /var/lib/registry  ใน container
/var/lib/docker/volumes/<volumeID>/_data /var/lib/registry
//เข้าไปใน directory
#cd /var/lib/docker/volumes/<volumeID>/_data

สร้าง X.509: Private / Public Key
#openssl genrsa -out privatekey.pem 2048
//CN ให้ตรงกับ Domain ที่ตรงกับ ตอน config registry เช่น abc.def.com:5000
#openssl req -new -x509 -key privatekey.pem -out publickey.cer -days 365
#openssl pkcs12 -export -out public_privatekey.pfx -inkey privatekey.pem -in publickey.cer
จะมีไฟล์ privatekey.pem,publickey.cer อยู่ใน /var/lib/docker/volumes/<volumeID>/_data  เครื่อง host
และ อยู่ใน /var/lib/registry ของ container ID 16b8f518ca08 

ต่อไป แก้ไฟล์ confix.ymp ของ registry กลับไปที่ Path ที่ clone git มา เช่น /home/test/Portus/ ให้เข้าไปที่ /home/test/Portus/compose/registry
#vi config.yml
//เพิ่ม
addr: 0.0.0.0:5000
  tls:
    certificate: /var/lib/registry/publickey.cer
    key: /var/lib/registry/privatekey.pem

*/var/lib/registry/ คือ path ที่อยู่ใน container ที่ mount ไปจาก /var/lib/docker/volumes/<volumeID>/_data

Copy public cert ให้ docker client
#mkdir /etc/docker/certs.d
#mkdir /etc/docker/certs.d/abc.def.com:5000
#cp /var/lib/docker/volumes/<volumeID>/_data/publickey.cer /etc/docker/certs.d/abc.def.com:5000/ca.crt

Restart Container 16b8f518ca08 
#docker restart 16b8f518ca08

ลอง Login
#docker login -u caznova -e mail@mail.com abc.def.com:5000
//Login Succeeded

1 ความคิดเห็น:

  1. https://github.com/caznova/TEXExtract

    is this your?

    I am wondering if you could sell me the updated version ? I’m willing to pay via PayPal

    ตอบลบ