180 lines
6.7 KiB
Markdown
180 lines
6.7 KiB
Markdown
# mStore - multifunсtion Storage
|
||
|
||
Under contruction.
|
||
|
||
With the application you can store and share
|
||
- Any blobs
|
||
- Helm charts
|
||
- OCI images
|
||
|
||
## Copyright EN
|
||
|
||
Copyright 2026 Oleg Borodin <onborodin@gmail.com>
|
||
|
||
This work is published and licensed under a Creative CommonsAttribution-NonCommercial-ShareAlike 4.0 International License.
|
||
|
||
* Attribution — You must give appropriate credit,
|
||
provide a link to the license, and indicate if changes
|
||
were made. You may do so in any reasonable manner,
|
||
but not in any way that suggests the licensor endorses
|
||
you or your use.
|
||
|
||
* NonCommercial — You may not use the material for commercial purposes.
|
||
|
||
* ShareAlike — If you remix, transform, or build upon the material,
|
||
you must distribute your contributions under the same license
|
||
as the original.
|
||
|
||
Distribution of this work is permitted, but commercial usu are
|
||
strictly prohibited.
|
||
|
||
## Copyright RU
|
||
|
||
Права на данное произведение принадлежат Олег Бородин <onborodin@gmail.com> 2026
|
||
|
||
Это произведение распространяется под лицензией Creative Commons
|
||
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: []
|
||
|
||
```
|
||
|