Docker-Compose从Windows到Linux容器的卷安装使一切都可执行

时间:2017-08-16 22:04:00

标签: docker docker-compose

我正在研究一些我在Docker容器中设置的Ansible东西。从Linux系统运行时,它运行良好。从Windows系统运行时,我收到以下错误:

ERROR! Problem running vault password script /etc/ansible-deployment/secrets/vault-dev.txt ([Errno 8] Exec format error). If this is not a script, remove the executable bit from the file.

基本上这就是说文件被标记为可执行文件。我注意到的(直到现在还没有出现过大问题)是从windows安装到linux容器的所有文件总是用可执行属性标记。

有没有办法控制/防止这种情况?

2 个答案:

答案 0 :(得分:0)

您是否尝试在已安装路径的末尾添加:ro

这样的事情:

HOST:CONTAINER:ro

答案 1 :(得分:0)

这是Docker for Windows使用的基于SMB的方法的局限性,用于使主机安装的卷正常工作,请参阅here

要解决executable bit错误,我最终将Ansible的python脚本作为--vault-password-file参数作为传递方法来解决,请参见here

#!/usr/bin/env python

import os
vault_password = open('PATH_TO_YOUR_VAULT_PASSWORD_FILE', 'r')
print vault_password.read()
vault_password.close()

由于在容器中执行了python脚本,因此需要在容器中访问Vault密码文件路径-我将其作为卷安装,但是您也可以将其构建到映像中。后者是安全隐患,不建议使用。