天天看点

docker的四种网络模式与compose

一、Docker的四种网络模式:

Docker0 (容器不是网卡)

  • host:容器将不会虚拟出自己的网卡和IP,而是使用宿主机的IP,换个端口号。
    docker的四种网络模式与compose
  • container:创建的容器不会创建自己的网卡和IP,而是和另一个容器共享IP、端口。(同生共死)“多用于网站日志监控”
    docker的四种网络模式与compose
  • None:该模式关闭了容器的网络功能。”无连接”无法联网
    docker的四种网络模式与compose
  • bridge:此模式会为每一个容器分配、设置lP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及lptables nat表配置与宿主机通信。
    docker的四种网络模式与compose
    docker的四种网络模式与compose
    代码实现:
1、设定容器固定ip地址:
   创建网桥:docker network create --subnet=172.18.0.0/24 mynetwork
   创建容器及赋予ip地址:
docker run -itd --name test1--net mynetwork --ip 172.18.0.10 centos:7 /bin/bash
2、进入容器:docker exec -it id /bin/bash
3、下载网卡查看器:yum -y install net-tools
4、查看本容器的id:ifconfig
           

二、compose 容器编排

  • 1、 同时部署多个容器 yml文件
  • 2、Docker Compose的前身是Fig,它是一个定义及运行多个Docker容器的工具。
  • 3、使用Docker Compose不再需要使用Shell脚本来启动容器。
  • 4、Docker Compose非常适合组合使用多个容器进行开发的场景。
  • 4、YAML是一种标记语言很直观的数据序列化格式
  • 5、文件格式及编写注意事项:
    • 不支持制表符tab键缩进,需要使用空格缩进
    • 通常开头缩进2个空格
    • 字符后缩进1个空格,如冒号、逗号、横杠
    • 用#号注释
    • 如果包含特殊字符用单引号引起来
    • 布尔值必须用引号括起来 Swarm官方管理docker容器
  • 6、docker-compose选项:

    –verbose 输出更多调试信息

    –version 打印版本并退出

    -f,–file FILE使用特定的compose模板文件,默认为docker-compose.yml

    -p, --project-name NAME指定项目名称,默认使用目录:名称

    docker的四种网络模式与compose
    docker的四种网络模式与compose
  • 无状态化模式:只关注容器的数量,缺少就既是添加到原来数量。可以随时来代替。(web群集“大家都一样”)
  • 有状态化模式:每一个都有自己的特色功能,缺少了该功能就会缺失。不能使用重新创建的方式来取代原本的容器。(数据库群集的读写分离“各个都不同)

三、Consul是用于实现分布式系统的服务发现与配置(容器监控)

  • (1)Consul的特性:
    • 支持健康检查,允许存储键值对
    • 基于Golong语言,可移植性强
    • 支持ACL访问控制
  • (2)Docker等轻量级容器可无缝配合。

四、Fannel技术:(节点之间互通)

docker的四种网络模式与compose

代码实现:

组织架构:
总包compose_nginx:
     1、vim docker-compose.yml文件
     2、nginx包:
           vim Dockerfile文件
           nginx-1.12.0.tar.gz安装包
           vim run.sh
    3、wwwroot:index.html

1、将docker-compose拖进来,做基础工具包
chmod +x docker-compose 
cp -p docker-compose /usr/local/bin/

2、mkdir compose_nginx  创建nginx的服务工具
cd compose_nginx

mkdir nginx
cd nginx                                          将nginx的包拖进来!!
vim Dockerfile
FROM centos:7
MAINTAINER  this is nginx image
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

在compose_nginx目录下:
vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
     - 1216:80
     - 1217:443
    networks:
     - yun
    volumes:
     - ./wwwroot:/usr/local/nginx/html
networks:
  yun:

docker-compose -f docker-compose.yml up -d  “执行”
           

继续阅读