如何正确地与容器内的docker客户端进行交互

我正在写一个小型的应用程序,用来与Docker API进行交互,以便按需运行容器。 我想在Docker容器中部署这个应用程序。 不过,我明白,装载docker套接字比较糟糕,因为它在本地主机上具有root权限。

有没有一个适当的方法来访问一个容器内的泊坞窗API,以避免这个警告?

为什么将Docker套接字安装到非特权容器是一个坏主意?
为了将unix套接字安装到您的Docker容器,您需要更改Docker守护进程套接字的权限。 显然,这可能会使非root用户能够访问Docker守护程序,如果担心特权升级攻击,这可能会成为问题。 ( 来源 )

我真的需要保护Docker套接字吗?
这取决于你的用例。 如果您的服务器上有许多用户,并且特别担心影响您的应用的非特权用户,那么一定要确保套接字安全。 如果这是一个完全专用于应用程序的虚拟机,则不安全可能更容易。

如何不安全地与套接字交互?
只需更改权限( 在此描述 ),然后将套接字安装到容器。 就这么简单。

如何安全地与sockets交互?
我认为有两个很好的方法来做到这一点:

  1. 重启启用TLS身份validation的Docker守护进程。 使用带有签名SSL密钥的HTTPS访问它,而不是访问unix套接字。 关于设置的更多说明可以在这里find。

  2. 如下所述,在unix套接字上使用授权插件。