Docker如何固定IP设置的方法

由于工作需要,需要给Docker设置固定IP,在网上的查找了一些资料,自己试着实践一下,留个笔记。

经常用Docker模拟项目在生产环境中的部署,往往需要同时开好几台Docker容器,而且有时安装的软件需要绑定Docker局域网中的其他容器,如 MongoDB 副本集部署的时候,就需要绑定其他容器的内网IP。

但是,Docker 每次重启后,容器的IP地址会变化,查询了资料,Docker是支持设置固定IP的。

Docker 默认网络

Docker安装后,默认会创建下面三种网络类型:

$ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
237ea3d5cfbf    none        null        local

启动 Docker的时候,用 --network 参数,可以指定网络类型,如:

~ docker run -itd --name test1 --network bridge --ip 172.17.0.10 centos:latest /bin/bash

bridge:桥接网络

默认情况下启动的Docker容器,都是使用 bridge,Docker安装时创建的桥接网络,每次Docker容器重启时,会按照顺序获取对应的IP地址,这个就导致重启下,Docker的IP地址就变了

none:无指定网络

使用 --network=none ,docker 容器就不会分配局域网的IP

host: 主机网络

使用 --network=host,此时,Docker 容器的网络会附属在主机上,两者是互通的。

例如,在容器中运行一个Web服务,监听8080端口,则主机的8080端口就会自动映射到容器中。

创建自定义网络:(设置固定IP)

启动Docker容器的时候,使用默认的网络是不支持指派固定IP的,如下:

~ docker run -itd --net bridge --ip 172.17.0.10 centos:latest /bin/bash
6eb1f228cf308d1c60db30093c126acbfd0cb21d76cb448c678bab0f1a7c0df6
docker: Error response from daemon: User specified IP address is supported on user defined networks only.

因此,需要创建自定义网络,下面是具体的步骤:

步骤1: 创建自定义网络

创建自定义网络,并且指定网段:172.18.0.0/16

➜ ~ docker network create --subnet=172.18.0.0/16 mynetwork
➜ ~ docker network ls
NETWORK ID     NAME        DRIVER       SCOPE
9781b1f585ae    bridge       bridge       local
1252da701e55    host        host        local
4f11ae9c85de    mynetwork      bridge       local
237ea3d5cfbf    none        null        local

步骤2: 创建Docker容器

代码如下:

➜  ~ docker run -itd --name networkTest1 --net mynetwork --ip 172.18.0.2 centos:latest /bin/bash

这个时候,创建的Docker容器就会持有 172.18.0.2 这个IP.

[root@ec8e31938fe7 /]# ifconfig
eth0   Link encap:Ethernet HWaddr 02:42:AC:12:00:02
     inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
     inet6 addr: fe80::42:acff:fe12:2/64 Scope:Link
     UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
     RX packets:88 errors:0 dropped:0 overruns:0 frame:0
     TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:0
     RX bytes:4056 (3.9 KiB) TX bytes:1068 (1.0 KiB)

lo    Link encap:Local Loopback
     inet addr:127.0.0.1 Mask:255.0.0.0
     inet6 addr: ::1/128 Scope:Host
     UP LOOPBACK RUNNING MTU:65536 Metric:1
     RX packets:0 errors:0 dropped:0 overruns:0 frame:0
     TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
     collisions:0 txqueuelen:1
     RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

链接

Docker Container Networking

