2016年7月27日水曜日

Oracle OpenStack R 2.1 | Oracle Linux 7 への Docker Registry 構築。

この投稿は、下記の一部です。
Oracle OpenStack for Oracle Linux R 2.1 をためす。(2016年07月 版)

Oracle OpenStack R 2.1 では、
OpenStack 関連サービスを Docker コンテナとしてデプロイします。
今回は、Docker コンテナのデプロイ元となる Docker Registry サーバを構築します。

前提として、Oracle Linux 7 には Docker Engine をあらかじめインストールしてあります。
Oracle OpenStack R 2.1 | Oracle Linux 7 への Docker インストール。


今回の手順概要です。
  1. Docker イメージ リポジトリ用ストレージ領域の準備。
  2. Registry 用SSL 証明書の作成。
  3. Registry 用SSL 証明書の配置。
  4. registry コンテナの Pull ~ 起動。


1. Docker イメージ リポジトリ用ストレージ領域の準備。

まず、Docker Registry としてイメージを格納するストレージ領域を用意します。
今回は、Docker イメージとは別のディスク(/dev/sdc)で、Btrfs ファイルシステムで用意します。
[root@opst-registry ~]# mkfs.btrfs -L var-lib-registry /dev/sdc

システム要件に合わせて、15 GB で用意しました。
[root@opst-registry ~]# btrfs filesystem show var-lib-registry
Label: 'var-lib-registry'  uuid: cfd7c9ed-1940-4f9f-ab2f-47be48a05622
        Total devices 1 FS bytes used 112.00KiB
        devid    1 size 15.00GiB used 2.02GiB path /dev/sdc

btrfs-progs v4.2.2

マウントポイントとして /var/lib/registry ディレクトリを作成して、マウントしておきます。
[root@opst-registry ~]# mkdir /var/lib/registry
[root@opst-registry ~]# echo 'LABEL=var-lib-registry /var/lib/registry btrfs defaults 1 2' >> /etc/fstab
[root@opst-registry ~]# mount -a

2. Registory 用SSL 証明書の作成。

Docker Registry で SSL 証明書を使用するので、
今回は openssl コマンドで作成してしまいます。
証明書の内容は、Common Name「opst-registry.gowatana.lab」を Registry の FQDN に
合わせる以外は適当にしてあります。
[root@opst-registry ~]# mkdir -p /var/lib/registry/conf.d/
[root@opst-registry ~]# cd /var/lib/registry/conf.d/
[root@opst-registry conf.d]# openssl req -newkey rsa:4096 -nodes -sha256 -x509 -days 365 -keyout domain.key -out domain.crt
Generating a 4096 bit RSA private key
.....................................................................................................................................................................++
.............................++
writing new private key to 'domain.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:JP
State or Province Name (full name) []:Tokyo
Locality Name (eg, city) [Default City]:Home
Organization Name (eg, company) [Default Company Ltd]:Home-Lab
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:opst-registry.gowatana.lab
Email Address []:
[root@opst-registry conf.d]# ls -l
合計 8
-rw-r--r-- 1 root root 2004  6月 22 04:14 domain.crt
-rw-r--r-- 1 root root 3272  6月 22 04:14 domain.key

鍵ファイルは、パーミッションを変更しておきます。
[root@opst-registry conf.d]# chmod 600 /var/lib/registry/conf.d/domain.key

3. Registry 用SSL 証明書の配置。

Registry むけに証明書格納用のディレクトリを作成して、SSL 証明書を配置します。
[root@opst-registry ~]# mkdir -p /etc/docker/certs.d/opst-registry.gowatana.lab:5443
[root@opst-registry ~]# cp /var/lib/registry/conf.d/domain.crt /etc/docker/certs.d/opst-registry.gowatana.lab:5443/ca.crt

4. registry コンテナの Pull ~ 起動。

Registry 用のコンテナを Docker Hub からタグ指定で「registry:2.3」を pull して起動します。
オプションでは、ここまでで作成したリポジトリ用のストレージ領域と、
SSH 証明書 / 鍵ファイルを指定しています。
[root@opst-registry ~]# docker run -d -p 5443:5000 --name registry --restart=always \
> -v /var/lib/registry:/registry_data \
> -e REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/registry_data \
> -e REGISTRY_HTTP_TLS_KEY=/registry_data/conf.d/domain.key \
> -e REGISTRY_HTTP_TLS_CERTIFICATE=/registry_data/conf.d/domain.crt \
> registry:2.3
Unable to find image 'registry:2.3' locally
2.3: Pulling from library/registry
fdd5d7827f33: Pull complete
a3ed95caeb02: Pull complete
a79b4a92697e: Pull complete
6cbb75c7cc30: Pull complete
4831699594bc: Pull complete
Digest: sha256:0c8c2a39d64da5eef305f9b50e0d889d823d799414c5a1d42f9cfdab2462da19
Status: Downloaded newer image for registry:2.3
08225d155a2485150398a51a43c0c014cb89969cda0a97592e2bec760f665b77
[root@opst-registry ~]#

registry コンテナが起動しました。
[root@opst-registry ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
08225d155a24        registry:2.3        "/bin/registry /etc/d"   20 seconds ago      Up 19 seconds       0.0.0.0:5443->5000/tcp   registry

つづく。

0 件のコメント:

コメントを投稿