我正在尝试制作一些docker容器来存放我的一些日常工具。但是我的许多工具都依赖于能够连接到设备(通过wifi)以提取数据。
我一直在做研究,但很困惑,想了解要支持这种情况需要做什么。我知道通常docker容器是服务器而不是客户端。但是我读过关于人们做相反的事情。
我正在尝试找出进行此操作所需的更改/配置类型。
默认情况下,Docker将在您的物理服务器上创建一个虚拟网络。例如docker0界面。这是在bridge模式下发生的,它允许该接口通过您的eth0设备连接到Internet 。eth0是物理系统接口;与您的本地以及全球网络相关的所有内容都将通过eth0物理接口传递。
docker0
bridge
eth0
如果要访问正在运行的Docker容器中的Internet或本地网络,则必须在docker守护程序启动期间nameserver根据物理系统/etc/resolv.conf文件进行添加。这样,您通常可以通过物理系统访问的所有内容都将可以通过docker容器访问。
nameserver
/etc/resolv.conf
还有一件事,您必须在启动docker容器时公开端口,以便它可以在该eth0接口的帮助下从docker网络外部提取数据。在的帮助下,所有这些配置都会自动进行iptables。Docker将添加iptables rules转发流量docker0到eth0的服务,您的服务将完美运行。
iptables
iptables rules
例
docker run -it --name "$container_name" -d -h "$host_name" -p 9080:9080 -p 1522:1522 "$image_name"
在上述情况下,我的应用程序正在$host_name通过port 提取数据1522。-p 1522:1522表示它将请求发送到1522物理计算机上的端口,类似地,物理计算机会将请求发送到同一1522端口上的网络托管计算机。”
$host_name
1522
-p 1522:1522