当前位置: 首页 > 面试题库 >

码头工人端口可以转发到主机容器上的Unix文件套接字吗?

闻人越
2023-03-14
问题内容

运行以下命令失败:

sudo docker run -p unix:///tmp/file.sock:44444 -d image_name

我的端口转发语法有问题吗,或者这样的配置不可能?


问题答案:

Docker的-p语法不会采用unix套接字:

-p=[]      : Publish a container᾿s port to the host (format:
             ip:hostPort:containerPort | ip::containerPort |
             hostPort:containerPort)

一种解决方案是:

  • 运行没有任何-p规范的容器,我们将其命名为"cont1"--name cont1
  • 运行另一个容器,该容器:
    • 绑定安装 unix套接字(-v /tmp/file.sock:/tmp/file.sock),以便可以从容器内部访问它
    • 链接到第一个容器(--link cont1:cont1),以便能够连接到它
    • 运行诸如socat将流量从unix套接字路由到"cont1:4444"端点的工具

我不是socat专家,但是您需要的地址规范应如下所示: UNIX-LISTEN:/tmp/file.sock,fork,reuseaddr TCP4:cont1:4444



 类似资料:
  • 问题内容: 主机可以打开Docker容器访问端口吗?具体来说,我在主机上运行了MongoDB和RabbitMQ,我想在Docker容器中运行一个进程以侦听队列并(可选)写入数据库。 我知道我可以将端口从容器转发到主机(通过- p选项),并可以从Docker容器中连接到外部环境(即Internet),但我不想公开RabbitMQ和MongoDB端口从主持人到外界 编辑:一些澄清: 我必须执行此技巧才

  • 我有一个swarm集群,我在其中创建了一个全局服务,在集群中的所有docker主机上运行。 目标是让此服务的每个容器实例连接到侦听docker主机上的端口。 有关详细信息,我将遵循此Docker守护进程指标指南,以在所有主机上公开新的docker指标API,然后将该主机端口代理到覆盖网络中,以便Prometheus可以从所有群主机中抓取指标。 我已经阅读了多个docker github问题#839

  • 我在远程VPS上的docker-compose网络中运行容器。我希望能够从我的本地主机访问在这些容器中运行的数据库。 例如,如果容器和位于VPS上的容器网络中,我希望从计算机的访问。Kubernetes的CLI允许使用。 编辑:我已经接受了Ali Tou的回答,但是,如果能看到一个不需要重新启动容器来重新配置其端口以将它们暴露到主机上的解决方案,那就太好了。 编辑2:我在一篇相关的文章https:

  • 问题内容: 可以在UNIX套接字上监听吗?我找不到与此有关的任何文档。我只看到了在专用端口上监听的可能性。 问题答案: 是。在文档中。 https://nodejs.org/api/net.html#net_server_listen_path_backlog_callback

  • 问题内容: 我在公司中提供一个私有Docker容器,并希望我的同事能够在我们的内部网络中访问,问题是我的来宾操作系统是OSX,因此我只能使用192.168.99.100:3000访问我的应用程序来自docker机器的默认IP。 如何将docker-machine 3000端口转发到主机80端口? 问题答案: 目前,Docker Machine是在您计算机中VirtualBox下运行的虚拟机,因此要

  • 作为Jenkins docker形象的一部分, 我应该安装docker客户端(仅限), 它可以与安装在底层EC2实例上的docker守护进程通信。 UNIX套接字,我是说 根据这里给出的指示, 我不认为有必要安装docker守护进程与ink jenkins图像, 因为作者正在使用UNIX套接字与运行在EC2实例中的底层docker守护进程进行对话,如下所示。 我的理解是,在jenkins映像中安装