安装 bash completion script
1.从https://github.com/docker/machine/tree/master/contrib/completion/bash下载 completion script:docker-machine-prompt.bash,docker0machine-wrapper.bash,docker-machine.bash
2.将其放置到/etc/bash_completion.d目录下
3.将如下代码添加到
$home/.bashrc:PS1='[\u@\h \W$(__docker_machine_ps1)]\$ '
查看当前machine
docker-machine ls
创建第一个machine
1.machine要求无密码登录远程主机
ssh-copy-id x.x.x.x
2.docker-machin create --driver generic --feneric-ip-address=x.x.x.x host1
显示host1 所有的环境变量
docker-machine env host1
根据提示,进入host1
eval $(docker-machine env host1)
更新machine的docker到最新版本
docker-machine upgrade host1 host2
查看machine的docker daemon配置
docker-machine config host1
不同machine之间拷贝文件
docker-machine scp host1:/tmp/a host2:/tmp/b/
跨主机网络方案包括:
1.docker 原生的overlay和macvlan
2.第三方方案:常用的包含flannel,weaver,calico
ibnetwork 是 docker 容器网络库,最核心的内容是其定义的 Container Network Model (CNM)
Sandbox: 是容器的网络栈,包含容器的 interface、路由表和 DNS 设置。 Linux Network Namespace 是 Sandbox 的标准实现。Sandbox 可以包含来自不同 Network 的 Endpoint
Endpoint:将 Sandbox 接入 Network。Endpoint 的典型实现是 veth pair,一个 Endpoint 只能属于一个网络,也只能属于一个 Sandbox。
Network: 包含一组 Endpoint,同一 Network 的 Endpoint 可以直接通信。Network 的实现可以是 Linux Bridge、VLAN 等。
Docker overlay
需要一个key-value数据库用于保存网状信息,包括Network,Endpoint,ip。
以容器的方式运行Consul
1.docker run -d -p 8500:8500 -h consul --name consul progrium/consul --server --bootstrap
2.修改host1和host2的docker daemon 配置文件 /etc/systemd/system/docker.service
--cluster-store=consul://192.168.56.101:8500 --cluster-adverties=enp0s8:2376
--cluster-store 制定consul的地址
--cluster-advertise 告知consul自己的里连接地址。
3.重启docker daemon
systemctl daemon-reload
systemlctl restart docker.service
在host1中创建overlay网络ov_net:1
docker network create -d overlay ov_net1
-d overlay指定dirver为overlay
IPAM是指IP Address Management,docker 自动为ov_net1分配的ip空间为10.0.0.0/24
运行一个busybox容器连接到ov_net1
docker run -itd --name bbox1 --network ov_net1 busybox
查看容器的网络配置
docker exec bbox1 ip r
bbox1 有两个网络接口 eth0 和 eth1
docker 会创建一个bridge网络“docker_gwbridge” 为所有连接到overlay网络的容器提供访问外网的能力
打开网络混杂模式
ip link set enp0s9 promisc on
查看promisc模式是否生效
ip link show eth0
创建macvlan网络mac_net1
docker network create -d macvlan --subent=x.x.x.x/xx --gateway=x.x.x.1 -o oarent=eth- mac_net
查看 ip forward
sysctl net.ipv4.ip_forward
sysctl -w net.ipv4.ip_forward=1
今天就到这里,改天专门对网络这块进行一个小结