我需要对现有的CLI进行容器化,该CLI也可以读取和写入文件。与容器化的cp
或kubectl
任何其他典型的bash命令类似。
是否可以包装docker命令以启用对主机系统上文件的访问?
cat my_wrapper.sh
:
#!/bin/sh
docker run --rm -it -v ??? \
$IMAGE \
"$@"
是否可以像my_wrapper.sh
那样挂载my_wrapper.sh --option /some/file/argument
可以读写文件的任何内容?
说明
当然,您可以简单地挂载文件所在的路径,但是然后:
答案 0 :(得分:1)
实际上,您可以使用bindmount volume来做到这一点:
$ my_wrapper.sh /some/file/argument
my_wrapper.sh的内容:
#!/bin/bash
if [ "$#" -ne 1 ]; then
echo "Illegal number of parameters"
exit 1
else
if [ -f "$1" ]; then
dir=$(dirname "$1")
else
echo "File doesn't exist"
exit 2
fi
fi
IMAGE=xxxx
docker run --rm -it -v "$dir":"$dir" \
"$IMAGE" \
"$1"