==== Поднять локально реестр образов docker на swarm ====
Для начала создадим label, что бы можно было поднять реестр только на одной ноде.
**server1**
docker node update server1 --label-add registry=true
Проинспектируем и убедимся что label был успешно добавлен
vagrant@server1:~$ docker node inspect server1 --pretty
ID: zyzenb3c49rz3c46m3ygm9aog
Labels:
- registry=true
Hostname: server1
Joined at: 2023-12-10 10:59:43.366955226 +0000 utc
Status:
State: Ready
Availability: Active
Address: 10.11.10.1
Manager Status:
Address: 10.11.10.1:2377
Raft Status: Reachable
Leader: Yes
Platform:
Operating System: linux
Architecture: x86_64
Resources:
CPUs: 1
Memory: 1.925GiB
Plugins:
Log: awslogs, fluentd, gcplogs, gelf, journald, json-file, local, logentries, splunk, syslog
Network: bridge, host, ipvlan, macvlan, null, overlay
Volume: local
Engine Version: 24.0.7
TLS Info:
TrustRoot:
-----BEGIN CERTIFICATE-----
MIIBazCCARCgAwIBAgIUKlzjoll/2HbrP/ahSRLZo8KeQMcwCgYIKoZIzj0EAwIw
EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMjMxMjEwMTA1NTAwWhcNNDMxMjA1MTA1
NTAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH
A0IABOmsAQb3KqS1KR+0HTQQkA8zwnHAmCbbtL+c8e8HXwyIzLJMSBEoZRrSPzxQ
Piv1oLvG2jfVLJv8V8n6ObyK1+qjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB
Af8EBTADAQH/MB0GA1UdDgQWBBSjFVfwMKDyYJELlg14BY454S5jXTAKBggqhkjO
PQQDAgNJADBGAiEAzEh7Jteq0ZRLXMRtwkj0zRgCZzYbLxiqhLbqX9KRzB8CIQDD
fxZd2+LQkhGO1EAE+foD/1C9eg9wQp0L//wTWq4YWw==
-----END CERTIFICATE-----
Issuer Subject: MBMxETAPBgNVBAMTCHN3YXJtLWNh
Issuer Public Key: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE6awBBvcqpLUpH7QdNBCQDzPCccCYJtu0v5zx7wdfDIjMskxIEShlGtI/PFA+K/Wgu8baN9Usm/xXyfo5vIrX6g==
Создаем сервис с реестром docker образов:
vagrant@server1:~$ docker service create --name registry --publish 5000:5000 --constraint node.Labels.registry==true --mount type=bind,source=/home/vagrant/registry,destination=/var/lib/registry -e REGISTRY_HTTP_ADDR=0.0.0.0:5000 registry:latest
3srd0mspdl9awp7mssoo3p5e7
overall progress: 1 out of 1 tasks
1/1: running [==================================================>]
verify: Service converged
----
На сервере server3 проверим как работает наш новый функционал
С клонируем проект из git
vagrant@server3:~$ git clone http://webmastermsk.ru:30000/serg/docker-demo.git
Cloning into 'docker-demo'...
remote: Enumerating objects: 135, done.
remote: Total 135 (delta 0), reused 0 (delta 0), pack-reused 135
Receiving objects: 100% (135/135), 482.37 KiB | 15.56 MiB/s, done.
Resolving deltas: 100% (36/36), done.
vagrant@server3:~$ ls
docker-demo
Соберем образ с тегом **localhost:5000/api:latest**
agrant@server3:~/docker-demo$ docker build -t localhost:5000/api:latest -f apps/api/Dockerfile .
[+] Building 161.1s (14/14) FINISHED
Далее пушим наш образ в реестр на server1
vagrant@server3:~/docker-demo$ docker push localhost:5000/api:latest
The push refers to repository [localhost:5000/api]
8f850b6e7ca2: Pushed
43322bfa8cf3: Pushed
8164e06aee77: Pushed
1113e694e035: Pushed
31f710dc178f: Pushed
a599bf3e59b8: Pushed
e67e8085abae: Pushed
f1417ff83b31: Pushed
latest: digest: sha256:bd6c7213e3509912704b0c10ba7222b97e7c7329690698623ed4c9292c2167b6 size: 1995
----
На сервере server5, спулим наш образ и реестра на server1
vagrant@server5:~$ docker pull localhost:5000/api:latest
latest: Pulling from api
f56be85fc22e: Pull complete
8f665685b215: Pull complete
e5fca6c395a6: Pull complete
561cb69653d5: Pull complete
6757c430064e: Pull complete
2158aed08417: Pull complete
374c9839c7ad: Pull complete
20e909126ac1: Pull complete
Digest: sha256:bd6c7213e3509912704b0c10ba7222b97e7c7329690698623ed4c9292c2167b6
Status: Downloaded newer image for localhost:5000/api:latest
localhost:5000/api:latest