Mac使用Colima运行Docker

因为docker-desktop是商用软件,这里可以采用开源的方案来替代一下docker,经过多方比较选择了colima进行docker使用

  1. 安装docker docker-compose colima

    1
    
    brew install docker docker-compose colima
    
  2. 启动colima(重点来了)

    • 科学版(百度:让终端使用代理,麻烦的话推荐往下看)
    1
    
    colima start
    
    • 不会终端科学版
      这一步在大部分同学基本都会失败,因为要下载镜像,失败的日志如下
    1
    
    INFO[0000] starting colimaINFO[0000] runtime: docker INFO[0002] creating and starting ...                     context=vm INFO[0002] downloading disk image ...                    context=vm FATA[0077] error starting vm: error at 'creating and starting': error getting qcow image: error during image download: error downloading 'https://github.com/abiosoft/colima-core/releases/download/v0.8.1/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2': error retrieving redirect url: error running [curl -ILs -o /dev/null -w %{url_effective} https://github.com/abiosoft/colima-core/releases/download/v0.8.1/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2], output: "", err: "exit status 28"
    

    所以大家可以去下载镜像,然后放到指定目录下,然后启动colima

    镜像地址:ubuntu-24.04
    下载完之后,我们用命令启动一下colima

    1
    
    colima start --disk-image /Users/admin/Downloads/ubuntu-24.04-minimal-cloudimg-arm64-docker.qcow2
    


4. 设置后台自启动

1
brew services start colima

image.png 5. 接下来就可以操作docker了 6. 注意这里如果运行 docker-compose 的情况时需要使用 9p 来进行启动

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
### 1. Stop colima and create `override.yaml` file

> 🧨 To start from scratch I deleted all colima profiles first:
> 
> ```shell
> ➜ colima list | awk "/$(uname -m)/ {print \$1}" | while read i ; do colima stop -p ${i} ; colima delete -p ${i} ; done
> ```

```shell
➜ colima stop

[ -d "${HOME}/.colima/_config" ] || mkdir -vp "${HOME}/.colima/_config"

➜ cat << EOF > ${HOME}/.colima/_config/override.yaml
mountType: 9p
mounts:
  - location: ${HOME}
    writable: true
    9p:
      securityModel: mapped-xattr
      cache: mmap
  - location: "~"
    writable: true
    9p:
      securityModel: mapped-xattr
      cache: mmap
  - location: /tmp/colima
    writable: true
    9p:
      securityModel: mapped-xattr
      cache: mmap
EOF

2. Edit the template

⚠️ Make sure you have: mountType: 9p

1
➜ colima template

3. Then start colima editing the configuration file before start:

⚠️ Make sure you have: mountType: 9p

1
➜ colima start --edit

Tried your docker-compose.yaml example:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
version: '3'
services:
  database:
    image: postgres:15.4-alpine
    volumes:
      - ./data/database:/var/lib/postgresql/data
    environment:
      POSTGRES_USER: 'directus'
      POSTGRES_PASSWORD: 'directus'
      POSTGRES_DB: 'directus'
1
2
3
4
5
➜  ls -lao
total 8
drwxr-xr-x   3 user   96 Nov 15 08:54 ./
drwxr-xr-x  23 user  736 Nov 15 08:53 ../
-rw-r--r--   1 user  244 Nov 15 08:49 docker-compose.yaml
1
2
3
4
5
➜  docker compose up -d
[+] Building 0.0s (0/0)                                    docker:colima
[+] Running 2/2
 ✔ Network colima_default       Created                    0.1s
 ✔ Container colima-database-1  Started                    0.0s
1
2
3
4
5
6
➜  ls -lao
total 8
drwxr-xr-x   4 user  128 Nov 15 08:54 ./
drwxr-xr-x  23 user  736 Nov 15 08:53 ../
drwx------@  3 user   96 Nov 15 08:54 data/
-rw-r--r--   1 user  244 Nov 15 08:49 docker-compose.yaml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
➜  tree -d data
data
└── database
    ├── base
    │   ├── 1
    │   ├── 16384
    │   ├── 4
    │   └── 5
    ├── global
    ├── pg_commit_ts
    ├── pg_dynshmem
    ├── pg_logical
    │   ├── mappings
    │   └── snapshots
    ├── pg_multixact
    │   ├── members
    │   └── offsets
    ├── pg_notify
    ├── pg_replslot
    ├── pg_serial
    ├── pg_snapshots
    ├── pg_stat
    ├── pg_stat_tmp
    ├── pg_subtrans
    ├── pg_tblspc
    ├── pg_twophase
    ├── pg_wal
    │   └── archive_status
    └── pg_xact

28 directories
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
➜  docker exec -it colima-database-1 psql -U directus -c '\l'
                                                List of databases
   Name    |  Owner   | Encoding |  Collate   |   Ctype    | ICU Locale | Locale Provider |   Access privileges
-----------+----------+----------+------------+------------+------------+-----------------+-----------------------
 directus  | directus | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            |
 postgres  | directus | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            |
 template0 | directus | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/directus          +
           |          |          |            |            |            |                 | directus=CTc/directus
 template1 | directus | UTF8     | en_US.utf8 | en_US.utf8 |            | libc            | =c/directus          +
           |          |          |            |            |            |                 | directus=CTc/directus
(4 rows)
1
2
3
4
对应 issue 是这个https://github.com/abiosoft/colima/issues/83
因为这里启动的服务报错,permission If I attempt this with colima I get `chown: file.txt: Permission denied`

👍13
Licensed under CC BY-NC-SA 4.0
最后更新于 Apr 11, 2025 07:19 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up