如何禁用Docker双向复制功能(容器到宿主机、宿主机到容器)
禁用Docker双向复制功能的实现方案
Docker的文件/内容复制主要涉及两类场景:一是通过docker cp命令完成的宿主机与容器之间的文件传输,二是Docker Desktop桌面版默认开启的剪贴板共享功能,以下是两个方向的具体禁用方法:
一、禁用宿主机向容器复制的功能
- 拦截
docker cp从宿主机到容器的写入操作
最简单的方式是在启动容器时添加安全参数,禁止容器内进程获得额外权限,同时拦截文件写入操作:docker run --no-new-privileges --security-opt no-new-privileges:true <镜像名>
如果你需要全局生效,可以修改Docker daemon配置文件/etc/docker/daemon.json,添加"no-new-privileges": true配置后重启Docker服务即可。多租户场景下也可以配置Docker授权插件,直接拦截所有docker cp命令中目标路径为容器内部的请求。 - 禁用Docker Desktop剪贴板的宿主机到容器共享
打开Docker Desktop设置界面,找到Resources→Advanced选项,取消勾选「Enable clipboard sharing」即可全局禁用剪贴板共享。如果只需要针对单个容器禁用,启动时添加参数--device /dev/null:/dev/vsock即可阻断剪贴板依赖的虚拟套接字通信。
二、禁用容器向宿主机复制的功能
- 拦截
docker cp从容器到宿主机的读取操作
可以通过配置Docker daemon的授权策略,禁止所有docker cp命令中源路径为容器内部路径的请求。如果是生产环境,建议给容器配置只读根文件系统,同时禁止挂载宿主机目录,从源头切断可复制文件的生成路径:docker run --read-only --tmpfs /tmp <镜像名>
极致安全场景下也可以选择重新编译Docker daemon,移除docker cp相关的功能模块彻底禁用该命令。 - 禁用Docker Desktop剪贴板的容器到宿主机共享
操作和上文中的剪贴板禁用方法一致,关闭全局剪贴板共享,或者单容器启动时禁用vsock设备即可。
注意:以上方法仅能拦截常规的复制操作,如果容器已经配置了宿主机目录挂载、公网访问权限等,仍然可以通过其他渠道完成文件传输,生产环境建议结合网络策略、最小权限原则共同加固。
内容的提问来源于stack exchange,提问作者Tony Jose
相关产品推荐
相关产品推荐

