icYFTL Asked:2022-05-02 08:57:06 +0800 CST2022-05-02 08:57:06 +0800 CST 2022-05-02 08:57:06 +0800 CST Docker 向主机的 LAN 发送请求 772 总而言之。 我需要从容器网络上的容器向主机的本地网络发出请求。 但是,如果我添加 network_mode: host 然后容器之间的网络崩溃。 作为一种选择,将整个容器网络转移到主机的本地区域,但这不是很漂亮,在我看来。 把postfix它扔进网络也不是很好。 docker-compose 1 个回答 Voted Best Answer Roman-Stop RU aggression in UA 2022-05-04T01:08:55+08:002022-05-04T01:08:55+08:00 我正在使用反向 ssh 隧道。 首先,我从 Dockerfile 创建一个图像: FROM alpine:3.5 RUN apk add --no-cache openssh && ssh-keygen -A && echo 'root:root' | chpasswd EXPOSE 22 CMD /usr/sbin/sshd -D -o PermitRootLogin=yes -o AddressFamily=inet -o GatewayPorts=yes 让我们称之为sshd:latest。 如果,对于演示,运行一个将在单独的终端中等待连接的命令 echo -e "HTTP/1.1 200 OK\n\nHello" | nc -l 10000 那么你可以这样做: $ cat docker-compose.yml version: '3' services: curl: image: curlimages/curl host: image: sshd:latest ports: - "22222:22" $ docker-compose up -d host Creating network "sshd-demo_default" with the default driver Creating sshd-demo_host_1 ... done $ ssh -f -T -N -R 9000:localhost:10000 -p 22222 root@localhost root@localhost's password: $ docker-compose run curl host:9000 Creating sshd-demo_curl_run ... done Hello 那些。反向 ssh 隧道将端口 9000 上的所有连接重定向到容器 csshd到端口 10000 上的 localhost。 如果您需要向可从本地主机访问的另一台主机发出请求,您可以通过将选项的值更改为 来设置-R它ssh。这里有一些很好的插图来展示它是如何工作的:
我正在使用反向 ssh 隧道。
首先,我从 Dockerfile 创建一个图像:
让我们称之为
sshd:latest
。如果,对于演示,运行一个将在单独的终端中等待连接的命令
那么你可以这样做:
那些。反向 ssh 隧道将端口 9000 上的所有连接重定向到容器 c
sshd
到端口 10000 上的 localhost。如果您需要向可从本地主机访问的另一台主机发出请求,您可以通过将选项的值更改为 来设置
-R
它ssh
。这里有一些很好的插图来展示它是如何工作的: