docker 固定IP

这篇博客详细介绍了在Ubuntu 14.04.4 LTS环境下,如何为Docker容器配置固定IP。首先,需要安装brctl网桥,然后以--net='none'模式启动容器,并通过容器ID找到其进程PID。接着,创建并绑定网卡到docker0,启动网卡,最后将容器网卡配置为172.17.42.1,该IP属于docker0。注意,容器重启后需要重新配置,因为PID会变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

环境

Ubuntu 14.04.4 LTS

安装 brctl 网桥

apt-get install bridge-utils

以–net=’none’的方式启动一个container

docker run -i -t --name=net --hostname=net --net='none'  ubuntu:ssh /bin/bash
root@net:/# ifconfig 
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:0 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

使用’none’模式,container中没有获取到IP,甚至连网卡都没有

首先找到ID 通过ID找到进程Pid

docker ps -a                                   
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
eaadcd10ca44        ubuntu:ssh          "/bin/bash"         4 minutes ago       Up 4 minutes                            net

docker inspect -f "{{.State.Pid}}" eaadcd10ca44

10711

以容器的ID创建一个网卡

ip link add veth_eaadc type veth peer name eaadcd10ca44

把网卡绑定到 docker0

brctl addif docker0 veth_eaadc

启动网卡

ip link set veth_eaadc up
ip link set eaadcd10ca44 netns 10711
#容器内部的已经有网卡了,只是没IP
root@net:/# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
28: eaadcd10ca44@if29: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
    link/ether a2:25:7d:d1:2b:e5 brd ff:ff:ff:ff:ff:ff

配置容器网卡

mkdir -p /var/run/netns/
ln -s /proc/10711/ns/net /var/run/netns/10711

ip netns exec 10711 ip link set dev eaadcd10ca44 name eth0

ip netns exec 10711 ip link set eth0 up

ip netns exec 10711 ip addr add 172.17.111.3/16 dev eth0

ip netns exec 10711 ip route add default via 172.17.42.1

172.17.42.1 为docker0的IP

配置完成。

容器重启需要重新配置,因为PID变了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值