如何将 Docker 容器绑定到特定的外部接口?


简介

有时您可能希望将 Docker 容器绑定到主机上的特定外部接口。例如,您可能希望将 Docker 容器中运行的 Web 服务器绑定到特定的网络接口,以便可以从特定的 IP 地址或主机名访问它。

有几种方法可以将 Docker 容器绑定到特定的外部接口。在本文中,我们将探讨三种方法:--network 标志、--publish 标志和--add-host 标志。

将 Docker 容器绑定到特定外部接口的先决条件

在开始将 Docker 容器绑定到特定外部接口之前,您需要确保您的机器上已安装 Docker。您可以按照 Docker 网站上的说明在您的机器上安装 Docker。

您还必须确保主机上提供了所需的外部接口。例如,如果您想将 Docker 容器绑定到特定的 IP 地址,则必须确保在主机上配置了该 IP 地址。

使用 --network 标志将 Docker 容器绑定到特定外部接口

--network 标志允许您指定 Docker 容器应连接到的网络。您可以使用此标志将容器绑定到主机上的特定外部接口。

要使用--network 标志,您需要指定网络名称和容器名称。例如 -

$ docker run --network=my-network --name=my-container my-image 

此命令将启动一个基于my-image 镜像的 Docker 容器,并将其连接到my-network 网络。容器将被命名为my-container

您可以使用docker network create 命令创建网络 -

$ docker network create --driver=bridge --subnet=172.25.0.0/16 my-network 

此命令将使用桥接驱动程序创建一个名为my-network 的新网络,子网为172.25.0.0/16。然后,您可以使用此网络将 Docker 容器绑定到子网内的特定 IP 地址。

使用 --publish 标志将 Docker 容器绑定到特定外部接口

--publish 标志允许您指定 Docker 容器上的哪些端口应公开到主机。您可以使用此标志将容器绑定到主机上的特定外部接口。

要使用--publish 标志,您需要指定容器上的端口和主机上的端口。例如 -

$ docker run --publish=8080:80 --name=my-container my-image 

此命令将启动一个基于my-image 镜像的 Docker 容器,并将容器的端口 80 公开到主机的端口 8080。容器将被命名为my-container

您还可以使用--publish-all 标志指定端口范围 -

$ docker run --publish-all=true --name=my-container my-image 

此命令将启动一个基于my-image 镜像的 Docker 容器,并将容器的所有端口公开到主机。容器将被命名为my-container

使用 --add-host 标志将 Docker 容器绑定到特定外部接口

--add-host 标志允许您向容器的/etc/hosts 文件添加条目。您可以使用此标志将容器绑定到主机上的特定外部接口。

要使用--add-host 标志,您需要指定主机名和 IP 地址。例如 -

$ docker run --add-host=my-host:172.17.0.1 --name=my-container my-image 

此命令将启动一个基于my-image 镜像的 Docker 容器,并向/etc/hosts 文件添加一个条目,将主机名my-host 映射到 IP 地址172.17.0.1。容器将被命名为my-container

您还可以通过多次使用--add-host 标志来指定多个主机名到 IP 的映射 -

$ docker run --add-host=my-host:172.17.0.1 --add-host=my-other-host:172.17.0.2 --name=my-container my-image 

将 Docker 容器绑定到特定外部接口的高级主题

除了上面描述的方法之外,还有其他一些方法可以将 Docker 容器绑定到特定的外部接口。

一种方法是使用 Docker Compose 自动化将 Docker 容器绑定到特定外部接口的过程。Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。您可以使用 Docker Compose 在docker-compose.yml 文件中定义您的网络和发布设置,然后使用docker-compose up 命令启动您的容器。

另一种方法是使用反向代理或负载均衡器将多个 Docker 容器绑定到同一个外部接口。反向代理位于您的容器前面,并根据主机名或其他请求详细信息将传入流量路由到相应的容器。负载均衡器将传入流量分布到多个容器,以提高性能和可用性。

结论

在本文中,我们探讨了将 Docker 容器绑定到特定外部接口的三种方法:--network 标志、--publish 标志和--add-host 标志。我们还简要介绍了一些高级主题,例如使用 Docker Compose 和反向代理或负载均衡器。

使用这些选项,您可以轻松地将 Docker 容器绑定到特定的外部接口,从而更轻松地从不同的网络或设备访问您的应用程序。

更新于: 2023年1月16日

7K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.