Docker网络(docker学习笔记)


一、 任务描述
1、 了解Docker容器网络,了解如何配置基础网络,包括如何创建网络命名空间、绑定接口到网桥、端口映射等。
2、 了解Docker高级网络配置。

二、需要网络连接工具CRT

三、 任务实施

1、配置容器网络

(1) 启动一个/bin/bash容器,指定—net=none参数。

docker run -i -t --rm --net=none nginx /bin/bash

在这里插入图片描述
之后的操作都在克隆会话窗口进行的
在这里插入图片描述
(2) 在本地主机查找容器的进程ID,并为它创建网络命名空间。

docker inspect -f '{{.State.Pid}}' <370ddb764dc8,容器ID>
pid=1881 #数字是容器的进程ID
mkdir -p /var/run/netns #创建一个文件
ln -s /proc/$pid/ns/net /var/run/netns/$pid

在这里插入图片描述
(3) 检查网卡的IP和子网掩码信息。

ip addr show docker0

在这里插入图片描述
(4) 创建一对veth pair 接口A和B,绑定A到网桥docker0,并启用。

ip link add A type veth peer name B #创建一对veth pair接口A和B
yum install  bridge-utils #安装网桥工具
brctl addif docker0 A #绑定A到网桥docker0
ip link set A up #启用网卡A

在这里插入图片描述
(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.0.1/16 dev eth0   #此处的IP地址是docker0的地址
ip netns exec $pid ip route add default via 172.17.0.1

在这里插入图片描述

2、通过端口映射访问容器

(1) 映射所有接口地址。

docker run -d -p 5000:5000 training/webapp python app.py

在这里插入图片描述
(2) 映射到指定地址的指定端口。

docker run -d -p 127.0.0.1:5001:5000 training/webapp python app.py

在这里插入图片描述
(3) 映射到指定地址的任意端口。

docker run -d -p 127.0.0.1::5000 training/webapp python app.py
docker run -d -p 127.0.0.1:5002:5000/udp training/webapp python app.py #使用udp标记来标记udp端口

在这里插入图片描述
下面是udp标记的
在这里插入图片描述
(4) 查看映射端口配置。

docker port <27e9654fb881,容器ID> 5000
docker run -d -p 5003:5000 -p 3000:80 training/webapp python app.py #容器有自己的内部网络和IP地址,可以多次使用“-p” 标记来绑定多个端口

在这里插入图片描述

3、配置容器互联

(1) 自定义容器名称。

docker run -d -P --name Web training/webapp python app.py #切记容器不要冲突
docker ps -l #使用docker ps -l来验证设定的名称
docker inspect -f "{{.Name}}" <29fed0a98a33,容器ID> #查看容器修改过的名称

在这里插入图片描述
(2) 容器互联。

docker run -d --name db training/postgres #创建一个新的数据库容器
docker rm -f Web #删除之前创建的web容器
docker run -d -P --name Web --link db:db training/webapp python app.py #然后创建一个新的web容器,并将它连接到db容器
docker run --rm --name Web2 --link db:db training/webapp env #使用env命令来查看web容器的环境变量

docker run -t -i --rm --link db:db training/webapp /bin/bash
进入容器后 cat /etc/hosts
ping db

在这里插入图片描述

4、创建一个点到点的连接

(1)创建一个点到点连接。

  • 启动两个容器,克隆2个会话框,共三个会话框
docker run -i -t --rm --net=none training/webapp /bin/bash

在这里插入图片描述
在这里插入图片描述

  • 找到进程号,然后创建网络命名空间的跟踪文件
docker inspect -f '{{.State.Pid}}' <容器ID>

在这里插入图片描述

  • 创建一对peer接口,然后配置路由
mkdir -p /var/run/netns
ln -s /proc/<容器进程号1>/ns/net /var/run/netns/<容器进程号1>
ln -s /proc/<容器进程号2>/ns/net /var/run/netns/<容器进程号2>
ip link add C type veth peer name D
ip link set C netns <容器进程号1>
ip netns exec <容器进程号1> ip addr add 10.1.1.1/32 dev C
ip netns exec <容器进程号1> ip link set C up
ip netns exec <容器进程号1> ip route add 10.1.1.2/32 dec C

ip link set C netns <容器进程号2>
ip netns exec <容器进程号2> ip addr add 10.1.1.1/32 dev D
ip netns exec <容器进程号2> ip link set D up
ip netns exec <容器进程号2> ip route add 10.1.1.2/32 dec D

在这里插入图片描述
在这里插入图片描述

  • 容器1:ping 10.1.1.2
    在这里插入图片描述
  • 容器2:ping 10.1.1.1
    在这里插入图片描述
  • 两个容器已经可以互相ping通
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值