您的位置:首页 > 运维架构 > Docker

docker 固定IP

2016-07-12 23:15 781 查看

环境

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变了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ubuntu docker