我有以下 docker run 命令:
docker run -dit
--privileged
-v $PWD/etc/ipsec.conf:/etc/ipsec.conf:ro
-v $PWD/etc/ipsec.secrets:/etc/ipsec.secrets:ro
-v $PWD/etc/ipsec.d:/etc/ipsec.d:ro
-v $PWD/etc/ipsec.d/certs:/etc/ipsec.d/certs:ro
-v $PWD/etc/strongswan.conf:/etc/strongswan.conf:ro
-v $PWD/etc/strongswan.d/charon-logging.conf:/etc/strongswan.d/charon-logging.conf:ro
-v $PWD/etc/strongswan.d/charon/forecast.conf:/etc/strongswan.d/charon/forecast.conf:ro
-v $PWD/etc/strongswan.d/charon/eap-radius.conf:/etc/strongswan.d/charon/eap-radius.conf:ro
-v $PWD/etc/vpn-certs:/etc/vpn-certs:ro
-v $PWD/etc/smcroute/startup.sh:/etc/smcroute/startup.sh:ro
--name strongswanC$i strongswan-compile
我正在将存储在主机上的文件和文件夹组合安装到容器内的特定位置。
我想将其转换为 Kuberbetes yaml 文件,但我被 -v 选项卡住了。所有挂载都只能读取。
我该如何在 K8s yaml 文件中执行这些挂载。HostPath 是否合适?
答案1
一点背景...
我正在使用 Dockerfile 构建一个包含两个源代码包的本地映像,以获取我需要的功能。因此,我没有使用“docker run -it -v something:something”,而是在 Docker 文件中添加了以下行:
# Copy the contents of ./etc into the image
COPY $PWD/etc/ /etc/
这会将我的 $PWD/etc 文件夹中的文件复制到映像中,完全消除了所有卷挂载的需要。效果很好。