LoginSignup
0
1

More than 5 years have passed since last update.

Ceph Object Storage を docker-registry (docker-distribution) の バックエンドに使う

Last updated at Posted at 2018-07-18

今回は、Ceph Object Storage を docker-registry の バックエンドに使っていきます。

Ceph側で ユーザーの作成

ユーザーを作ります。

# radosgw-admin user create --uid="nak3" --display-name="test admin" \
   --email=nak3@example.com --access_key="testkey" --secret="testsecret"

サブユーザーを作ります。

# radosgw-admin subuser create --uid="nak3" --subuser="nak3:swift" \
  --access_key="testkey" --secret="testsecret" --access=full

サブユーザーを作ったときのアウトプットは以下のようになります。

{
    "user_id": "nak3",
    "display_name": "test admin",
    "email": "nak3@example.com",
    "suspended": 0,
    "max_buckets": 1000,
    "auid": 0,
    "subusers": [
        {
            "id": "nak3:swift",
            "permissions": "full-control"
        }
    ],
    "keys": [
        {
            "user": "nak3",
            "access_key": "testkey",
            "secret_key": "testsecret"
        }
    ],
    "swift_keys": [
        {
            "user": "nak3:swift",
            "secret_key": "testsecret"
        }
    ],
    "caps": [],
    "op_mask": "read, write, delete",
    "default_placement": "",
    "placement_tags": [],
    "bucket_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "user_quota": {
        "enabled": false,
        "check_on_raw": false,
        "max_size": -1,
        "max_size_kb": 0,
        "max_objects": -1
    },
    "temp_url_keys": [],
    "type": "rgw"
}

Ceph側で bucket の準備

続いて、swift コマンドを使って、bucket を作ります。

# swift -V 1.0 -A http://knakayam-ceph-c2.example.com/auth/v1 -U nak3:swift \
  -K testsecret post docker-registry

swift API を使った ファイルアップロードの簡易テスト

寄り道になりますが、念の為、ファイルがアップロードできることを試しておきます。

# touch test-file

# swift -V 1.0 -A http://knakayam-ceph-c2.example.com/auth/v1 -U nak3:swift  -K testsecret upload docker-registry test-file
test-file

stat 確認すると、Objectsが「1」になっていますね。問題なさそうです。

# swift -V 1.0 -A http://knakayam-ceph-c2.example.com/auth/v1 -U nak3:swift  -K testsecret stat docker-registry
                      Account: v1
                    Container: docker-registry
                      Objects: 1
                        Bytes: 0
                     Read ACL:
                    Write ACL:
                      Sync To:
                     Sync Key:
                Accept-Ranges: bytes
             X-Storage-Policy: default-placement
X-Container-Bytes-Used-Actual: 0
                  X-Timestamp: 1531912241.51508
                   X-Trans-Id: tx000000000000000000aba-005b4f2041-5e31-default
                 Content-Type: text/plain; charset=utf-8
       X-Openstack-Request-Id: tx000000000000000000aba-005b4f2041-5e31-default

以上で、Ceph側の準備は終わりです。

docker-distribution の設定

docker-distributionをインストールします。

# yum -y install docker-distribution

docker-distributionの設定は、/etc/docker-distribution/registry/config.ymlを設定するだけです。

# vim /etc/docker-distribution/registry/config.yml

簡易的にテストするだけなので、最低限の設定にしておきます。

version: 0.1
log:
  fields:
    service: registry
storage:
  cache:
    blobdescriptor: inmemory
  swift:
    username: nak3:swift
    password: testsecret
    authurl: http://knakayam-ceph-c2.example.com/auth/v1.0
    insecureskipverify: false
    container: docker-registry
    rootdirectory: /registry
http:
    addr: :5000

あとは、サービスを再起動しておくだけです。

# systemctl restart docker-distribution.service

イメージの push

busyboxという軽めのイメージをpullして、タグ付けして、pushします。

# docker pull busybox
# docker tag busybox 127.0.0.1:5000/busybox
# docker push 127.0.0.1:5000/busybox

最初に使った swift コマンドで、イメージが保存されていることを確認します。

# swift -V 1.0 -A http://knakayam-ceph-c2.example.com/auth/v1 -U nak3:swift  -K testsecret list docker-registry
files/docker/registry/v2/blobs/sha256/1b/1bd6df27274fef1dd36eb529d0f4c8033f61c675d6b04213dd913f902f7cafb5/data
files/docker/registry/v2/blobs/sha256/22/22c2dd5ee85dc01136051800684b0bf30016a3082f97093c806152bf43d4e089/data
files/docker/registry/v2/blobs/sha256/75/75a0e65efd518b9bcac8a8287e5c7032bc81f8cbfbe03271fd049b81ab26119b/data
files/docker/registry/v2/repositories/busybox/_layers/sha256/22c2dd5ee85dc01136051800684b0bf30016a3082f97093c806152bf43d4e089/link
files/docker/registry/v2/repositories/busybox/_layers/sha256/75a0e65efd518b9bcac8a8287e5c7032bc81f8cbfbe03271fd049b81ab26119b/link
files/docker/registry/v2/repositories/busybox/_manifests/revisions/sha256/1bd6df27274fef1dd36eb529d0f4c8033f61c675d6b04213dd913f902f7cafb5/link
files/docker/registry/v2/repositories/busybox/_manifests/tags/latest/current/link
files/docker/registry/v2/repositories/busybox/_manifests/tags/latest/index/sha256/1bd6df27274fef1dd36eb529d0f4c8033f61c675d6b04213dd913f902f7cafb5/link
foo
segments/2f6/46f636b65722f72656769737472792f76322f7265706f7369746f726965732f62757379626f782f5f75706c6f6164732f35326162376633362d643534332d343636302d613963312d6232333136613264393362632f6461746149391f47a198dfa46951f927f2ddc333a280d84cffef4358eb0a3dec59dc8a7eda39a3ee5e6b4b0d3255bfef95601890afd80709/0000000000000001
segments/2f6/46f636b65722f72656769737472792f76322f7265706f7369746f726965732f62757379626f782f5f75706c6f6164732f61653566623466382d383362392d346563382d396263342d3966313930326430393865352f646174612e13e94b53f06f689cd9a39460220b0b7c611d0c4a87cb4e323a7fd24db45393da39a3ee5e6b4b0d3255bfef95601890afd80709/0000000000000001

思ったより簡単に、Ceph Object Storage を docker-distribution のバックエンドにして試してみることができました。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1