Docker容器管理

Docker容器管理

Docker网络连接

单机Docker网络配置

  • linux虚拟网桥的特点:

    • 可以设置IP地址
    • 相当于拥有一个隐藏的虚拟网卡
  • docker0的地址自动划分

    • 分配IP地址172.17.X.X
    • 分配MAC地址
    • 子网掩码255.255.0.0
  • 每一个docker主机都对应一个docker容器网卡
  • 自定义docker0地址

    sudo ifconfig docker0 192.168.200.1 netmask 255.255.255.0
  • 自定义虚拟网桥

    • 添加虚拟网桥

      sudo brctl addbr br0
      
      sudo ifconfig br0 192.168.100.1 netmask 255.255.255.0
    • 更改docker守护进程的启动配置

      sudo vim /etc/default/docker
      
      DOCKER_OPTS="-b=br0"
      
      sudo service docker restart

Docker容器互联

  • 默认:允许所有容器间互联

    • –icc

      sudo docker run -it --name cct1 ubuntu bash

      默认–icc=true,但是IP地址会发生变化

    • –link

      sudo docker run -it --name cct2 --link=cct1:webtest ubuntu bash

      链接容器,不会因IP变化导致链接不到

  • 拒绝所有容器间互联

    sudo docker run -it --name cct3 --icc=false ubuntu bash
  • 允许特定容器间互联

    sudo docker run -it --name cct4 --icc=false --iptables=true --link=cct1:webtest ubuntu bash
    

Docker容器与外部网络连接

  • iptables配置

    sudo iptables -I DOCKER -s 10.X.X.X -d 172.17.X.X -p TCP -dport 80 -j ACCEPT
    或者
    sudo iptables -I DOCKER -s 10.X.X.X -d 172.17.X.X -p TCP -dport 80 -j DROP
  • docker端口映射

    sudo docker run -it --name cct5 -p 80 ubuntu bash
    apt-get update
    apt-get install -y nginx
    nginx
    ctrl+p
    sudo docker port cct5

Docker数据管理

数据卷

  • 概念:经过特殊设计的目录,可以绕过联合文件系统,为一个或者多个容器提供访问。
  • 设计目的:

    • 数据持久化
    • 独立于容器生命周期
    • 不存在回收机制
  • 存在Docker宿主机中,可利用容器技术与宿主机共享数据,可以是目录或文件,同一个目录或文件支持多个容器访问,实现容器间数据共享与交换
  • 特点

    • 在容器启动时初始化
    • 可以在容器间共享和重用
    • 容器可以对数据卷中的内容直接修改
    • 数据卷的变化不会影响镜像的更新
    • 数据永久存在
  • 挂载数据卷并添加访问权限,权限默认可读写

    sudo docker run -it -v ~/datavolume:/data:权限 ubuntu bash
    

数据卷容器

  • 概念:数据卷容器就是挂载了数据卷的容器,其他容器通过挂载这个容器实现数据共享
  • 挂载数据卷容器并添加访问权限,权限默认可读写

    sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash
    sudo docker run -it --volume-from dv1 --name dv2 ubuntu bash
  • 数据卷容器仅仅作为数据传递,即使删除,数据仍然存在
  • 备份

    sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash
    sudo docker run -it --volume-from dv1 -v ~/backup:/backup --name dv2 ubuntu tar cvf /backup/dv1.tar /data
  • 还原

    sudo docker run -it -v ~/datavolume:/data --name dv1 ubuntu bash
    sudo docker run -it --volume-from dv1 -v ~/backup:/backup --name dv2 ubuntu tar zxvf /backup/dv1.tar /data

Docker跨主机连接

网桥配置

  • 主机配置

    sudo vim /etc/network/interfaces
    
    auto br0
    iface br0 inetstatic
    address 10.211.55.3
    netmask 255.255.255.0
    gateway 10.211.55.1
    bridge_ports eth0
  • Docker容器配置

    sudo vim /etc/default/docker
    
    DOCKER_OPTS="-b=br0 --fixed-cidr='10.211.55.128/20'"

Open vSwitch配置

  • 建立ovs网桥
  • 添加GRE(通用路由协议封装)连接
  • 配置Docker容器虚拟网桥
  • 为虚拟网桥添加ovs接口
  • 添加不同Docker容器网段路由
sudo ovs-vsctl add-br obr0
sudo ovs-vsctl add-port obr0 gre0
sudo ovs-vsctl set interface gre0 type=gre options:remote_ip=192.168.1.100
sudo ovs-vsctl show

sudo brctl addbr br0
sudo ifconfig br0 192.168.1.1 netmask 255.255.255.0
sudo brctl addif br0 obr0
sudo brctl show

sudo vim /etc/default/docker
DOCKER_OPTS="-b=br0"

sudo ip route add 192.168.2.0/24 via 192.168.1.100 dev eth0
route

weave配置

  • 安装
  • 启动

    weave launch
  • 连接不同主机
  • 通过weave启动容器

    weave run 192.168.1.2/24 -it --name wv1 ubuntu bash

总结

通过极客学院中Docker容器的学习,对Docker容器有了一个初步的认识,以后会逐步深入,容器化技术会越来越好。

    原文作者:Awebone
    原文地址: https://segmentfault.com/a/1190000012169934
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