python - 从 python 创建容器时,Docker API 无法识别“npipe”挂载类型
问题描述
我正在尝试以编程方式创建一个 docker 容器,该容器与在主机上运行的服务通信并在命名管道(又名 unix 套接字)上侦听。我得到:APIError:400 客户端错误:错误请求(“npipe 类型的安装配置无效:安装类型未知”)
我的设置包括: Docker 版本 18.09.7,构建 2d0083d Python 2.7.12 docker==4.0.1(来自 pip freeze)
进口
docker
from docker.types import Mount
mounts = [
Mount('/tmp/redis.sock', '/tmp/redis.sock', type='npipe'),
Mount('/opt/data/', '/tmp'),
]
client = docker.from_env()
client.containers.run(
"alpine",
**{
"command":"sleep 600",
"network_mode": "host",
"mounts": mounts
}
)
我没有运行“睡眠”容器,而是得到:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/models/containers.py", line 803, in run
detach=detach, **kwargs)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/models/containers.py", line 861, in create
resp = self.client.api.create_container(**create_kwargs)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/api/container.py", line 429, in create_container
return self.create_container_from_config(config, name)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/api/container.py", line 440, in create_container_from_config
return self._result(res, True)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/api/client.py", line 267, in _result
self._raise_for_status(response)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/api/client.py", line 263, in _raise_for_status
raise create_api_error_from_http_exception(e)
File "/opt/grok/ve/grok/local/lib/python2.7/site-packages/docker/errors.py", line 31, in create_api_error_from_http_exception
raise cls(e, response=response, explanation=explanation)
docker.errors.APIError: 400 Client Error: Bad Request ("invalid mount config for type "npipe": mount type unknown")
任何想法发生了什么?谢谢!
解决方案
遇到了类似的问题。它的文档记录很差,但看起来npipe
安装是特定于 Windows 的。我猜在 Linux 和 macOS 上,您应该创建自己的并将其与任何其他文件一样绑定挂载。
-
npipe:将命名管道从主机挂载到容器中(仅限 Windows 容器)。
-
TypeNamedPipe 是挂载 Windows 命名管道的类型
推荐阅读
- c++ - MFC 如何更改 CLinkCtrl 的链接文本颜色?
- vue.js - 为 v-model 使用参数名称
- python - 为什么在使用 pyperclip 时只复制一条语句
- python - 从 Informatica Cloud 运行 Python 脚本
- unicode - 将多字节数组转换为 Unicode
- flutter - 我怎样才能在颤振上画出这个弯曲的抽屉?
- sql - PLSQL 在发布者表中添加新发布者,然后将其添加到发布者值为空的图书表中并以给定格式显示
- windows - 无法在 Windows 10 中保存文件并且文件资源管理器看起来不同
- mysql - mysql.connector.errors.ProgrammingError: 1064 (42000); 创建表
- servicestack - 将 PostgreSQL 聚合函数与 OrmLite 一起使用