Docker网络基础及Vagrant工具使用

一、基础概念

1.1、基于数据包的通行方式

1.2、公有 ip 和 私有 ip

  • public IP : 互联网上的唯一表示,可以访问 internet
  • Private IP : 不可再互联网上使用,仅供机构内部使用

私网地址: 
            A类:10.xxx.xxx.xxx 
            B类:172.16.0.0-172.31.255.255 
            C类:192.168.xxx.xxx
   

1.3、网络地址转换  NAT(本地访问 internet)

   访问外网的时候 通过查 NAT Translate Table

   对非私有的网络地址进行转换 转换好了之后再发送请求

1.4、Ping 和 telnet 工具

  • Ping(ICMP): 验证 IP的可达性 (不能百分百验证 其他情况 eg:防火墙)

   eg: ping 192.168.1.1

   eg: ping www.baidu.com

  • telnet: 验证服务的可用性

   eg: telnet 192.168.1.1 5000  访问 ip 为192.168.1.1 的 5000 端口

   eg: telnet www.baidu.com 80 

1.5、wireshark 网络 抓包工具

 通过上方搜索框输入 ip.addr==192.168.205.10

二、常见的虚拟机软件

在工作中,经常需要在不同平台使用不同的软件,这时候虚拟机就是必需品了。在Linux上比较常见的有kvm、Xen、virtualbox、vmware workstation等。

        

  • kvm

Kernel-based Virtual Machine的简称,是基于内核的开源虚拟化,在Linux2.6.20之后集成在各个主要的发行版本。KVM的虚拟化需要硬件支持(如Intel VT技术或者AMD V技术)。是基于硬件的完全虚拟化。在2008年的时候,红帽发言人表示,KVM相比Xen有着更好的可管理性以及更高的性能。因此RHEL6以及之后的版本,默认支持KVM,而放弃了Xen。

  • Xen

Xen 是一个开放源代码虚拟机监视器,由剑桥大学开发。Xen通过一种叫做半虚拟化的技术获得高效能的表现(较少的效能损失, 典型的情况下大约损失 2%, 在最糟的情况下会有 8% 的效能耗损; 与其它使用完全的虚拟化却造成最高到 20% 损耗的其他解决方案形成一个明显的对比),甚至在某些与传统虚拟技术极度不友好的架构上(x86),Xen也有极佳的表现。但是Xen的操作比较复杂,维护成本比较高。不支持windows虚拟机。

  • VirtualBox

VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems公司出品的软件,使用Qt编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。VirtualBox号称是最强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!VirtualBox 是由 qemu 改写而成,包含大量 qemu 代码。可以使用于不支持虚拟化的cpu。值得说的一点:VirtualBox 在图形方面比较好,能进行2D 3D加速。操作上有独立的图形界面,易于上手。但对CPU的控制不是很好,比较适合有桌面需要的虚拟机。

  • VMware Workstation

VMware Workstation 是一款功能强大的桌面虚拟计算机软件,提供用户可在单一的桌面上同时运行不同的操作系统,和进行开发、测试 、部署新的应用程序的最佳解决方案。收费收费收费,重要的事情说三遍。

三、环境准备

3.1、什么是vagrant?

vagrant是一个工具,用于创建和部署虚拟化开发环境的。

拿VirtualBox举例,VirtualBox会开放一个创建虚拟机的接口,Vagrant会利用这个接口创建虚拟机,并且通过Vagrant来管理,配置和自动安装虚拟机。

3.2、常见命令

命令 解释
vagrant box list 查看目前已有的box
vagrant box add 新增加一个box
vagrant box remove 删除指定box
vagrant init 初始化配置vagrantfile
vagrant up 启动虚拟机
vagrant ssh ssh登录虚拟机
vagrant suspend 挂起虚拟机
vagrant reload 重启虚拟机
vagrant halt 关闭虚拟机
vagrant status 查看虚拟机状态
vagrant destroy 删除虚拟机

3.3、应用

  • 编写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
  • 编写 setup.sh 为   并且创建  labs
#/bin/sh
# change registory
sudo yum install -y wget
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
sudo yum makecache
sudo yum -y update
# 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
  • 3. 使用 ip a 查看 虚拟机的ip地址  然后 使用 ping ping通两台虚拟机    能 ping 通即可

  ip a

       ping  192.168.205.10

  ping  192.168.205.11

发布了382 篇原创文章 · 获赞 306 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/lixinkuan328/article/details/103883675