Docker實現容器具有固定IP
Docker的網路型別
Docker安裝後,預設會建立三種網路
$ docker network ls NETWORK IDNAMEDRIVERSCOPE 6bdc00ad2a8dbridgebridgelocal e373574073e9hosthostlocal d3d47c52f57bnonenulllocal
Docker啟動的時候,可以使用 --network
引數指定使用的網路
$ docker run -itd --name test1 --network bridge --ip 172.17.0.2 tomcat
網路型別的介紹
- bridge: 預設情況下啟動的Docker容器,都是使用 bridge,Docker安裝時建立的橋接網路,每次Docker容器重啟時,會按照順序獲取對應的IP地址,這個就導致重啟下,Docker的IP地址就變了
- host:Docker 容器的網路會附屬在主機上,兩者是互通的。
- none: docker 容器就不會分配區域網的IP
建立自定義網路並設定固定IP
在搭建一些叢集軟體的時候,元件和元件之間需要進行網路通訊,這個時候如果每次重啟IP都發生變化會很不方便,因此希望能夠將容器的IP固定下來,這也是可以實現的,具體參考下面的方法。
1.建立自定義網路
$ docker network create --subnet=172.18.0.0/16 es-network 1e3e1eb702176df3e44111970292deaf5def7564135439fae21be489d6a8dcef $ docker network ls NETWORK IDNAMEDRIVERSCOPE 6bdc00ad2a8dbridgebridgelocal 1e3e1eb70217es-networkbridgelocal e373574073e9hosthostlocal d3d47c52f57bnonenulllocal
2.建立Docker容器
docker run -e ES_JAVA_OPTS="-Xms256m -Xmx256m" -d -p 9202:9202 -p 9302:9302 -v ~/Projects/elk/elk-cluster/data3/es3.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v ~/Projects/elk/elk-cluster/data3:/usr/share/elasticsearch/data --name ES03 --net=es-network --ip=172.18.0.12 --hostname=es-node3 docker.elastic.co/elasticsearch/elasticsearch:6.7.0
使用 docker inspect container-id
可以看到當前容器分配的IP就是固定IP了。