Cách cài đặt docker registry miễn phí
Registry, nơi push image để pull về:
- Dockerhub
Server:
docker images // hiện ra cách images đang có trên server
Vào hub.docker.com // login vào
docker login
nhập username và password vào
ls –a // có .docker
ls .docker/ // sẽ có file config.json
công thức mẫu để push lên: docker image = domain/project/repo:tag
// đã login vào docker, đã hiểu domain là dockerhub
docker images
docker tag todolist:v1 elroydevops/todolist:v1 || đổi tên todolist:v1 thành ....
docker images // đã có elroydevops/todolist:v1
docker push elroydevops/todolist:v1
lên hub.docker.com kiểm tra, đã có images.
docker logout
docker images
docker rmi elroydevops/todolist:v1
docker pull elroydevops/todolist:v1
docker images
đã có elroydevops/todolist:v1
- Self-certified
Tạo 1 server mới (docker-ser):
Cài docker (bài cũ)
Trong /tools/docker thì cd ..
mkdir registry
cd registry
apt install ssl
mkdir certs
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -subj "/CN=192.168.1.100" -addext "subjectAltName=DNS:192.168.1.100,IP:192.168.1.100" -x509 -days 365 -out certs/domain.crt
// kiểm tra ip trước khi chạy
ls certs // ra domain.crt và domain.key
Google gõ: registry 2 docker image
vi docker-compose.yml
//
version: '3'
services:
registry:
image: registry:2
restart: always
container_name: registry-server
ports:
- "5000:5000"
volumes:
- ./data:/var/lib/registry
- ./certs:/certs
environment:
REGISTRY_HTTP_TLS_CERTIFICATE: /certs/domain.crt
REGISTRY_HTTP_TLS_KEY: /certs/domain.key
//
openssl req -newkey rsa:4096 -nodes -sha256 -keyout certs/domain.key -subj "/CN=192.168.1.100" -addext "subjectAltName=DNS:192.168.1.100,IP:192.168.1.100" -x509 -days 365 –out certs/domain.crt
// kiểm tra ip trước khi chạy
ls // sẽ có certs và docker-compose.yml
hiện tại đang ở /tools/registry
mkdir data
docker-compose up –d
docker-compose ps
sẽ thấy image registry2 chạy port 5000
Chrome gõ: ip:5000 dùng với https
Sau đó thử với ip:5000/v2/_catalog
docker login 192.168.1.100:5000 // xem lại ip =
username:a // enter // pass // enter
báo failed to verify // ko có tổ chức chứng thực, chỉ đang tự xác thực
mkdir –p /etc/docker/certs.d/192.168.1.100:5000 // tự tạo thư mục search
cp certs/domain.crt /etc/docker/certs.d/192.168.1.100:5000/ca.crt // đổi tên thành crt
systemctl restart docker
docker login 192.168.1.100:5000
username:a // enter // pass // enter
login thành công, đây là chứng chỉ tự ký, nên cũng cần tự xác nhận
mkdir –p /etc/docker/certs.d/192.168.1.100:5000
scp certs/domain.crt manhnv@192.168.1.110:/home/manhnv
yes
copy thành công crt từ server registry sang server hiện tại
mkdir –p /etc/docker/certs.d/192.168.1.100:5000
cp /home/manhnv/domain.crt /etc/docker/certs.d/192.168.1.100:5000/ca.crt
system restart docker
docker login 192.168.1.100:5000
username:a // enter // pass // enter
Login thành công
docker images
docker tag todolist:v1 192.168.1.100:5000/elroydevops/todolist:v1
docker push 192.168.1.100:5000/elroydevops/todolist:v1
Lên google: 192.168.1.100:5000/v2/_catalog
Hiện cái vừa update
- Harbor
Tạo aws account
Vào thanh search: ec2
Launch instance
Name: register server
Chọn ubuntu (22.04) (t2.micro – free tier eligible)
Create new key pair: key-register, lưu lại
Allow ssh, allow https, allow http
Storage: 8GB
Nhấn vào id instance
Nhấn vào id server, chọn vào connect
// nhìn bên dưới có cái publicIPs
sudo –i
// add domain prefix
Lấy cái public ip, add vào domain (registry.domain với publicIP)
Cài đặt docker và docker compose
apt install certbot –y
ở folder tools
mkdir harbor
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest \ | grep browser_download_url \ | cut -d '"' -f 4 \ | grep '\.tgz$' \ | wget -i –
ls // có 2 file harbor off và onl
tar xnzf harbor-off tab
cd harbor // có file harbor.yml.tmpl
cp harbor.yml.tmpl harbor.yml
export DOMAIN=” registry.domain”
export EMAIL=”fsdfsd@fds.com”
cerbot certonly --standalone –d $DOMAIN –preferred=challenges http –agree=tos –m $EMAIL –keep-until-expiring // certonly lấy mà ko cài đặt, đang cài thủ công registry, standalone là sử dụng 1 web server độc lập tích hợp với domain, ...http là tích hợp với http, agree đồng ý với tổ chức, email, giữ chứng chỉ hiện tại nếu chúng còn hiệu lực
y(es)
copy cái certificate in saved at
nano harbor.yml // password: Harbor12345
hostname: thành hostname
certificate: pass cái vừa copy
private_key: pass vào, sửa đuôi thành privkey.pem
ls
./prepare
./install.sh
docker-compose ps
Về server:
docker login registry.domain
username: admin
password: Harbor12345
docker tag todolist:v1 registry.domain/elroy/todolist:v1
docker images
docker push registry.domain/elroy/todolist:v1
bảo mật whitelist ip mới vào đc trang registry.domain