概要
OCI Container Instances(CI)を使用したRedisコンテナ作成を行いました。
構成
事前準備
作成するために以下を準備します。
-Docker環境がある
VMにDockerをインストールします
-CI作成に必要なVCNやSubnetが作成済
新規でもCI作成可能ですが既存Subnet利用がよいかと思います。
作成
■Dockerfile作成
VM内に以下のようにDockerfileを作成します。
EXPOSEでRedisのportを定義しないとCIでこのportをlistenしてくれません。
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を起動するための設定ファイルを作成します。
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されていることを確認します。

■CI作成
OCIコンソールから開発者サービス>>コンテナインスタンスを選択します。
コンテナインスタンスの作成を押下して作成します。
-名前:適切に設定
-シェイプ:適切に設定
-VCNおよびサブネット:CIを配置するサブネットを指定
-ネットワークセキュリティグループ:必要な通信のみ許可するNSGを指定
-プライベートIPアドレス:予め決めたアドレスを指定


次を押下
-Name:適切に設定
-イメージの選択を押下
- リポジトリおよびイメージを選択 例:redis001:01
-
ユーザー名【ネームスペース】/【ユーザー名】コンソールから操作では不要 -
パスワード【認証トークン】コンソールから操作では不要 - イメージの選択を押下

次を押下
確認して作成を押下
しばらくするとインスタンスが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を設定しています。
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)
