想知道创建现有Docker容器的命令,这里推荐几种方法,尤其第一种工具能直接帮您“回忆”起来。

🔍 使用 runlike 工具直接获取命令

最推荐的方法是使用一个名为 runlike 的第三方工具,它可以像“时光机”一样,直接打印出创建指定容器的完整命令。

  1. 安装 runlike
    您可以通过 pip 直接安装:

    pip install runlike
    

    或者,如果不想安装,也可以通过一个别名直接以容器方式运行它(免安装):

    alias runlike="docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike"
    
  2. 使用 runlike 获取命令
    安装后,使用方法非常简单,只需提供容器名称或ID即可:

    runlike <容器名称或ID>
    

    例如,如果你的容器名叫 my_web_server,就执行:

    runlike my_web_server
    

    执行后,终端会直接显示出最初创建这个容器时使用的 docker run 命令及所有参数。

这个工具能自动解析容器的所有配置(如端口映射、环境变量、卷挂载等),并组装成可执行的命令,非常方便。

🔎 通过 docker inspect 手动查找线索

如果由于某些原因无法使用 runlike,您也可以通过 Docker 自带的 docker inspect 命令来查看容器的详细配置,然后“拼凑”出命令。这个方法更底层,能帮助您理解命令的各个部分。

基本用法如下:

docker inspect <容器名称或ID>

这会输出一个非常详细的 JSON 格式配置文件。您无需完全理解它,只需知道关键配置对应的字段即可。下表列出了 docker run 命令常见选项在 inspect 输出中的位置:

docker run 选项inspect 输出中的主要查找路径
--name.Name
-p (端口映射).NetworkSettings.Ports
-v (卷挂载).Mounts
-e (环境变量).Config.Env
--restart.HostConfig.RestartPolicy.Name
-it (交互终端)检查 .Config.Tty.Config.OpenStdin 是否为 true

例如,想快速获取容器的 IP 地址,可以使用:

docker inspect -f='{{.NetworkSettings.IPAddress}}' <容器名称或ID>

docker inspect 命令可以查询容器各方面的详细信息。

⚠️ 重要提示

  • docker inspect vs runlikedocker inspect 展示的是容器当前的全部低层配置,而 runlike 尝试重建创建容器时使用的命令行。对于需要精确复现创建命令的场景,runlike 更直接高效。
  • 命令来源:这些方法找回的是您当初在宿主机上执行docker run 命令。如果容器是通过 Docker Compose 或其他编排工具创建的,这些命令找回的是最终由 Docker 引擎执行的那个容器运行命令。

希望这些方法能帮您找回所需的命令!如果容器是通过 Docker Compose 配置的,情况会略有不同,需要其他协助随时可以再问我。

更多推荐