我已经将(假设的)程序dhprog上传到Docker Hub,它的工作方式如下:

docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" --rm -it dhuser/dhimage dhprog arg1 arg2

该程序的非dockerized版本的工作方式如下:
dhprog arg1 arg2

我有-v,因为我想使当前目录在容器中作为/workdir可用(这样,如果arg1是容器外部的文件名,则容器中的dhprog可以读取该文件)。

我有-u,因为我想以非root用户身份在容器中运行dhprog,并且如果arg2是输出文件名,它应该将其与调用docker run命令的UID和GID相同地写入容器外部。

如何在不影响2种功能(在容器外部读写文件)以及在容器外部将文件写为非root用户的情况下,使docker run命令行更短,尤其是-v-u标志。调用用户?

最佳答案

唯一真正的选择是分发一个shell脚本,为您打包所有脚本。例如,制作一个名为dhprog的shell脚本,如下所示:

#!/bin/sh
exec docker run -v "$PWD:/workdir" -u "$(id -u):$(id -g)" \
  --rm -it dhuser/dhimage dhprog "$@"

我会避免使用bash别名,因为在许多情况下这些别名将不可用,而$PATH中的脚本的工作原理与任何其他二进制文件一样。

10-06 03:09