首页 > 其他分享 >Docker如何固定IP设置的方法

Docker如何固定IP设置的方法

时间:2022-11-10 14:24:27浏览次数:65  
标签:容器 -- IP 设置 0.0 Docker docker

http://www.kaotop.com/it/180973.html

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

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

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

Docker 默认网络

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

1 $ docker network ls
2 NETWORK ID     NAME DRIVERSCOPE
3 9781b1f585ae    bridgebridgelocal
4 1252da701e55    host host local
5 237ea3d5cfbf    none null local

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

1 ~ 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的,如下:

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

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

步骤1: 创建自定义网络

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

1 ➜ ~ docker network create --subnet=172.18.0.0/16 mynetwork
2 ➜ ~ docker network ls
3 NETWORK ID     NAME DRIVERSCOPE
4 9781b1f585ae    bridgebridgelocal
5 1252da701e55    host host local
6 4f11ae9c85de    mynetwork      bridgelocal
7 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.

 1 [root@ec8e31938fe7 /]# ifconfig
 2 eth0   link encap:Ethernet HWaddr 02:42:AC:12:00:02
 3      inet addr:172.18.0.2 Bcast:0.0.0.0 Mask:255.255.0.0
 4      inet6 addr: fe80::42:acff:fe12:2/64 Scope:link
 5      UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
 6      RX packets:88 errors:0 dropped:0 overruns:0 frame:0
 7      TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
 8      collisions:0 txqueuelen:0
 9      RX bytes:4056 (3.9 KiB) TX bytes:1068 (1.0 KiB)
10  
11 lo    link encap:Local Loopback
12      inet addr:127.0.0.1 Mask:255.0.0.0
13      inet6 addr: ::1/128 Scope:Host
14      UP LOOPBACK RUNNING MTU:65536 Metric:1
15      RX packets:0 errors:0 dropped:0 overruns:0 frame:0
16      TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
17      collisions:0 txqueuelen:1
18      RX bytes:0 (0.0 b) TX bytes:0 (0.0 b)

标签:容器,--,IP,设置,0.0,Docker,docker
From: https://www.cnblogs.com/x666-6/p/16876858.html

相关文章

  • javaScript中的数组
    javaScript中的数组之前我们已经简单了解过数组了,现在我们开始详细的学习数组,数组就是存放一组数据的优雅变量创建数组的两种方法:let数组名=newArray()letarr=newA......
  • docker安装最新版nacos
    docker安装最新版nacos第一步:拉取镜像dockerpullnacos/nacos-server第二步:mysql创建数据库CREATEDATABASEnacos;USEnacos;CREATETABLE`config_info`(`id......
  • Springboot项目部署到docker
    Manve项目部署到docker第一步:将springboot项目打包Maven打包SpringBoot项目报错(repackagefailed:Unabletofindmainclass),排除寻找Main方法,一般用于被依赖的公用......
  • Mac苹果鼠标移动速度设置到最快还是太慢了,你可以这样调~
    很多Mac苹果用户都反应鼠标移动速度设置到最快还是太慢了,超级迟钝,怎么办?今天macz为您推荐两种方法,非常的实用,可以瞬间解决苹果鼠标感觉反应迟钝的问题,赶快试试吧。第一种......
  • 【lwip】11-UDP协议&源码分析
    目录前言11.1传输层说明11.2UDP协议简介11.3UDP特点11.4UDP端口号11.5UDP报文11.6UDP伪首部和校验和11.7wireshark报文分析11.8UDP数据结构11.8.1UDP首部11.9UDP......
  • JavaScript WEB怎么实现大文件上传
    ​ 1 背景用户本地有一份txt或者csv文件,无论是从业务数据库导出、还是其他途径获取,当需要使用蚂蚁的大数据分析工具进行数据加工、挖掘和共创应用的时候,首先要将本地文......
  • [JavaScript-06]面向对象
    1.面向对象//大括号就是对象p={a:1,b:2,c:3,}//系统对象全部基于window//console.log(window);//window.alert(1);//alert(2);//console......
  • Dockerfile编写以及构建镜像
    Docker从下载镜像,启动容器,运行容器后在容器中输入命令来运行应用程序,这些命令都是手工一条条往里输入的,无法重复利用,而且效率很低。所以就需要一种脚本,把想执行的操作依次......
  • simpread-typescript 注释大法
    本文由简悦SimpRead转码,原文地址zhuanlan.zhihu.com函数、interface、enum、type、var的申明建议使用文档注释(持续更新中)apifunction/***获取店铺签约......
  • simpread-获取 JavaScript 对象的键 _ D 栈 - Delft Stack
    本文由简悦SimpRead转码,原文地址www.delftstack.com使用Object.keys()方法获取javascript对象的键Object.keys()函数返回一个包含javascript对象键的数组......