IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    macOS 使用 Colima 运行 Docker

    血衫非弧の一存发表于 2025-05-01 00:00:00
    love 0

    Colima是一个免费的开源容器运行时,它使用QEMU在虚拟机中运行Docker容器。它是由Lima Project创建的,Lima项目是一群致力于创建工具以方便在 macOS上运行容器化应用程序的开发人员。

    Lima (Linux virtual machines (on macOS, in most cases)) 项目由一群MacBook开发人员用户于2019年启动,出于对macOS缺乏良好的容器运行时和工具的不满而DIY。当时,在 macOS 上运行Docker容器的唯一选择是适用于macOS的Docker Desktop,它需要大中型公司的许可证。Lima项目着手为macOS创建 Docker Desktop的免费开源替代方案,以提供更好的性能和更多功能。

    Colima的主要特点包括:

    • 支持多种芯片架构 - 完美支持搭载Intel和Apple Silicon芯片的Mac设备,以及Linux系统

    • 简单的命令行界面 - 提供直观的CLI操作方式,并采用合理的默认配置

    • 自动端口转发 - 智能处理容器端口映射,简化网络配置

    • 卷挂载支持 - 支持在容器和主机之间共享文件系统

    • 多实例管理 - 可以同时运行多个独立的Colima实例

    • 灵活的运行时选择

      - 支持多种容器运行时:

      • Docker(可选择性集成Kubernetes)
      • Containerd(可选择性集成Kubernetes)
      • Incus(支持容器和虚拟机)

    在底层实现上,Colima 通过 Lima 启动一个专用的Linux虚拟机来运行容器。

    一、安装

    brew install colima
    brew install docker
    brew install docker-compose
    

    注意不要使用brew install docker --cask命令,我们不需要安装图形化界面。

    二、启动

    colima start --foreground  # 前台运行
    brew service start colima  # 后台运行
    docker ps -a # 可以执行docker命令了
    

    image-20250503午後71233242

    奇怪的是我没办法后台运行,先跳过了(反正前台能运行):

    Bootstrap failed: 5: Input/output error
    Try re-running the command as root for richer errors.
    Error: Failure while executing; `/bin/launchctl bootstrap gui/501 /Users/kelu/Library/LaunchAgents/homebrew.mxcl.colima.plist` exited with 5.
    

    三、停止/删除

    停止 Docker 只需要停止 Colima 虚拟机即可:

    colima stop # 停止虚拟机
    colima start # 启动虚拟机
    colima delete # 清理colima,删除虚拟机
    

    四、配置

    查看配置:

    colima list # 运行的虚拟机
    

    image-20250503午後72801699

    colima template
    

    将会打开自定义的配置文件~/.colima/_templates/default.yaml:

    主要包含以下配置项:

    image-20250503午後72157028

    五、进阶:运行x86的容器

    清理已有的colima

    colima stop # 停止虚拟机
    colima delete # 清理colima,删除虚拟机
    

    安装qemu

    brew install qemu
    

    运行虚拟机

    colima start --profile rosetta --cpu 2 --memory 2 --disk 100 --arch x86_64 --vm-type=vz --vz-rosetta --mount-type virtiofs
    

    image-20250504午前113253413

    x86_64容器运行

    version:  '3.5'
    
    volumes:
      pgdata: {}
      pgdump: {}
    
    services:
      pgsql:
        image: kelvinblood/pgsql:v9.4-alpine
        restart: always
        network_mode: bridge
        container_name: pgsql
        volumes:
          - pgdata:/var/lib/postgresql/data:rw
          - pgdump:/var/lib/postgresql/dump:rw
    

    参考资料

    • Colimaでvz+RosettaのVMでx86用Dockerコンテナを実行する場合にはarchにaarch64を指定する
    • 告别Docker Desktop:用Colima在macOS上优雅运行Docker容器


沪ICP备19023445号-2号
友情链接