繁体   English   中英

如何连接到远程运行Apache Drill的Docker容器

[英]How do I connect to a docker container running Apache Drill remotely

机器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)计算机。

您需要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 docker stop; docker rm; docker run docker stop; docker rm; docker run容器以获取带有新配置文件的新副本。

如果要打包某个应用程序,但是与之交互的主要方式是通过CLI工具和本地文件,请考虑您是否真的想使用一种工具将应用程序的文件系统与主机的文件系统隔离开,并且需要以根级访问权限才能与之交互一切。 在您选择的脚本语言中安装半隔离工具的工具已经相当成熟,而对于已编译的语言,它们已经相当成熟。 在主机系统上安装软件没有任何问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM