Merge branch 'master' of git.unix7.org:ziggi/mstore
This commit is contained in:
@@ -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: []
|
||||||
|
|
||||||
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -6,5 +6,5 @@ const (
|
|||||||
logdir = "/var/log/mstore"
|
logdir = "/var/log/mstore"
|
||||||
datadir = "/var/lib/mstore"
|
datadir = "/var/lib/mstore"
|
||||||
version = "0.2.5"
|
version = "0.2.5"
|
||||||
srvname = "mstored"
|
srvname = "mstored"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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 == "" {
|
||||||
|
|||||||
Reference in New Issue
Block a user