当前位置: 首页 > news >正文

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容器有了一个初步的认识,以后会逐步深入,容器化技术会越来越好。

相关文章:

  • 组件之间数据交互
  • io性能、free、ps命令、查看网络状态、抓包
  • C#学习常用类(1003)---NameObjectCollectionBase类
  • 思科动态路由RIP实验
  • 使用 python 收集获取 Linux 系统主机信息
  • 转录组入门(8): 富集分析
  • 单区域OSPF-----点到点链路上的ospf
  • 线性布局通过适配器可以动态加载view
  • 第1讲 Spring Boot 快速开始 《Kotlin + Spring Boot :下一代 Java 服务端开发》
  • 使用python selenium webdriver模拟浏览器
  • lvm的创建,扩容,回缩
  • 阿里云云市场成API经济领跑者
  • 数据库笔记15:Date类
  • Linux 磁盘分区、格式化、目录挂载
  • truncate后恢复包---FY_Recover_Data.pck 包的内容
  • 分享一款快速APP功能测试工具
  • 0基础学习移动端适配
  • ECS应用管理最佳实践
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JAVA多线程机制解析-volatilesynchronized
  • VUE es6技巧写法(持续更新中~~~)
  • 欢迎参加第二届中国游戏开发者大会
  • 爬虫模拟登陆 SegmentFault
  • 前端设计模式
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 一个JAVA程序员成长之路分享
  • Play Store发现SimBad恶意软件,1.5亿Android用户成受害者 ...
  • ​比特币大跌的 2 个原因
  • #define 用法
  • #define与typedef区别
  • (AtCoder Beginner Contest 340) -- F - S = 1 -- 题解
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (分布式缓存)Redis哨兵
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • ***详解账号泄露:全球约1亿用户已泄露
  • .bat文件调用java类的main方法
  • .net core 源码_ASP.NET Core之Identity源码学习
  • .NET Framework 4.6.2改进了WPF和安全性
  • .net mvc 获取url中controller和action
  • .NET 中 GetProcess 相关方法的性能
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .Net多线程总结
  • .NET教程 - 字符串 编码 正则表达式(String Encoding Regular Express)
  • .NET企业级应用架构设计系列之应用服务器
  • .net中的Queue和Stack
  • ??在JSP中,java和JavaScript如何交互?
  • @Repository 注解
  • @Resource和@Autowired的区别
  • [C#]获取指定文件夹下的所有文件名(递归)
  • [C++]命名空间等——喵喵要吃C嘎嘎
  • [DEBUG] spring boot-如何处理链接中的空格等特殊字符
  • [HEOI2013]ALO
  • [HTML]Web前端开发技术6(HTML5、CSS3、JavaScript )DIV与SPAN,盒模型,Overflow——喵喵画网页
  • [leetcode] 66. 加一