使用OCI容器实例创建Redis容器
简介
我使用OCI容器实例(CI)创建了一个Redis容器。
组成
提前准备
为了创建,需要准备以下内容:
– 存在Docker环境
在虚拟机上安装Docker
– 创建了需要用于CI创建的VCN和子网
虽然可以创建新的CI,但建议使用现有子网。
制作
■创立Dockerfile
在虚拟机内创建如下的Dockerfile。
如果不定义EXPOSE,CI将无法监听Redis端口。
FROM redis
COPY redis.conf /usr/local/etc/redis/redis.conf
CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ]
EXPOSE 6379
创建redis.conf文件,用于在虚拟机内启动Redis的配置。
bind 0.0.0.0
protected-mode no
port 6379
使用VM内的Docker根据Dockerfile和redis.conf构建镜像。
[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
在使用docker login登录到OCIR后,将创建的镜像推送到注册表中。
获取用户名/密码的参考方式如下。
在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控制台中选择开发者服务>>容器实例。
点击创建容器实例并进行创建。
点击以下选项:
– 名称:正确设置
– 点击选择图像
過了一會兒,實例將變為活躍狀態。
使用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的复制品
只需要一种选择:虽然上述的创建示例只涉及到主节点,但也可以创建读取副本。
– 在CI创建阶段创建用于读取副本的CI。
– 使用redis cli访问用于读取副本的redis。
– 执行slaveof 【主节点的IP地址】6379。
– 使用info replication确认角色已变为从节点。
– 访问主节点的redis,并确认通过info replication显示从节点的IP地址。
Memcached容器。
我使用memcached映像启动了CI。
■创建Dockerfile文件
在虚拟机中创建以下Dockerfile文件。
设置内存为128MB,并设置端口为11211。
FROM memcached
CMD [ "-m", "128" ]
EXPOSE 11211
使用VM内的Docker根据Dockerfile来构建镜像。
[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
使用docker login登录到OCIR并将创建的镜像推送到注册表。
[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 的相同步骤进行创建。
■ 连通确认
从虚拟机进行连接确认。
#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)