Docker 用于远程访问的网络主机命令

Docker network host commands for remote access

我正在尝试构建一个安装了 xrdp 服务的 linux docker 容器,这样我就可以通过本地主机接口和主机网络 eth0 ip 接口远程访问 RDP 服务.我无法理解我在 docker 网络和正确启动容器方面所缺少的东西。 Docker 运行宁 Ubuntu Linux 20.04。作为测试,当我 运行 这个 docker 命令时:

docker run --rm -d --network host --name my_nginx nginx

我观察到 nginx 正在侦听端口 80 并暴露在本地主机接口上,我可以使用浏览器访问它。验证方式:

sudo netstat -tulpn | grep 80

现在这是我要构建和启动的 linux 容器。我使用 Docker 文件来启动 xrdp 服务。

FROM kalilinux/kali-rolling

ARG DEBIAN_FRONTEND=noninteractive

RUN apt-get -y update && apt-get -y dist-upgrade && apt-get -y autoremove && apt-get install -y wget && apt-get clean

RUN apt-get -y install vim net-tools whois netcat exploitdb man-db dirb nikto wpscan uniscan nodejs npm python3-pip tor proxychains

RUN apt-get install xrdp lxde-core lxde tigervnc-standalone-server -y

COPY ./xrdp.ini /etc/xrdp/xrdp.ini

COPY ./Xwrapper.config /etc/X11/Xwrapper.config

RUN service xrdp start

ENTRYPOINT ["/bin/bash"]

现在我构建容器并尝试 运行 它像这样:

docker run --rm -d --network host --name my_kali kali

容器看起来不像 运行s 并且没有侦听 lo 或 eth0 接口的端口 3389。现在,当我以另一种方式 运行 容器时,我可以通过 Docker0 IP 接口 (172.17.0.2):

使用 RDP 客户端访问主机

docker run -ti kali

但这只会通过 Docker0 专用网络公开 RDP 服务。目标或用例是构建一个可以通过主机的 eth0 接口访问的容器。用户可以通过 RDP 进入它并使用 GUI 到 运行 工具。对我在这里遗漏的任何帮助表示赞赏。

这是 Dockerfile 中的解决方案: CMD /usr/sbin/xrdp-sesman;/usr/sbin/xrdp -n

然后用-p启动镜像: docker run -d --name kali-image -p 3389:3389 kali

验证端口正在侦听: docker port kali-image

感谢上面的 David Maze。