为Docker容器指定自定义网段的固定IP/静态IP地址

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • Docker 容器指定自定义网段的固定IP/静态IP地址

    Docker容器指定自定义网段的固定IP/静态IP地址 第一步:创建自定义网络 备注:这里选取了172.172.0.0网段,也可以指定其他任意空闲的网段 docker network create --subnet=172.172.0.0/16 docker-ice 注:docker-ice为自定义网桥的名字,可自己任意取名. 第二步:在你自定义的网段选取任意IP地址作为你要启动的container的静态IP地址 备注:这里在第二步中创建的网段中选取了172.172.0.10作为静态IP地址.这

  • Docker容器固定IP分配详解

    我们在使用docker run创建Docker容器时,可以用--net选项指定容器的网络模式,Docker有以下4种网络模式: host模式,使用--net=host指定. container模式,使用--net=container:NAME_or_ID指定. none模式,使用--net=none指定. bridge模式,使用--net=bridge指定,默认设置. 默认选择bridge的情况下,容器启动后会通过DHCP获取一个地址,这可能不是我们想要的,本文介绍在centos7 docker

  • Docker 配置固定IP及桥接的实现方法

    docker默认使用bridge模式,通过网桥连接到宿主机,而容器内部的ip则从网桥所在的ip段取未用的ip.这样做一个不方便的地方在于容器内部的ip不是固定的,想要连接容器时只能通过映射到宿主机的端口,因而有很多项目使用overlay来为docker提供网络的配置,比如Pipework.Flannel.Kubernetes.Weave.opencontrail等. 想要使用overlay来为docker配置网络,需要首先了解下docker的网络模式: 一.Docker的四种网络模式 Docke

  • Docker不能绑定静态的外网固定ip的问题及解决办法

    前段时间,我一直在研究如何给Docker分配静态ip,主要的用途是让thrift进来和出来都走一个ip,还有就是爬虫可以独立ip地址,这样就很好的实现了爬虫的多ip方式-  但是随着nginx tcp的加入和开发了一个基于Python socket的ip轮询访问模块解决了这两个问题-  当然也不能因为这两问题,就丢弃这问题了-. 在Docker run的时候,咱们可以添加-p参数来控制他的source来源ip.   下面的命令,对外来说,开放了192.168.1.200:9200的端口-  但是

  • Docker如何固定IP设置的方法

    由于工作需要,需要给Docker设置固定IP,在网上的查找了一些资料,自己试着实践一下,留个笔记. 经常用Docker模拟项目在生产环境中的部署,往往需要同时开好几台Docker容器,而且有时安装的软件需要绑定Docker局域网中的其他容器,如 MongoDB 副本集部署的时候,就需要绑定其他容器的内网IP. 但是,Docker 每次重启后,容器的IP地址会变化,查询了资料,Docker是支持设置固定IP的. Docker 默认网络 Docker安装后,默认会创建下面三种网络类型: $ dock

  • ubuntu16.0.4 设置固定ip地址的方法

    由于Ubuntu重启之后,ip很容易改变,可以用以下方式固定ip地址 1.设置ip地址 vi /etc/network/interface # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ens32 iface ens32 inet static address 192.168.159.130 netmask 255.255.255.0 gat

  • Vmware虚拟机设置固定IP地址的方法( 图文教程)

    一.在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子网掩码和网关,后面修改静态IP会用到. 注:上面的"使用本地DHCP服务--"这一项是没有钩选的 二.检查物理主机 网卡设置,打开网络和共享中心→ 更改适配器设置→,在VMware Network Adapter VMnet8上单击右键,选择属性按钮打开属性对话框.   修改IP地址注意填写和第一步设置的一样 三.进入虚拟机,设置固定IP地址. 输入如下

  • Docker绑定固定IP/跨主机容器互访操作

    前言 之前使用pipework 分配静态ip是暂时的,重启之后就会失效,并且使用pipework绑定的ip 物理机,虚拟机,docker容器的ip都在同一网段,这在生产环境是很困难的,下面使用docker自带的network实现固定ip分配,并且重启不会消失. 环境介绍 服务器IP 容器分配网段 启动容器的ID 192.168.1.105 172.172.0.0/24 172.172.0.10 192.168.1.106 172.172.1.0/24 172.172.1.10 绑定步骤 先操作1

  • 虚拟机中CentOS7设置固定IP地址的方法

    由于我的开发环境是在VMWare虚拟机里安装Centos,然后在host文件中设置拦截,这样就可以直接跳转虚拟机的CentOS,但是虚拟机的IP地址总是会变,就要随时修改host文件,很麻烦.决定虚拟机采用固定IP方式,记录下步骤,方便以后查阅,希望也能帮助到其他的小伙伴. 环境:主机是Windows 10 VMWare 12 Centos 7.5 1. 设置虚拟机的网络连接方式 点击虚拟机名称->右键->设置 修改网络适配器.网络连接方式可以选择"NAT模式"或者&quo

  • CMD命令行下修改网络IP设置的方法

    比较简单的版本,你只要知道需要设置的ip与dns信息就可以了 @echo. @echo ----------------------------------------- @echo 本命令将自动为"本地连接"填写以下内容: @echo IP地址:192.168.0.118 @echo 网关: 192.168.0.1 @echo DNS: 202.96.128.86 @echo ----------------------------------------- @echo. @echo

  • Docker 配置容器固定IP的方法

    目录 前言 环境介绍 绑定步骤 跨主机容器互访 前言 之前使用pipework 分配静态ip是暂时的,重启之后就会失效,并且使用pipework绑定的ip 物理机,虚拟机,docker容器的ip都在同一网段,这在生产环境是很困难的,下面使用docker自带的network实现固定ip分配,并且重启不会消失. 环境介绍 绑定步骤 先操作192.168.1.105虚拟机 第一步:创建自定义网络 docker network create --subnet=172.172.0.0/24 docker-

  • VMware配置虚拟机静态IP地址的方法

    使用VMware配置虚拟机静态IP地址,供大家参考,具体内容如下 一.安装好虚拟后在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Vmnet8 Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子网掩码和网关,后面修改静态IP会用到. 二.检查宿主机VM8 网卡设置,打开网络和共享中心→ 更改适配器设置→,在VMware Network Adapter VMnet8上单击右键,选择属性按钮打开属性对话框. 三.在虚拟机右下角,点击网络适配器按钮,右键选择断开连接,然

随机推荐