= colima
Colima 是一个以最小化设置来在 MacOS 上运行容器运行时和 Kubernetes 的工具。支持 m1，同样也支持 Linux。

Colima 的名字取自 Container on Lima。Lima 是一个虚拟机工具，可以实现自动的文件共享、端口转发以及 containerd。

Colima 实际上是通过 Lima 启动了名为 colima 的虚拟机，使用虚拟机中的 containerd 作为容器运行时。

== 安装
[source,bash]
----
brew install colima
----

== 采用 x86_64 架构启动
[source,bash]
----
colima start \
  --cpu 4 \
  --memory 4 \
  --disk 40 \
  --arch x86_64 \
  --vm-type vz \
  --mount-type virtiofs \
  --runtime docker
----

== 常用命令
[source,bash]
----
brew install colima           # 安装
brew uninstall colima         # 卸载

colima --version              # 显示版本
colima help                   # 显示帮助
colima status                 # 显示 Colima 运行状态
colima list                   # 列出 colima 运行时实例
colima template               # 编辑默认配置模版，该模版用户创建运行时实例,模版文件路径: ~/.colima/_templates
colima start                  # 启动 Colima 运行时实例（采用默认配置模版）
colima stop                   # 停止 Colima 运行时实例
colima restart                # 重启 Colima 运行时实例
colima ssh                    # ssh 到 colima 运行时实例
colima ssh-config             # 显示 SSH 连接配置信息
colima delete                 # 删除 Colima 运行时实例
colima kubernetes             # 管理 Kubernetes 集群
colima nerdctl                # 运行 nerdctl (需要 containerd 运行时)
colima completion             # 生成完成 script
----

[[colima-containerd-install-oracle-express-21.3.0-xe]]
== 安装 oracle express:21.3.0-xe
[source,bash]
----
# 显示 docker 上下文
docker context list

# 输出结果
NAME                TYPE                DESCRIPTION                               DOCKER ENDPOINT                                          KUBERNETES ENDPOINT   ORCHESTRATOR
colima *            moby                colima                                    unix:///Users/wangshaoping/.colima/default/docker.sock
default             moby                Current DOCKER_HOST based configuration   unix:///var/run/docker.sock                                                    swarm
desktop-linux       moby                                                          unix:///Users/wangshaoping/.docker/run/docker.sock

# 标记为 * 的表示是当前 docker 上下文
# colima : colima context
# default: docker desktop context
# 通过 docker context use xxx 来切换 docker conext
# 切换上下文后，在执行 docker 命令时就在当前上下文引擎中执行

# 由于 oracle 未提供 arm 架构的 docker 镜像, 需要通过 colima 模拟 x86_64 环境的 docker 引擎来运行
# 切换 docker context 为 colima
docker context use colima

# 登录, 首先需要登录到 oracle 的镜像站点中才能下载 oracle 镜像
docker login container-registry.oracle.com
# 输入用户名和密码，成功后继续

# pull 镜像
docker pull container-registry.oracle.com/database/express:21.3.0-xe

# 启动容器,
docker run -d --name oracle \
-p 1521:1521 \
-e ORACLE_PWD=Wspsc123 \
-v /Users/wangshaoping/wspsc/software/docker/volume/oracle_v21.3.0-xe:/opt/mnt \
container-registry.oracle.com/database/express:21.3.0-xe

# 进入 oracle 容器
colima nerdctl exec -it oracle bash

# 进入 sqlplus
sqlplus / as sysdba

# 显示当前数据库
SQL>show con_name;

# 显示内容如下:
# CON_NAME
# ------------------------------
# CDB$ROOT

# 显示可插拔数据库
SQL>show pdbs;

# 显示内容如下:
CON_ID CON_NAME	      OPEN MODE  RESTRICTED
---------- ------------------------------ ---------- ----------
     2 PDB$SEED			  READ ONLY  NO
     3 XEPDB1			  READ WRITE NO

# 切换到可拔插的数据库 XEPDB1
SQL>alter session set container=XEPDB1;

# 创建表空间
SQL>create tablespace "PLATFORM" logging datafile '/opt/oracle/oradata/XE/XEPDB1/platform.dbf' size 100m autoextend on next 100m extent management local;

# 创建用户
SQL>create user "PLATFORM" identified by "platform" default tablespace "PLATFORM" temporary tablespace "TEMP";

# 授权用户
SQL>grant connect,resource to "PLATFORM";
----