一、准备工作
我需要先准备两台vagrant虚拟机,其vagrantFile如下:
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.require_version ">= 1.6.0"
boxes = [
{
:name => "docker-node1",
:eth1 => "192.168.205.10",
:mem => "1024",
:cpu => "1"
},
{
:name => "docker-node2",
:eth1 => "192.168.205.11",
:mem => "1024",
:cpu => "1"
}
]
Vagrant.configure(2) do |config|
config.vm.box = "centos/7"
boxes.each do |opts|
config.vm.define opts[:name] do |config|
config.vm.hostname = opts[:name]
config.vm.provider "vmware_fusion" do |v|
v.vmx["memsize"] = opts[:mem]
v.vmx["numvcpus"] = opts[:cpu]
end
config.vm.provider "virtualbox" do |v|
v.customize ["modifyvm", :id, "--memory", opts[:mem]]
v.customize ["modifyvm", :id, "--cpus", opts[:cpu]]
end
config.vm.network :private_network, ip: opts[:eth1]
end
end
config.vm.synced_folder "./labs", "/home/vagrant/labs"
config.vm.provision "shell", privileged: true, path: "./setup.sh"
end
然后还有个startup.sh
#/bin/sh
# install some tools
sudo yum install -y git vim gcc glibc-static telnet bridge-utils
# install docker
curl -fsSL get.docker.com -o get-docker.sh
sh get-docker.sh
# start docker service
sudo groupadd docker
sudo usermod -aG docker vagrant
sudo systemctl start docker
rm -rf get-docker.sh
其目录结构如下:

如果需要labs可以私聊我或者在文下评论。
二、运行docker
运行命令:
vagrant up
vagrant status
可以看到有两个虚拟机处在运行状态:

进入一个虚拟机:
vagrant ssh docker-node1
进来之后输入:
sudo docker ps
可以发现连接不上,这是因为daemon没有开启的原因

输入以下命令,即可解决:
sudo systemctl daemon-reload
sudo service docker restart
三、操作
1.创建container
sudo docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done"
busybox 是一个非常小的linux的image,在里面运行一个shell命令,是一个无线循环,一直执行。
然后会返回一个id,可以看到这个容器

然后进入container中:
sudo docker exec -it a05 /bin/sh

运行ip a 命令,可以看到一些地址相关的信息,这些信息就是namespace。
2.基本概念
退出容器之后,在虚拟机中运行ip a命令,可以看到一些接口,而这些接口跟我们在container里面看到的接口是不一样的,而且他们是完全隔离的。我们创建了一个docker容器也就是创建了一个namespace,跟主机的namespace是完全隔离的。

同理,我再创建一个test2的容器,

进入test2容器里面,是可以ping通test1的

它们的网络是可以相互通信的。
3.底层
查看networknamespace
sudo ip netns list
增加networknamespace
sudo ip netns add test1
删除networknamespace
sudo ip netns delete test1
网友评论