1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

OCI Container Instancesを使用したRedisコンテナ作成

Last updated at Posted at 2023-02-08

概要

OCI Container Instances(CI)を使用したRedisコンテナ作成を行いました。

構成

image.png

事前準備

作成するために以下を準備します。
-Docker環境がある
VMにDockerをインストールします
-CI作成に必要なVCNやSubnetが作成済
新規でもCI作成可能ですが既存Subnet利用がよいかと思います。

作成

■Dockerfile作成
VM内に以下のようにDockerfileを作成します。
EXPOSEでRedisのportを定義しないとCIでこのportをlistenしてくれません。

Dockerfile.
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
EXPOSE 6379

■redis.conf作成
VM内にRedisを起動するための設定ファイルを作成します。

redis.conf
bind 0.0.0.0
protected-mode no
port 6379

■イメージBuild
VM内のDockerを使ってDockerfile,redis.confを元にイメージBuildします。

[user@vm]$ docker image build -t nrt.ocir.io/【ネームスペース】/redis001:0.1 .
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/4: FROM redis
STEP 2/4: COPY redis.conf /usr/local/etc/redis/redis.conf
STEP 3/4: CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
STEP 4/4: EXPOSE 6379
COMMIT nrt.ocir.io/【ネームスペース】/redis001:0.1
Successfully tagged nrt.ocir.io/【ネームスペース】/redis001:0.1
Successfully tagged localhost/redistest:0.1

■レジストリにPush
docker loginでOCIRにログインして作成したイメージをPushします。
Username/Passwordは以下を参考に入手します。
Oracle Container Engine for Kubernetes(OKE)でKubernetesを動かしてみよう
2.OCIRへのプッシュとOKEへのデプロイ
https://oracle-japan.github.io/ocitutorials/cloud-native/oke-for-beginners/
(オプション):
リポジトリ(今回はredis001)を特定のコンパートメントに作成する場合は、
事前にレジストリを作成してください。
レジストリ作成はOCIコンソールから開発者サービス>>コンテナレジストリを選択し、リポジトリの作成ボタンを押下します。

[user@vm]$ docker login nrt.ocir.io
Username:【ネームスペース】/【ユーザー名】
Password:【認証トークン】
[user@vm]$ docker push nrt.ocir.io/【ネームスペース】/redis001:0.1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
(略)
Writing manifest to image destination
Storing signatures

OCIコンソールから開発者サービス>>コンテナレジストリを選択してイメージがPushされていることを確認します。
image.png

■CI作成
OCIコンソールから開発者サービス>>コンテナインスタンスを選択します。
コンテナインスタンスの作成を押下して作成します。

-名前:適切に設定
-シェイプ:適切に設定
-VCNおよびサブネット:CIを配置するサブネットを指定
-ネットワークセキュリティグループ:必要な通信のみ許可するNSGを指定
-プライベートIPアドレス:予め決めたアドレスを指定
image.png
image.png

次を押下
-Name:適切に設定
-イメージの選択を押下

  • リポジトリおよびイメージを選択 例:redis001:01
  • ユーザー名【ネームスペース】/【ユーザー名】 コンソールから操作では不要
  • パスワード【認証トークン】 コンソールから操作では不要
  • イメージの選択を押下
    image.png
    次を押下
    確認して作成を押下

しばらくするとインスタンスがActiveとなります。

■疎通確認
VMからredis-cliを利用して接続確認を行います。

#redisコンテナにping
root@679df5b7c3bd:/data# redis-cli -h 10.105.6.101 ping
PONG
root@679df5b7c3bd:/data#
#redisコンテナにアクセス
root@679df5b7c3bd:/data# redis-cli -h 10.105.6.101
10.105.6.101:6379>
10.105.6.101:6379> info replication
#Replication
role:master
connected_slaves:0
master_failover_state:no-failover
master_replid:1ec0c0d07466fad23a455270f1c44d1fc5eedf82
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
10.105.6.101:6379>

Readレプリカ

上記の作成例はmasterのみですが、Readレプリカを作成することも可能です。
-CI作成にてReadレプリカ用のCIを作成
-redis cliを使用してReadレプリカ用redisにアクセス
-slaveof 【masterのIPアドレス】6379を実行
-info replicationでroleがslaveになったことを確認
-masterのredisにアクセスしinfo replicationでslaveのIPが表示されることを確認

memcachedコンテナ

memcachedイメージを使用してCIを立ち上げました。

■Dockerfile作成
VM内に以下のようにDockerfileを作成します。
メモリは128MB,ポート11211を設定しています。

Dockerfile.
FROM memcached
CMD [ "-m", "128" ]
EXPOSE 11211

■イメージBuild
VM内のDockerを使ってDockerfileを元にイメージBuildします。

[user@vm]$ docker image build -t nrt.ocir.io/【ネームスペース】/memcached001:0.1 .
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
STEP 1/3: FROM memcached
STEP 2/3: CMD [ "-m", "128" ]
--> 13cc8443439
STEP 3/3: EXPOSE 11211
COMMIT nrt.ocir.io/axlpeslmb1ng/memcached001:0.1
--> 523935b1f3c
Successfully tagged nrt.ocir.io/axlpeslmb1ng/memcached001:0.1

■レジストリにPush
docker loginでOCIRにログインして作成したイメージをPushします。

[user@vm]$ docker push nrt.ocir.io/【ネームスペース】/memcached001:0.1
Emulate Docker CLI using podman. Create /etc/containers/nodocker to quiet msg.
Getting image source signatures
(略)
Writing manifest to image destination
Storing signatures

■CI作成
Redisと同様の手順で作成します。
■疎通確認
VMから接続確認を行います。

#memcachedコンテナにlogin
[opc2@k-vm-01 .kube]$ telnet 10.105.2.164 11211
Trying 10.105.2.164...
Connected to 10.105.2.164.
Escape character is '^]'.
set key1 0 0 3
123
STORED
get key1
VALUE key1 0 3
123
END
#容量確認
stats
STAT limit_maxbytes 134217728 (=128MB)
1
0
1

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
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?