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地址了。

相关推荐
prinrf('千寻)几秒前
nacos设置权重进行负载均衡不生效
运维·负载均衡
Lary_Rock14 分钟前
Android 编译问题 prebuilts/clang/host/linux-x86
android·linux·运维
绵绵细雨中的乡音27 分钟前
Linux进程学习【基本认知】
linux·运维·学习
matrixlzp38 分钟前
K8S Service 原理、案例
云原生·容器·kubernetes
GnixAij2 小时前
Docker SSH端口转发
docker·ssh
珹洺2 小时前
Linux操作系统从入门到实战(三)Linux基础指令(上)
linux·运维·服务器
剁椒排骨2 小时前
win11什么都不动之后一段时间黑屏桌面无法显示,但鼠标仍可移动,得要熄屏之后才能进入的四种解决方法
运维·windows·经验分享·计算机外设·win11·win10
angushine2 小时前
让Docker端口映射受Firewall管理而非iptables
运维·docker·容器
归寻太乙2 小时前
Linux环境变量
linux·运维·服务器
m0Java门徒2 小时前
面向对象编程核心:封装、继承、多态与 static 关键字深度解析
java·运维·开发语言·intellij-idea·idea