Podman

Podman #

docker img

常用命令 #

2. 启动容器并进入交互模式 #

你可以使用 docker run 命令启动容器并进入容器的交互式 shell。这样你就可以进入容器内部进行调试。

复制代码

docker run -it --entrypoint /bin/bash nova-crawler:latest

参数说明: #

  • -it-i 表示以交互模式运行容器,-t 给容器分配一个伪终端,这样你就可以在终端与容器交互。
  • --entrypoint /bin/bash:这将覆盖容器的默认入口点,直接启动一个 bash shell 以便你进入容器进行调试。
  • nova-crawler:latest:你要运行的镜像名称。

3. 启动容器并调试特定命令 #

如果你不想进入容器的 shell,而是想直接执行调试命令(比如启动应用并在调试模式下运行),可以使用以下命令:

bash

复制代码

docker run -it --entrypoint /bin/bash nova-crawler:latest -c "your-debug-command"

4. 查看容器日志 #

如果你希望在调试时查看容器的日志输出,可以使用以下命令:

bash

复制代码

docker logs <container_id>

你可以通过 docker ps 查找运行的容器 ID,然后查看日志输出。

5. 调试时挂载本地目录(可选) #

如果你需要调试代码,并且希望挂载本地目录到容器中进行实时编辑,可以使用 -v 参数来挂载本地目录。例如,假设你的本地代码在 /path/to/your/code 目录下:

bash

复制代码

docker run -it -v /path/to/your/code:/app --entrypoint /bin/bash nova-crawler:latest

这会将本地的 /path/to/your/code 目录挂载到容器的 /app 目录下。你可以在容器内访问并调试这个代码。

总结: #

  • 使用 docker run -it --entrypoint /bin/bash 来启动容器并进入 bash shell 进行调试。
  • 使用 docker run -it -v /local/dir:/container/dir 来挂载本地目录进行调试。

希望这能帮你顺利启动并调试 nova-crawler 容器!

命令用法 #

命令几乎和docker一致, alias docker=podman完全可以无感知

不同点 #

  1. pull路径需要完整(official)
podman pull docker.io/library/mysql:5.7
  1. pull 其他示例(主要看docker pull的输出👿)
# FROM tiangolo/uvicorn-gunicorn:python3.11
podman pull docker.io/tiangolo/uvicorn-gunicorn:python3.11

迁移镜像存储路径 #

切换到

lazydocker #

[[Note of Docker#lazydocker 可视化]]

export DOCKER_HOST=unix:///run/user/1000/podman/podman.sock
lazydocker

VSCode #

Dev Containers #

https://code.visualstudio.com/remote/advancedcontainers/docker-options

在插件设置中, 将Docker Pathdocker修改为podman即可

网络 #

容器内访问宿主机 #

[!note] host.docker.internal

Docker 提供了 host.docker.internal 这个特殊的 DNS 名称,它会解析为 宿主机的 IP 地址

slirp4netns问题 #

  • podman network connect example-network example-container会报错
    • podman 网络连接未针对 slirp4netns 实现 #19577

本地镜像存储路径 #

⛔ 没生效

go install github.com/evnix/boltdbweb@latest
sudo boltdbweb --db-name=/var/lib/containers/storage/libpod/bolt_state.db --port=8008

修改其中缓存的/etc/containers/storage.conf文件内容.

换源 #

文件: /etc/containers/registries.conf

[registries.search]
registries = ['registry.aliyuncs.com', 'docker.io']

[registries.insecure]
registries = []

[registries.block]
registries = []

[registries_mirror]
registry = 'docker.io'
mirrors = ['registry.aliyuncs.com']