在机器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)机器。
发布于 2018-11-01 23:45:26
您需要从机器B安全地连接到机器A,然后在那里运行相关的Docker命令。这附近没有安全的捷径。
记住,能够运行任何Docker命令都意味着对系统的根级访问(您可以通过docker run -u root -v /:/host ...查看或更改您想要的任何主机系统文件)。由于这一点,通常可以控制到底谁可以运行Docker命令。打开一个联网的Docker套接字是可能的,但非常危险:现在,任何能够通过网络访问该套接字的人都可以更改主机的密码和sudoers文件,以允许一个无密码的根等效的ssh登录。(谷歌新闻(Google )一、两周前给我写了一篇文章,内容是攻击者正在寻找开放的Docker网络套接字,并利用这些套接字将机器变成加密货币矿工。)
如果您正在构建一个服务,并且希望用户与它进行远程交互,那么您可能需要将任何可用的接口作为网络请求,而不是运行本地shell命令。例如,基于have的/admin路径集通常需要单独的密码身份验证或其他不同的权限。
如果您试图通过服务的本地配置文件来管理服务,通常最好的方法是将配置文件存储在主机系统上,使用docker run -v将它们注入容器,当您需要更改它们时,docker stop; docker rm; docker run容器将获得一个新的配置文件的新副本。
如果您正在打包某个应用程序,但与其交互的主要方式是通过CLI工具和本地文件,那么请考虑是否确实希望使用一个工具,该工具将应用程序的文件系统与主机系统隔离开来,并需要根级访问才能与其交互。在您选择的脚本语言中安装半隔离工具的工具已经相当成熟,编译语言也非常成熟;在您的主机系统上安装软件没有什么问题。
https://stackoverflow.com/questions/53110750
复制相似问题