Docker:设置固定IP地址

一、查看Docker的网络类型

Docker有三种网络模式:Brigde,host,none。Brigde是常用的网络模式,也是缺省模式。

#docker network ls    ----查看docker下网络模式

NETWORK ID NAME DRIVER SCOPE

9781b1f585ae bridge bridge local

1252da701e55 host host local

237ea3d5cfbf none null local

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

1、brigde

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

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

2、host

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

3、none

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

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

二、创建docker时设置固定IP

可以使用Docker的 --ip参数 指定容器的IP地址。

例如,使用以下命令运行一个名为mycontainer的容器,并将其IP地址设为192.168.0.100:

docker run -d --name=mycontainer --ip=192.168.0.100 myimage

三、为已创建docker设置固定IP

如果需要为已经存在的容器指定IP地址,则可以通过以下步骤操作。

1、创建一个新的固定IP网络

首先,需要使用以下命令创建一个新的固定IP网络。

在该例子中,将网络名设置为 "mynetwork",IP地址范围为 "172.100.0.2/16",默认网关为 "172.100.0.1":

docker network create --subnet=172.100.0.0/16 --gateway=172.100.0.1 --ip-range=172.100.0.2/16 -d bridge container-network

2、将容器加入新网络

然后,将需要指定IP地址的容器加入这个新网络。使用以下命令将容器 "mycontainer" 加入到 "mynetwork" 网络中,并分配IP地址 "192.168.0.100":

docker network connect --ip=192.168.0.100 mynetwork mycontainer

现在,容器 "mycontainer" 将在 "mynetwork" 网络中,它的IP地址为 "192.168.0.100"。

注意,如果容器已加入一个Docker网络中,则必须首先将其从该网络中删除,然后再将其加入到新网络中。使用以下命令将容器从当前Docker网络中删除:

docker network disconnect bridge mycontainer

然后再使用上面的命令将容器加入新网络中。

最后,如果不再需要旧网络,则可以使用以下命令删除它:

docker network rm old_network

四、Docker Compose中定义容器的IP地址

使用networks设置固定IP地址,可以使用Docker Compose的networks设置容器的固定IP地址。例如,使用以下配置文件定义一个名为myapp的服务,并将其IP地址设置为192.168.0.100:

version: '3'

services:

myapp:

build: .
networks:
mynetwork:
ipv4_address: 192.168.0.100

networks:

mynetwork:

driver: bridge

ipam:

driver: default

config:

  • subnet: 192.168.0.0/24

在这个配置文件中,使用了Docker Compose的networks设置一个名为mynetwork的网络,并将其IP地址设置为192.168.0.100。然后,在myapp服务中,将networks参数设置为mynetwork,将myapp容器加入到这个网络中,并设置它的IP地址为192.168.0.100。最后,IPAM(IP地址管理)配置了一个IP地址段为192.168.0.0/24的子网,以供该网络使用。

五、Dockerfile中设置IP地址

在Dockerfile中设置IP地址。可以使用ENV命令设置容器的IP地址变量,然后以这个变量为参数启动容器。

例如:

#vim Dockerfile

FROM ubuntu

ENV MY_IP 192.168.0.100

CMD ["/bin/bash", "-c", "echo My IP address is $MY_IP"]

vim docker-compose.yml

version: '3'

services:

myapp:

build: .

command: /bin/bash -c "echo My IP address is $MY_IP"

例子中,Dockerfile中定义了一个名为MY_IP的变量,并设置为192.168.0.100。然后,在docker-compose.yml文件中,使用command参数启动容器,并将MY_IP变量替换到命令中。这样,在容器启动时就可以看到应该输出的IP地址了。

相关推荐
水银嘻嘻4 分钟前
12 web 自动化之基于关键字+数据驱动-反射自动化框架搭建
运维·前端·自动化
在肯德基吃麻辣烫32 分钟前
Netdata在Ubuntu环境下的安装与配置:构建实时系统监控与性能分析平台
linux·运维·ubuntu
不念霉运1 小时前
Gitee DevOps:中国企业数字化转型的“本土化加速器“
运维·gitee·团队开发·代码规范·devops·代码复审
安迪小宝1 小时前
6 任务路由与负载均衡
运维·python·celery
遇见火星2 小时前
jenkins流水线常规配置教程!
运维·docker·jenkins
LunarCod3 小时前
Ubuntu使用Docker搭建SonarQube企业版(含破解方法)
linux·运维·服务器·ubuntu·docker·开源·sonarqube
什么半岛铁盒3 小时前
Linux信号的保存
linux·运维·网络
noravinsc3 小时前
国产化中间件 替换 nginx
运维·nginx·中间件
惜.己4 小时前
Linux常用命令(十四)
linux·运维·服务器
linkingvision4 小时前
H5S 视频监控AWS S3 对象存储
linux·运维·aws·视频监控s3对象存储