我正在尝试使用 Podman 进行本地开发。我的想法是使用本地文件夹并将其与我将运行应用程序的容器同步。
我发现,-v如果我使用 Docker,我将使用的选项可以与服务器计算机一起使用,正如文档中所述-v Bind mount a volume into the container. Volume src will be on the server machine, not the client。因此,当我使用该选项时,该文件夹未安装,并且当我使用以下命令访问它时找不到它podman exec -it application bash
我有办法解决这个问题吗?我想要相当于:
docker run -v localFolder:/remoteFolder application
其中localFolder是我本地计算机中的路径,它将映射到remoteFolder容器上
zhi*_*ang 29
podman machine stop podman-machine-default
podman machine rm podman-machine-default
podman machine init -v $HOME:$HOME
podman machine start
podman run -ti --rm -v $HOME:$HOME busybox
Run Code Online (Sandbox Code Playgroud)
您需要确保首先将卷安装到 podman 机器(在podman machine init命令中)。
让\xe2\x80\x99s 说,我们\xe2\x80\x99感兴趣的是:
\n让\xe2\x80\x99s 使用以下命令创建 podman 机器:
\npodman machine init --cpus=4 --disk-size=60 --memory=6096 -v $HOME:$HOME\nRun Code Online (Sandbox Code Playgroud)\n然后启动它:
\npodman machine start\nRun Code Online (Sandbox Code Playgroud)\n要查看它是否运行,让\xe2\x80\x99s 使用:
\npodman machine ls\nRun Code Online (Sandbox Code Playgroud)\n首先让\xe2\x80\x99s 在不挂载的情况下运行示例 (ubuntu) 容器,然后查看目录中存在什么/opt:
podman run ubuntu ls /opt\nRun Code Online (Sandbox Code Playgroud)\n没有输出表明/opt容器中的目录为空。
现在让\xe2\x80\x99s 尝试使用卷安装选项:
\nmkdir test-dir\ntouch test-dir/test-file.txt\npodman run -v ./test-dir:/opt ubuntu ls /opt\ntest-file.txt\nRun Code Online (Sandbox Code Playgroud)\n我们看到,现在可以在容器中访问包含 it\xe2\x80\x99s 内容的挂载目录!
\n(内容摘自:\n https://medium.com/@butkovic/favoring-podman-over-docker-desktop-33368e031ba0)
\n如果您有 Windows 和 WSL(适用于 Linux 的 Windows 子系统),则可以创建卷,而无需删除并重新初始化 podman-machine-default。
首先使用 WSL 连接到 podman 机器:
wsl -d podman-machine-default
Run Code Online (Sandbox Code Playgroud)
然后执行这些命令:
wsl -d podman-machine-default
Run Code Online (Sandbox Code Playgroud)
现在要与容器共享文件,请将它们从 WSL 挂载点复制到卷挂载点:
[root@COMPUTER ~]# podman volume create myVolume
myVolume
[root@COMPUTER ~]# podman volume mount myVolume
/var/lib/containers/storage/volumes/myVolume/_data
Run Code Online (Sandbox Code Playgroud)
最后,您可以在容器中安装卷来访问这些文件。退出 wsl 并运行:
podman run --rm -v myVolume:/remoteFolder -t docker.io/bash ls /remoteFolder
Run Code Online (Sandbox Code Playgroud)
小心,参数顺序很重要
| 归档时间: |
|
| 查看次数: |
39902 次 |
| 最近记录: |