在机器A 上,我运行
$ docker run -i --name drill-1.14.0 -p 8047:8047
--detach -t drill/apache-drill:1.14.0 /bin/bash
<displays container ID>
$ docker exec -it drill-1.14.0 bash
<connects to container>
$ /opt/drill/bin/drill-localhost
我的问题是,如何从 B机运行
docker exec -it drill-1.14.0 bash
机器A 上的-我浏览了帮助页面,但没有任何点击。
两台计算机都是Windows(10 x64)计算机。
答案 0 :(得分:1)
您需要SSH或以其他方式安全地从机器B连接到机器A,然后在此处运行相关的Docker命令。周围没有安全的捷径。
请记住,完全能够运行任何Docker命令都意味着对系统的根级访问(您可以docker run -u root -v /:/host ...
并查看或更改所需的任何主机系统文件)。因此,通常可以控制谁可以确切地运行Docker命令。 可能打开网络Docker套接字,但极其很危险:现在,任何可以通过网络访问该套接字的人都可以将主机的密码和sudoers文件更改为允许无密码的root等效ssh登录。 (例如,一两个星期前,《 Google新闻》给我带来了一篇有关攻击者寻找开放Docker网络套接字并将其用于将机器转变为加密货币矿工的文章。)
如果您正在构建服务,并且希望用户与之进行远程交互,那么您可能需要使任何可用接口作为网络请求,而不是通过运行本地shell命令。例如,基于HTTP的服务通常有一组/admin
的URL路径,这些URL路径需要单独的密码身份验证或其他不同的特权。
如果您试图通过服务的本地配置文件来管理服务,通常最好的方法是将配置文件存储在主机系统上,使用docker run -v
将它们注入容器中,并在需要时使用要更改它们,请docker stop; docker rm; docker run
容器以新的配置文件获取它的新副本。
如果要打包某些应用程序,但与之交互的主要方式是通过CLI工具和本地文件,请考虑您是否真的想使用一种将应用程序的文件系统与主机的文件隔离开并需要root级访问权限的工具与之互动。在您选择的脚本语言中安装半隔离工具的工具已经相当成熟,而对于已编译的语言,它们已经相当成熟。在主机系统上安装软件没有错。