天天看點

Docker實作容器具有固定IP

Docker的網絡類型

Docker安裝後,預設會建立三種網絡

$ docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
6bdc00ad2a8d        bridge              bridge              local
e373574073e9        host                host                local
d3d47c52f57b        none                null                local      

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 ID          NAME                DRIVER              SCOPE
6bdc00ad2a8d        bridge              bridge              local
1e3e1eb70217        es-network          bridge              local
e373574073e9        host                host                local
d3d47c52f57b        none                null                local      

​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      

繼續閱讀