📜  如何为 Docker 容器提供静态 IP?(1)

📅  最后修改于: 2023-12-03 15:23:45.645000             🧑  作者: Mango

如何为 Docker 容器提供静态 IP?

在 Docker 网络中,默认情况下容器会分配一个动态 IP 地址。然而,在某些情况下,需要为容器分配静态 IP 地址。本文将介绍如何为 Docker 容器提供静态 IP。

使用 Docker 自定义网络

Docker 内置了一些网络,如 bridgehost 等,但这些网络都是动态分配 IP 地址的。为了分配静态 IP 地址,可以使用 Docker 自定义网络。

创建自定义网络

首先,创建一个自定义网络:

docker network create --subnet=<SUBNET> <NETWORK_NAME>

其中,<SUBNET> 是 IP 地址段,<NETWORK_NAME> 是网络名称。

例如:

docker network create --subnet=172.20.0.0/16 mynet
创建容器并指定静态 IP

接着,创建容器并指定静态 IP 地址:

docker run --name=<CONTAINER_NAME> --net=<NETWORK_NAME> --ip=<STATIC_IP> <IMAGE_NAME>

其中,<CONTAINER_NAME> 是容器名称,<NETWORK_NAME> 是网络名称,<STATIC_IP> 是静态 IP 地址,<IMAGE_NAME> 是镜像名称。

例如:

docker run --name=mycontainer --net=mynet --ip=172.20.0.2 nginx

这样,容器就被分配了静态 IP 地址。

使用 Docker Compose

另一种方式是使用 Docker Compose,通过配置文件来指定网络和 IP 地址。

创建 Docker Compose 文件

在 Docker Compose 文件中,可以使用 networksip 来分别指定网络和 IP 地址,示例如下:

version: '3'
services:
  web:
    image: nginx
    networks:
      mynet:
        ipv4_address: 172.20.0.2

networks:
  mynet:
    ipam:
      config:
        - subnet: 172.20.0.0/16
启动容器

在配置好 Docker Compose 文件后,可以使用 docker-compose up 命令启动容器:

docker-compose up -d

这样,容器就被分配了静态 IP 地址。可以使用 docker-compose ps 命令来查看容器的 IP 地址和状态。

总结

通过以上两种方式,在 Docker 中为容器分配静态 IP 地址。使用 Docker 自定义网络和 Docker Compose 都可以实现这一功能,具体可以根据实际情况选择。