Docker-核心知识之网络模式、Volume数据共享

一、 Docker 容器的网络模式介绍

简介:介绍Docker网络模式

  • 默认的三种网络模式:
    • bridge:桥接模式
    • host:主机模式
    • none:无网络模式
  • 查看网络模式:
    •  docker network ls

二、 Docker 容器的bridge模式实战演练

简介:介绍Docker桥接网络模式

  • 桥接模式是docker 的默认网络设置,当Docker服务启动时,会在主机上创建一个名为docker0的虚拟网桥,并 选择一个和宿主机不同的IP地址和子网分配给docker0网桥
  • 桥接拓扑图:

  

  • 安装工具:

    yum -y install net-tools

    yum install -y bridge-util

  • 查看桥接情况:

    brctl show

  

   

三、Docker 容器的host模式实战演练

简介:介绍Docker主机网络模式

  • host 模式:该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。

  • 查看ip

    ip addr

  • 查看防火墙

    firewall-cmd --state

  • 查看80端口

    netstat -tunlp |grep "80"

  • 启动nginx容器命令并防火墙放开80端口:

    docker run -d --net=host mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

    firewall-cmd --zone=public --add-port=80/tcp --permanent

    firewall-cmd --reload

 

四、Docker 容器的none模式介绍

简介:介绍Docker关闭网络模式介绍

  • none模式:关闭模式
  • 无法连外网


五、 Docker 容器间基于Link实现单向通信

简介:介绍基于link单向通信

  • 启动mysql数据库容器:

    docker run --name mydb -e MYSQL_ROOT_PASSWORD=abc123456 -d mysql:5.7

  • 启动tomcat应用容器并link到mysql数据库:

    docker run -itd --name tomcat1 --link mydb tomcat:tag
    注意:mydb 这个容器一定要存在!

  • 官方版的mysql 5.7 需要安装工具才有ping命令:

    apt-get update && apt-get install iputils-ping

  • 进入tomcat1容器,ping mydb成功。但是进入mydb容器,ping tomcat1失败,因为是单向通讯。

 

六、 Docker容器间利用brige网桥实现双向通信

简介:介绍基于Bridge网桥实现双向通信  

  • 执行:docker network ls

  

  • 创建一个新的网桥:docker network create -d bridge my_bridge
  • 启动第一个容器:docker run -itd --name tomcat centos:7
  • 启动第二个容器:docker run -itd --name redis centos:7
  • 把第一个容器加入网桥:docker network connect my_bridge tomcat
  • 把第二个容器加入网桥:docker network connect my_bridge redis
  • 最后分别进入俩个容器中进行验证

  

  

七、 Docker容器的特权模式介绍

简介:介绍特权模式

  • 启动一个普通的容器

    docker run -itd --name mycentos centos:7 /bin/bash

  • 安装网络工具:

    yum -y install net-tools

  • 执行route -n 查看网关
  • 删除网关,没有权限:

    route del default gw 172.17.0.1

  • 启动拥有特权模式的容器:

    docker run -itd --privileged=true --name mycentos1 centos:7 /bin/bash

  • 进入容器:

    docker exec -it ef /bin/bash

  • 删除网关

    route del default gw 172.17.0.1

  • 成功
  • 备注:特权模式用的比较少


  八、 Docker核心知识之Volume数据共享

简介:Volume的介绍使用

  • dockerfile

    FROM centos:7

    VOLUME ["/usr/local"]
  注意:在dockerfile里设置volume是无法修改宿主机的挂载路径的

  • 创建镜像

    docker build -t  mycentos:volume .

  • 创建容器:

    docker run -it --name volumn 8d74ce642c2e

  • 使用docker inspect 容器ID 可以查看详细的挂载信息

  • 宿主机挂载路径内容与容器路径内容一致:



使用volume容器共享创建nginx集群

1、先在本地启动nginx:

  • 查看端口进程有没有被占用

    netstat -anp | grep 80

  • 如被占用先杀掉端口

    kill 80

  • 查看nginx进程有没有启动

    ps -ef |grep "nginx"

  • 启动nginx

    /usr/local/nginx/sbin/nginx

  • 修改html

 

 

2、使用--volumes-from 实现容器与容器之间volume共享

  • 创建nginx1(方式一:普通方法)

    docker run -itd -p 8080:80 -v /usr/local/nginx/html:/usr/local/nginx/html --name nginx1 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

  • 创建nginx2(方式二:使用--volumes-from)

    docker run -itd -p 8081:80 --volumes-from nginx1 --name nginx2 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

  • 创建nginx3

    docker run -itd -p 8082:80 --volumes-from nginx1 --name nginx3 mycentos:nginx /usr/local/nginx/sbin/nginx -g "daemon off;"

  • 对/usr/local/nginx/html/index.html进行修改
  • 打开浏览器进行访问测试
  •  

     

 

posted on 2021-12-05 18:30  cherry_ning  阅读(320)  评论(0)    收藏  举报

导航