Docker入门【2】

6- 网络

6.1- docker0

docker0是一个虚拟网桥。
linux 虚拟网桥特点:

  • 可以设置ip地址
  • 相当于拥有一个隐藏的虚拟网卡

docker0的地址划分:

  • ip: 172.17.16.1 掩码: 255.255.255.0
  • mac: 02:42:ac:11:00:00 到 02:42:ac:11:ff:ff
  • 一共65534个地址
    修改docker0的地址:

    ifconfig docker0 10.0.0.1 netmask 255.255.255.0

6.2- 自定义虚拟网桥

brctl addbr br0 ##添加虚拟网桥
ifconfig br0 192.168.100.1 netmask 255.255.255.0

vi /etc/default/docker
DOCKER_OPS="-b=br0"
service docker restart

6.3- 容器间互联

允许使用别名连接其他容器(即使其他容器Ip地址改变也可以连接),docker会自动修改ip地址和别名之间的映射。
改变了etc/hosts里面的内容和env环境变量的内容。

docker run --link=[container_name]:[alias] [image] [command]

6.4- 拒绝所有容器间互联

vi /etc/default/docker
DOCKER_OPS=” --icc=false"

6.5- 允许特定容器间互联

vi /etc/default/docker
DOCKER_OPS=" --iptables=true"  #允许docker修改linux的iptables配置

6.6- 容器与外部网络的连接

  • ip_forward
  • iptables
  • 允许端口映射访问
  • 限制IP访问容器

【ps】:ip_forward: linux的系统变量,决定系统是否会转发流量。

vi /etc/default/docker
DOCKER_OPS" --ip_forward=true" #默认,会将系统的ip_forward参数设置为1

7- 数据管理

7.1- 容器的数据卷

7.1.1- 数据卷介绍

_ _ _ 数据卷是经过特俗设计的目录,可以绕过联合文件系统UFS,为一个或多个容器提供访问。

7.1.2- 目的

_ _ _ 目的在于数据的持久化,数据卷完全独立于容器的生存周期。Docker不会再容器删除时删除其挂载的数据卷,也不会存在类似的垃圾收集机制对容器引用的数据卷进行处理。
Docker入门【2】

7.1.3- 特点

  • 在容器启动时初始化,如果容器使用的镜像在挂载点包含了数据,这些数据会拷贝到初始化的数据卷中。
  • 可以在容器之间共享和重用
  • 可以对数据卷的内容直接进行修改
  • 数据卷的变化不会影响镜像的更新
  • 卷会一直存在,即使挂载数据卷的容器已经被删除

7.1.4- 挂载数据卷

docker run -v /host_dir:/data -it centos /bin/bash
  • /host_dir 必须存在
  • /data如果不存在,则自动创建。

使用dockerfile 制作的镜像里面默认挂在的数据卷,启动容器时,是自动在
/var/lib/docker/vfs/dir里面自动分配的目录,这个生成的容器,相互之间的数据独立的

7.2- 数据卷容器

7.2.1- 介绍

_ _ _ 命名的容器挂载数据卷,其他容器通过挂载这个容器实现数据共享,被挂载数据卷的容器,就叫做数据卷容器。

Docker入门【2】

如图:

  • Data container可以是正在运行或者停止的容器
  • 此时container所挂载是数据卷,实际为data container已经挂载的所-
  • 在/var/lib/docker/vfs/dir里面的目录
  • data container删除了,但是data container曾经挂载的volume是不删除。即是/var/lib/docker/vfs/dir里面的目录不会删除,依然可以被container挂载使用

7.2.2- 挂载数据容器

docker run --volumes-from [container_name]

7.3- 数据卷的备份和还原

7.3.1- 数据备份

docker run --volumes-from [container_name] -v $(pwd):/backup centos tar cvf /backup/backup.tar [container data volume]

Docker入门【2】

例如:

docker run --volumes-from backup1 -v /backup:/backup --name backup2 centos tar cvf /backup/backup.tar /datavolume

7.3.2- 数据恢复

docker run --volumes-from [container_name] -v /backup:/backup centos tar xvf /backup/backup.tar [container data volume]

相关推荐