背景・目的
Colimaは、Docker CLI互換のコンテナランタイムを提供し、Docker CLIでの操作が可能です。
今回は、こちらをMacにセットアップし、触ってみます。
まとめ
下記に特徴を整理します。
特徴 | 説明 |
---|---|
Colimaとは | macOS (および Linux) 上のコンテナ ランタイム。 |
特徴 | ・シンプルなCLIインターフェース ・自動ポート転送 ・ボリュームマウント ・複数のインスタンス ・複数のコンテナランタイムのサポート ・Docker(オプションでKubernetesを使用) ・Containerd(オプションでKubernetesを使用) ・Incus |
License | MIT License |
概要
下記のページを基に整理します。
- macOS (および Linux) 上のコンテナ ランタイム
- 特徴は下記の通り
- シンプルなCLIインターフェース
- 自動ポート転送
- ボリュームマウント
- 複数のインスタンス
- 複数のコンテナランタイムのサポート
- Docker(オプションでKubernetesを使用)
- Containerd(オプションでKubernetesを使用)
- Incus
実践
事前準備
-
dockerをインストールします
% brew install docker % docker --version Docker version 27.3.1, build ce1223035a %
-
docker-composeをインストールします
% brew install docker-compose % docker-compose --version Docker Compose version 2.30.3 %
Colimaをインストール
- colimaをインストールします
% brew install colima % colima --version colima version 0.8.0 %
Colimaの起動
- Colimaを起動します
% colima start INFO[0001] starting colima INFO[0001] runtime: docker INFO[0002] creating and starting ... context=vm INFO[0002] downloading disk image ... context=vm INFO[0064] provisioning ... context=docker INFO[0066] starting ... context=docker INFO[0094] done % docker context ls NAME DESCRIPTION DOCKER ENDPOINT ERROR colima * colima unix:///Users/XXXXX/.colima/default/docker.sock default Current DOCKER_HOST based configuration unix:///var/run/docker.sock %
dockerコンテナの操作
-
nginxを起動します
% docker run -d -p 8080:80 nginx %
-
イメージを確認します
~ % docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest XXXXXX 5 weeks ago 192MB %
-
コンテナを確認します
% docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES XXXXX nginx "/docker-entrypoint.…" 4 minutes ago Up 4 minutes 0.0.0.0:8080->80/tcp, [::]:8080->80/tcp elated_mestorf % docker ps
-
コンテナを停止します
% docker stop XXXX XXXXX % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES %
Dockerビルド
-
プロジェクトを作成します
% mkdir my_flask_app % cd my_flask_app
-
簡単なアプリケーションを作成します
% cat app.py # app.py from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return "Hello, World!" if __name__ == '__main__': app.run(host='0.0.0.0') %
-
requirements.txt
を作成します% cat requirements.txt flask %
-
Dockerfileを作成します
% cat Dockerfile # ベースイメージとしてPythonを使用 FROM python:3.13-slim # 作業ディレクトリの設定 WORKDIR /app # 必要なファイルをコンテナにコピー COPY requirements.txt requirements.txt COPY app.py app.py # 依存関係のインストール RUN pip install -r requirements.txt # アプリケーションの起動 CMD ["python", "app.py"] %
-
ビルドします
docker build -t my_flask_app .
-
イメージを確認します。できていました
% docker image ls REPOSITORY TAG IMAGE ID CREATED SIZE my_flask_app latest XXXX 44 seconds ago 134MB python 3.13-slim XXXX 3 weeks ago 121MB nginx latest XXXX 5 weeks ago 192MB %
-
コンテナをバックグラウンドで起動します
% docker run -d -p 5000:5000 my_flask_app
-
コンテナを確認します
% docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES XXXXX my_flask_app "python app.py" About a minute ago Up About a minute 0.0.0.0:5000->5000/tcp, :::5000->5000/tcp charming_noyce %
-
コンテナを停止します
% docker stop X XXX % docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES %
考察
今回は、Colimaを使用してみました。今までは、Docker Desktopを使用していましたが代替できそうです。
参考