最近从 Docker Desktop 切换到 Podman,一切都很顺利,除了当我想将主机卷挂载到容器中时。例如
\n\xe2\x9e\x9c ~ podman run --name nginx -v ~/bin/nginx/nginx.conf:/etc/nginx/nginx.conf:ro -d -p 8080:80 nginx\nError: statfs /Users/rb/bin/nginx/nginx.conf: no such file or directory\n\n\xe2\x9e\x9c ~ ls -lt ~/bin/nginx/nginx.conf \n-rw-r--r-- 1 rb staff 490 Apr 23 14:31 /Users/rb/bin/nginx/nginx.conf\n
Run Code Online (Sandbox Code Playgroud)\n主机文件~/bin/nginx/nginx.conf
确实存在,那么这里有什么问题呢?
无论我做什么,我只会收到 404 或错误:无效的参考格式
我认为应该是 podman pull hub.docker.com/_/postgres
但这行不通。我也尝试过
podman pull hub.docker.com/postgres
podman pull hub.docker.com/__/postgres
podman pull hub.docker.com/library/postgres
Run Code Online (Sandbox Code Playgroud)
您知道需要什么才能从 Docker Hub 获取官方镜像吗?
我正在尝试使用 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
容器上
更新:已解决,请查看答案。
\n我podman
在 MacOS 上使用podman machine
,现在podman
无法连接到podman machine
.
(它之前可以工作,但不确定新的 macOS 版本导致了该问题)
\nMacOS 蒙特利 (12.1)
\n$ podman machine init\nExtracting compressed file\n\n$ podman machine start\nINFO[0000] waiting for clients... \nINFO[0000] listening tcp://127.0.0.1:7777 \nINFO[0000] new connection from to /var/folders/8f/v0tpqxg56wsf9x6x6tntjt5h0000gn/T/podman/qemu_podman-machine-default.sock \nWaiting for VM ...\nMachine "podman-machine-default" started successfully\n\n$ podman machine ls\nNAME VM TYPE CREATED LAST UP CPUS MEMORY DISK SIZE\npodman-machine-default* qemu About a minute ago Currently running 1 2.147GB 10.74GB\n\n$ podman version\nCannot connect to Podman. Please …
Run Code Online (Sandbox Code Playgroud) 我最近发现了有关Podman(https://podman.io)的信息。我有一种使用Linux fork进程而不是Daemon的方法,而不必使用root运行。
但是我非常习惯使用docker-compose来协调机器上运行的容器(在生产中,我们使用kubernetes)。我真的很喜欢。
所以我正在尝试替换docker-compose。我将尝试保持docker-compose并使用podman作为docker的别名,因为Podman使用与docker相同的语法:
别名docker = podman
能行吗 你能建议其他工具吗?如果可能的话,我真的打算保留docker-compose.yml文件。
有没有办法在 Podman 中运行 Podman,类似于在 Docker 中运行 Docker 的方式?
这是我的 Dockerfile 的一个片段,它很大程度上基于另一个问题:
FROM debian:10.6
RUN apt update && apt upgrade -qqy && \
apt install -qqy iptables bridge-utils \
qemu-kvm libvirt-daemon libvirt-clients virtinst libvirt-daemon-system \
cpu-checker kmod && \
apt -qqy install curl sudo gnupg2 && \
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/ /" > /etc/apt/sources.list.d/devel:kubic:libcontainers:stable.list && \
curl -L https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/Debian_10/Release.key | sudo apt-key add - && \
apt update && \
apt -qqy install podman
Run Code Online (Sandbox Code Playgroud)
现在尝试一些测试:
$ podman run -it my/test …
Run Code Online (Sandbox Code Playgroud) 是否可以在 Java 测试中将 Testcontainers 与 Podman 一起使用?
截至 2022 年 3 月,Testcontainers 库未将已安装的 Podman 检测为有效的 Docker 环境。
Podman 可以在采用 Apple 芯片的 MacOS(本地开发环境)和 Linux x86_64(CI/CD 环境)上替代 Docker 吗?
我正在无根模式下评估 podman,并面临用户 ID 映射问题。
我使用 ID 为 1000 的“myuser”运行 podman。
cat /etc/subuid
myuser:100000:65536
Run Code Online (Sandbox Code Playgroud)
运行 pod 时,pod 用户是 root,从主机角度来看,已安装卷上创建的文件属于“myuser”,我可以访问它们,所以一切都很好。
运行 pod 时,pod 用户不是 root(例如 UID 2002),从主机角度来看,已安装卷上创建的文件属于 UID“102002”,这会导致我无法访问主机上的该文件。
正如预期的那样,podman unshare 如下所示
podman unshare cat /proc/self/uid_map
0 1000 1
1 100000 65536
Run Code Online (Sandbox Code Playgroud)
我是否有机会通过正确配置 podman 运行或配置文件来访问这些文件?
谢谢约尔格
我使用docker命令独立运行 keycloak docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin quay.io/keycloak/keycloak:15.0.2
容器停止后如何挂载卷来保存数据?
事实:
1480
2088
3.10.0-1062.1.2.el7.x86_64
1.4.4
/tmp
是xfs
capsh
两个用户的输出是相同的,但对于 uid / username/etc/sub{u,g}id
文件中都有相同的条目$HOME/.config/containers/storage.conf
是默认值,除了 uids 之外,两者是相同的。在storage.conf
下面参考。我编写了以下 shell 脚本来演示两者运行的环境有多么相似:
#!/bin/sh
for i in 1480 2088; do
sudo chroot --userspec "$i":10 / env -i /bin/sh <<EOF
echo -------------- $i ----------------
/usr/sbin/capsh --print
grep "$i" /etc/subuid /etc/subgid
mkdir /tmp/"$i"
HOME=/tmp/"$i"
export HOME
podman --root=/tmp/"$i" info > /tmp/podman."$i"
podman …
Run Code Online (Sandbox Code Playgroud)