Dockerfile 中的桥接网络连接

Tom*_*oma 2 ftp docker dockerfile

我有这个 Dockerfile :

FROM php:5.6-cli
VOLUME /usr/src/up
WORKDIR /usr/src/up
RUN docker-php-source extract \
&& docker-php-ext-install pdo pdo_mysql 
&& docker-php-source delete

RUN echo "date.timezone = Europe/Paris" >> /usr/local/etc/php/php.ini \
Run Code Online (Sandbox Code Playgroud)

这一个使用 PHP 5.6 创建一个新的虚拟机,安装 pdo 和 pdo_mysql 扩展并在 php.ini 中指定时区。

我遇到的问题是,默认情况下,虚拟机具有“NAT 网络 IP 地址”。因此,具有 FTP 连接的脚本不起作用,我收到此错误:

Warning: ftp_get(): I won't open a connection to 172.17.0.2 (only to x.x.x.x)
Run Code Online (Sandbox Code Playgroud)

所以我希望我的虚拟机有一个“桥接网络 IP 地址”,并从我的 DHCP 获取它的 IP 地址。

我怎样才能做到这一点 ?我可以将它包含在 Dockerfile 中以方便其他人的工作吗?

提前致谢 !

亲切的问候,托马斯

Ker*_*rem 5

默认情况下,docker 服务器会创建一个默认网桥,但您可以创建自己的网桥网络,并在启动时将您的容器分配给该自定义网桥。或者您可以使用docker network似乎更简单的命令。这样您就可以指定 IP 范围以匹配您的 DHCP 设置。

创建自己的桥梁

docker network create --driver=bridge \
--subnet=192.168.127.0/24 --gateway=192.168.127.1 \
--ip-range=192.168.127.128/25 yourbridge
Run Code Online (Sandbox Code Playgroud)

使用自定义网桥运行容器;

docker run -d --net=yourbridge ..
Run Code Online (Sandbox Code Playgroud)

有关具体示例,请参阅此博客文章:http : //www.dasblinkenlichten.com/docker-networking-101-user-defined-networks/

在用户定义的桥接网络中,不支持链接。您可以在此网络中的容器上公开和发布容器端口。如果您想让桥接网络的一部分可供外部网络使用,这将非常有用。

在此处输入图片说明

  • 非常感谢您的回答!:-) 我试图将 docker network 命令集成到 Dockerfile 中,但显然这不是正确的方法。我是否必须与 Dockerfile 分开进行?我想将最大值放入 Dockerfile 中,以简化其他期货用户的构建。提前致谢,亲切的问候托马斯 (2认同)