Docker 常见问题:如何查找镜像内待引用文件的存放位置
查找Docker镜像内程序文件路径的常用方法
- 方法1:启动临时交互容器直接查询
这是最通用的方法,启动容器时覆盖原有ENTRYPOINT,进入shell环境后直接搜索路径:
运行命令:docker run -it --rm --entrypoint sh 你的cowsay镜像名
参数说明:-it开启交互终端,--rm配置容器退出后自动删除不会残留冗余容器,--entrypoint sh覆盖镜像原有ENTRYPOINT为shell,避免直接启动cowsay程序。
进入容器后执行以下任意命令即可获取路径:which cowsay(检索PATH环境变量下的cowsay可执行文件路径)whereis cowsay(检索所有与cowsay相关的文件、二进制、手册路径) - 方法2:直接运行命令输出结果无需进入容器
不想手动进入容器的话,可以直接把查询命令作为启动参数传入:docker run -it --rm --entrypoint sh 你的cowsay镜像名 -c "which cowsay"
运行后会直接在终端输出cowsay的完整路径。 - 方法3:参考镜像对应的Dockerfile
如果能获取到镜像对应的Dockerfile,可以直接看安装cowsay的步骤,基于Debian/Ubuntu系的镜像,通过apt install cowsay安装的程序默认就会放在/usr/games目录下,属于系统默认的游戏类二进制文件存放路径。
补充说明:如果/usr/games已经包含在容器的PATH环境变量中,你也可以直接将ENTRYPOINT写为ENTRYPOINT [ "cowsay" ],不过写绝对路径更稳妥,不会因为PATH变量变动出现找不到程序的问题。
内容的提问来源于stack exchange,提问作者Breno Matias
相关产品推荐
相关产品推荐

