1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Colimaを使ってMacでDockerを動かしてみた

Posted at

背景・目的

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

実践

事前準備

  1. dockerをインストールします

    % brew install docker
    % docker --version
    Docker version 27.3.1, build ce1223035a
    % 
    
  2. docker-composeをインストールします

    % brew install docker-compose
    % docker-compose --version
    Docker Compose version 2.30.3
    % 
    

Colimaをインストール

  1. colimaをインストールします
    % brew install colima
    % colima --version   
    colima version 0.8.0
    % 
    

Colimaの起動

  1. 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コンテナの操作

  1. nginxを起動します

    % docker run -d -p 8080:80 nginx
    % 
    
  2. ブラウザで、localhost:8080にアクセスします
    image.png

  3. イメージを確認します

    ~ % docker image ls 
    REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
    nginx        latest    XXXXXX   5 weeks ago   192MB
    % 
    
  4. コンテナを確認します

    % 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 
    
  5. コンテナを停止します

    % docker stop XXXX
    XXXXX
    % docker ps               
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    % 
    

Dockerビルド

  1. プロジェクトを作成します

    % mkdir my_flask_app
    % cd my_flask_app
    
  2. 簡単なアプリケーションを作成します

    % 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')
    % 
    
  3. requirements.txt を作成します

    % cat requirements.txt 
    flask
    % 
    
  4. 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"]
    
    % 
    
  5. ビルドします

    docker build -t my_flask_app .
    
  6. イメージを確認します。できていました

    % 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
    % 
    
  7. コンテナをバックグラウンドで起動します

    % docker run -d -p 5000:5000 my_flask_app
    
  8. コンテナを確認します

    % 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
    % 
    
  9. localhost:5000をブラウザに入力します。表示されました
    image.png

  10. コンテナを停止します

    % docker stop X
    XXX
    % docker ps               
    CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
    % 
    

考察

今回は、Colimaを使用してみました。今までは、Docker Desktopを使用していましたが代替できそうです。

参考

1
1
0

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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?