一、Docker的四种网络模式:
Docker0 (容器不是网卡)
- host:容器将不会虚拟出自己的网卡和IP,而是使用宿主机的IP,换个端口号。
- container:创建的容器不会创建自己的网卡和IP,而是和另一个容器共享IP、端口。(同生共死)“多用于网站日志监控”
- None:该模式关闭了容器的网络功能。”无连接”无法联网
- bridge:此模式会为每一个容器分配、设置lP,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及lptables nat表配置与宿主机通信。
代码实现:
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指定项目名称,默认使用目录:名称 - 无状态化模式:只关注容器的数量,缺少就既是添加到原来数量。可以随时来代替。(web群集“大家都一样”)
- 有状态化模式:每一个都有自己的特色功能,缺少了该功能就会缺失。不能使用重新创建的方式来取代原本的容器。(数据库群集的读写分离“各个都不同)
三、Consul是用于实现分布式系统的服务发现与配置(容器监控)
- (1)Consul的特性:
- 支持健康检查,允许存储键值对
- 基于Golong语言,可移植性强
- 支持ACL访问控制
- (2)Docker等轻量级容器可无缝配合。
四、Fannel技术:(节点之间互通)
代码实现:
组织架构:
总包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 “执行”