用户自定义网络
使用yum安装docker容器
# yum -y install docker-io
启动docker容器服务
#systemctl start docker
查看当前docker状态
#docker images
上传一个镜像 postgres.tar
将镜像上传docker容器
# docker load -i postgres.tar
用户使用--net=none后,可以自行配置网络,让容器达到跟平常一样具有访问网络的权限。通过这个过程,可以了解Docker配置网络的细节。
1 首先,启动一个/bin/bash容器,指定--net=none参数。
#docker run -i -t --rm --net=none training/postgres /bin/bash root@f2e2db7aaeba:/# |
2 重新打开一个远程连接在本地主机查找容器的进程id,并为它创建网络命名空间。
#docker ps -a //用于查找docker容器的name
#docker inspect -f '{{.State.Pid}}' f2e2db7aaeba 2874 # pid= 2874 #mkdir -p /var/run/netns # ln -s /proc/$pid/ns/net /var/run/netns/$pid |
3 检查桥接网卡的IP和子网掩码信息。
# ip addr show docker0 4: docker0: ... inet 172.17.42.1/16 scope global docker0 |
4 创建一对veth pair接口A和B,绑定A到网桥docker0,并启用它。
# ip link add A type veth peer name B # brctl addif docker0 A #ip link set A up #ip add 查看到A@B当前的状态是UP |
5 将B放到容器的网络命名空间,命名为eth0,启动它并配置一个可用IP(桥接网段)和默认网关。
# ip link set B netns $pid # ip netns exec $pid ip link set dev B name eth0 # ip netns exec $pid ip link set eth0 up # ip netns exec $pid ip addr add 172.17.42.99/16 dev eth0 # ip netns exec $pid ip route add default via 172.17.42.1 |
以上,就是Docker配置网络的具体过程。
查看更改后的容器IP。
root@82e245cf72c1:/usr/src/ghost# ip a …… 8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 link/ether 96:5f:8d:31:cc:3b brd ff:ff:ff:ff:ff:ff inet 172.17.42.99/16 scope global eth0 valid_lft forever preferred_lft forever inet6 fe80::945f:8dff:fe31:cc3b/64 scope link valid_lft forever preferred_lft forever |