mac m3 从 docker desktop 到 podman desktop

podman desktop 安装

brew install podman
brew install --cask podman-desktop
brew tap slp/krunkit
brew install krunkit

podman desktop 配置

podman machine init
podman machine start

如果报错: 没有 krunkit, 参考上文安装 krunkit

sudo podman-mac-helper install

在 podman desktop 中调整虚拟机内存: (Settings -> Resources -> Podman: edit icon, 修改后 Update);
也可在 init 时指定: podman machine init --cpus 4 --memory=8192

https://medium.com/rahasak/switching-from-docker-desktop-to-podman-on-macos-m1-m2-arm64-cpu-7752c02453ec

https://desktop.podman.org.cn/docs/migrating-from-docker/using-podman-mac-helper

迁移镜像(不成功)

docker save -o open-webui.main.tar ghcr.io/open-webui/open-webui:main
podman load -i open-webui.main.tar

会导致 podman 虚拟机卡死无响应, 停也停不了.
问题太大, 算了, 直接重新拉镜像吧.

卸载 docker desktop

sudo /Applications/Docker.app/Contents/MacOS/uninstall

Uninstalling Docker Desktop...
Error: unlinkat /Users/USER_HOME/Library/Containers/com.docker.docker/.com.apple.containermanagerd.metadata.plist: > operation not permitted

解决: (System Settings > Privacy & Security > Full Disk Access), 给使用的 terminal 授予权限

rm -rf ~/Library/Group\ Containers/group.com.docker
rm -rf ~/.docker

应用程序中, 把 Docker Desktop 拖到回收站

参考: https://docs.docker.com/desktop/uninstall/

使用 kind 安装本地 k8s 集群

  1. 安装 golang 版本管理器 g
cat << 'EOF' >> ~/.zshrc
# 可选。检查g别名是否被占用
if [[ -n $(alias g 2>/dev/null) ]]; then
    unalias g
fi
EOF

curl -sSL https://raw.githubusercontent.com/voidint/g/master/install.sh | bash

  1. 安装 golang
    g ls-remote stable
    g install 1.24.6
    go vesion

  2. 安装 kind
    go install sigs.k8s.io/kind@v0.30.0

  3. 创建 k8s 集群
    kind create cluster

参考: https://kind.sigs.k8s.io/

有坑吗?

不出意外的, 有!

podman 容器读取宿主机留下的docker挂载目录时, 存在权限不足问题, 例如 postgresql 留下的数据目录.
如何解决?

  1. 宿主机上, 为其他用户在目标目录上授予读和执行权限. chmod -R +rx postgre-data (这是宿主目录)
  2. 进入podman虚拟机中, 修改目录权限
# 在宿主机上, 登录podman虚拟机
podman machine ssh
# 查看挂载点, 并转到目录下
mount
df -h
cd /Users/<hostUserName>/<宿主机挂载目标路径>
# 修改属主
sudo chown -R core:games postgre-data

一般这种就是宿主机挂载点


image.png
  1. 使用一个临时容器复制文件到新建卷上
# 新建数据卷
podman volume create litellm_pg_data
# 复制数据到新建卷
podman run --rm -it \
  -v "$(pwd)/postgre-data":/host_data \
  -v litellm_pg_data:/container_data \
  redis:8.2.1 \
  bash
cp -rp /host_data/. /container_data/
  1. 使用新建卷启动容器
docker run -d \
--name litellm-postgre \
-v litellm_pg_data:/var/lib/postgresql/data \
-p 5432:5432 \
-e POSTGRES_PASSWORD=<你的pg密码> \
-e LANG=C.UTF-8 \
postgres:latest

方案的不足: 数据的变更, 将保留在 podman 虚拟机中, 无法再在宿主目录中保留.

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • """1.个性化消息: 将用户的姓名存到一个变量中,并向该用户显示一条消息。显示的消息应非常简单,如“Hello ...
    她即我命阅读 8,696评论 0 5
  • 为了让我有一个更快速、更精彩、更辉煌的成长,我将开始这段刻骨铭心的自我蜕变之旅!从今天开始,我将每天坚持阅...
    李薇帆阅读 6,268评论 1 4
  • 似乎最近一直都在路上,每次出来走的时候感受都会很不一样。 1、感恩一直遇到好心人,很幸运。在路上总是...
    时间里的花Lily阅读 5,401评论 1 3
  • 1、expected an indented block 冒号后面是要写上一定的内容的(新手容易遗忘这一点); 缩...
    庵下桃花仙阅读 3,725评论 0 1
  • 一、工具箱(多种工具共用一个快捷键的可同时按【Shift】加此快捷键选取)矩形、椭圆选框工具 【M】移动工具 【V...
    墨雅丫阅读 3,674评论 0 0

友情链接更多精彩内容