update ReADME

This commit is contained in:
2026-05-13 17:21:22 +02:00
parent 54af4c2112
commit 7cd44a3cc4
4 changed files with 126 additions and 3 deletions
+124
View File
@@ -53,3 +53,127 @@ Attribution-NonCommercial-NoDerivatives 4.0 International License
вы должны распространять свои результаты на условиях той же лицензии, вы должны распространять свои результаты на условиях той же лицензии,
что и оригинал. что и оригинал.
## Инсталяция
```
$ ./configure --prefix=/usr
$ make
$ sudo make install
$ sudo systemctl daemon-reload
$ sudo systemctl enable mstored
$ sudo systemctl start mstored
```
В процессе первого запуска будут инициализирована sqlite база данных
и создан начальный пользователь mstore с паролем mstore, и с полным
набором прав.
Также будет создан необходимый для работы пользователь anonymous,
от имени которого будут осуществлятся операции,
если не указан какой-либо пользователь явно.
По умолчанию сервис запускается на порту 443. Если вы желаете запустить сервис
на ином порту, вы можете указать его указать в конфигурационном файле
/etc/mstore/mstored.yaml
```
service:
port: 8080
```
## Операции с образами контейнеров.
Данный реестр поддерживает работу с OCI архивами образов, а также
фактически аналогичными им архивами Docker Image Spec V2.
Работа c docker архивами V1 не поддерживается.
### Загрузка образа контейнера
Клиентская утилита mstorectl имеет возможности выгрузить образ контейнера с OCI реестра,
а также загрузить его в таковой реестр.
Копирование в локальный реестр осуществляется последовательной выгрузкой из стороннего реестра в
архив образа и загрузкой в локальный реестр по необходимому пути.
По умолчанию порт 443, если он иной, то необходимо указать его явно.
```
$ mstorectl image pull registry.k8s.io/pause:3.10.1 pause-3.10.1.tar
---
error: false
result:
filepath: pause-3.10.1.img
size: 323,072
$ mstorectl image push pause-3.10.1.tar mstore:mstore@localhost:443/pause:v3.10.1
---
error: false
result: {}
```
Если компонент образа уже существует по его пути, то он загружен не будет.
### Удаление образа контейнера
Если компоненты образа не используются в каком-либо ином образе по данному пути, то
они будут удалены.
```
$ mstorectl image delete mstore:mstore@localhost:443/pause:v3.10.1
```
### Просмотр имеющихся репозиториев в реестре
```
# mstorectl image catalog localhost
---
error: false
result:
repositories:
- coredns
- etcd
- kube-apiserver
- kube-controller-manager
- kube-proxy
- kube-scheduler
- mstore/mstore
- pause
- toolbox
```
### Просмотр имеющихся тегов репозитария
```
$ mstorectl image tags localhost:443/pause
---
error: false
result:
imageTags:
name: pause
tags:
- 3.10.1
```
### Проверка репозитариев на корректность и целостность
Проверка целостности при наличии большого количества образов
может занимать некоторое время. Доступ к загрузке и выгрузке компонено образа
на данное время будет заблокирован.
Образы контейнеров с некорректными компонентами (отсутствующими
или с несовпадающей контрольной суммой) будут удалены полностью
и выведены в результирующий список.
```
$ mstorectl images check mstore:mstore@localhost:443
---
error: false
result:
repos: []
```
+1 -1
View File
@@ -157,7 +157,7 @@ func (hand *Handler) GetManifest(rctx *router.Context) {
//hand.logg.Debugf("GetManifest type: %s", res.ContentType) //hand.logg.Debugf("GetManifest type: %s", res.ContentType)
//hand.logg.Debugf("GetManifest payload: %s", res.Payload) //hand.logg.Debugf("GetManifest payload: %s", res.Payload)
rctx.SetHeader("Content-Length", res.ContentLength) rctx.SetHeader("Content-Length", res.ContentLength)
//rctx.SetHeader("Content-Type", res.ContentType) rctx.SetHeader("Content-Type", res.ContentType)
rctx.SetHeader("Docker-Content-Digest", res.DockerContentDigest) rctx.SetHeader("Docker-Content-Digest", res.DockerContentDigest)
rctx.SendBytes(code, res.ContentType, []byte(res.Payload)) rctx.SendBytes(code, res.ContentType, []byte(res.Payload))
return return
-1
View File
@@ -84,7 +84,6 @@ func (cli *Client) GetRawManifest(ctx context.Context, rawrepo string, accepts [
if !accepted { if !accepted {
err := fmt.Errorf("Unknown content type: %s", mime) err := fmt.Errorf("Unknown content type: %s", mime)
return exist, mime, man, digstr, err return exist, mime, man, digstr, err
} }
digstr = resp.Header.Get("Docker-Content-Digest") digstr = resp.Header.Get("Docker-Content-Digest")
if digstr == "" { if digstr == "" {