ドッカー作曲コンテナの配置

この章では、知識のポイントをまとめたものです。

ドッカー作曲コンテナ振り付け
ビルドドッカーサービスアーキテクチャを自動的に発見
リアライズコンテナサービスは自動的にクラスタnginxのに参加します

**Docker Compose容器编排功能**
Docker compose的前身是Fig,它是一个定义及运行多个docker容器的工具
使用Docker Compose不再需要使用shell脚本来启动容器
Docker Compose非常适合组合是同多个容器进行开发的场景
可以执行多个容器的操作
**Docker Compose容器编排**
YAML是一种标记语言很直观的数据序列化格式
文件格式及编写注意事项
不支持表符tab缩进,需要使用空格缩进
通常开头缩进2个空格
字符后缩进1个空格,如冒号,逗号,横杠
用#号注释
如果包含特殊字符用单引号引起来
布尔值必须用引号括起来

ドッカー作曲は、共通のフィールドを設定します

build dockerfile context 指定Dockerfile文件名构建镜像上下文路径
image   指定镜像
command  执行命令,覆盖默认命令
container name  指定容器名称,由于容器名称是唯一的,如果指定自定义名称,则无法scale
deploy 指定部署和运行服务相关配置,只能在swarm模式使用
environment  添加环境变量
networks  加入网络
ports  暴露容器端口,但端口不能低于60
volumes  挂载宿主机或命令卷,像数据卷一样
restart  重启策略
hostname 容器主机名

Docer作曲よく使用するコマンド

build  重新构建服务
ps  列出容器
up  创建和启动容器
exec  在容器里面执行命令
scale  指定一个服务容器启动数量
top 显示容器进程
logs 查看容器输出
down  删除容器,网络,数据卷和镜像
stop/start/restart 停止/启动/重启服务

作曲コマンド説明

docker-compose选项
--verbose 输出更多调试信息
--version 打印版本并退出
-f,--file 使用特定的compose模板文件,默认为docker-compose.yml
-p,指定项目名称,默认使用目录名称

領事

Consul是HashCorp公司推出得到开源工具,用于实现分布式系统的服务与配置
Consul的特性
Consul支持健康检查,允许存储键值对
一致性协议采用Raft算法,用来保证服务的高可用
成员管理和消息广播采用GOSSIP协议,支持ACL访问控制列表,与docker无缝配合

ドッカー自動検出サービスアーキテクチャの構築

領事サービスを確立

每个提供服务的节点上都要部署Consul的agent
Consul agent有两种运行模式
Server
Client
Server和Client只是Conusl集群层面的区分,与搭建在Cluster之上的应用服务无关

領事クラスタアーキテクチャは、ドッカー容器は、nginxのにノードサーバを監視ステータスを登録見出さ。
サーバ内の領事サーバは、ポーリングにコンテナのアクセス・サーバ・プールを行うには、プロキシリバースnginxの。プロキシポートへのユーザーアクセスは、我々は2つのポートマッピングをした、バック複数のコンテナにアクセスすることができます。領事統一サーバは、設定ファイルを変更することができます

ドッカー作曲コンテナの配置

-------------------------------------------------- ---ドッカー-COMPOSE容器配置------------------------------------------ ----------------------

#宿主机的共享目录有nginx软件包,我们挂载到/opt/目录下
mount.cifs //192.168.100.25/LNMP /opt/
#创建容器编排目录
mkdir /root/compose_ngin
#创建nginx容器镜像
cd compose_nginx/

mkdir nginx

cd nginx/

cd /opt/

cp nginx-1.12.0.tar.gz /root/compose_nginx/nginx/

cd /root/compose_nginx/nginx/

#加上nginx启动脚本
vim run.sh 
#!/bin/bash
/usr/local/nginx/sbin/nginx

[root@localhost nginx]# vim Dockerfile
FROM centos:7
MAINTAINER this is nginx <chen>
RUN yum -y update
RUN yum -y install wget pcre-devel zlib-devel make zlib gcc gcc-c++ openssl-devel net-tools
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
WORKDIR /root/nginx
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

書き込みドッキングウィンドウ・コン振り付けnginxのインストール

[root@localhost compose_nginx]# vim docker-compose.yml
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - chen
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  chen:

[root@localhost compose_nginx]# mount.cifs //192.168.100.25/compose /mnt/
Password for root@//192.168.100.25/compose:   
[root@localhost compose_nginx]# cd /mnt/
[root@localhost mnt]# ls
consul_0.9.2_linux_amd64.zip  consul-template_0.19.3_linux_amd64.zip  docker-compose
[root@localhost mnt]# cp -p docker-compose /usr/local/bin/
[root@localhost mnt]# chmod +x /usr/local/bin/docker-compose 

#开启路由转发
[root@localhost compose_nginx]# vim /etc/sysctl.conf
net.ipv4.ip_forward=1[root@localhost compose_nginx]# sysctl -p
net.ipv4.ip_forward = 1

使用レイアウトツールオープンnginxの

[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d

[root@localhost compose_nginx]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
66d7cee5692d        compose_nginx_nginx   "/run.sh"           11 seconds ago      Up 9 seconds        0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

私たちは、私たちは、デフォルトのホーム・ページへのデータのボリュームを書きました

[root@localhost compose_nginx]# ls
docker-compose.yml  nginx  wwwroot
[root@localhost compose_nginx]# cd wwwroot/
[root@localhost wwwroot]# vim index.html
<h1>this is chen web ! ! !</h1>

ドッカー作曲コンテナの配置

-------------------------------------------------- -----------------領事展開------------------------------- ---------------------------------------

自動検出は、領事管理であるために、テンプレートテンプレートは、血管の状態を監視し、自動的に検出プロセスの登録要求への登録要求、領事サーバを提出する検索条件エージェントを満たし、登録する必要があり、複数のドッキングウィンドウのコンテナノードを登録します

[root@localhost ~]# mkdir consul
[root@localhost ~]# cd /mnt/
[root@localhost mnt]# ls
consul_0.9.2_linux_amd64.zip  consul-template_0.19.3_linux_amd64.zip  docker-compose

[root@localhost mnt]# cp consul_0.9.2_linux_amd64.zip /root/consul/
[root@localhost mnt]# cd /root/consul/
[root@localhost consul]# ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]# unzip consul_0.9.2_linux_amd64.zip 
Archive:  consul_0.9.2_linux_amd64.zip
  inflating: consul              

[root@localhost consul]# mv consul /usr/bin/

#使用conusl agent代理功能
[root@localhost consul]# consul agent \
#指定server功能
#参与领袖
#ui界面
#参数指定位置
#绑定本地地址
#面对所有节点
#本地节点名称混合输出到日志中,放在后台运行
> -server \
> -bootstrap \
> -ui \
> -data-dir=/var/lib/consul-data \
> -bind=192.168.136.142 \
> -client=0.0.0.0 \
> -node=consul-server01 &> /var/log/consul.log &
[1] 37957

#查看群集信息
[root@localhost consul]# consul members
Node             Address               Status  Type    Build  Protocol  DC
consul-server01  192.168.136.142:8301  alive   server  0.9.2  2         dc1
#现在只有一台,它就是老大
[root@localhost consul]# consul info | grep leader
        leader = true
        leader_addr = 192.168.136.142:8300

第二の(複数のコンテナを作成するために)ノードサーバーコンテナサービスは自動的にクラスタに追加さnginxの

[root@localhost ~]# docker run -d \
> --name=registrator \ #指定容器名称
> --net=host \  #指定主机
> -v /var/run/docker.sock:/tmp/docker.sock \ #指定数据卷宿主机目录,容器目录
> --restart=always \ #重启
> gliderlabs/registrator:latest \ #指定本地的镜像
> -ip=192.168.136.167 \ #指定你本地的地址
> consul://192.168.136.142:8500 #指定consul的地址

#两个nginx服务容器
[root@localhost ~]# docker run -itd -p:83:80 --name test-01 -h test01 nginx
root@localhost ~]# docker run -itd -p:84:80 --name test-02 -h test02 nginx
#两个apache服务5容器
[root@localhost ~]# docker run -itd -p:88:80 --name test-03 -h test02 httpd
[root@localhost ~]# docker run -itd -p:89:80 --name test-04 -h test04 httpd
#查看所有容器
[root@localhost ~]# docker ps -a
CONTAINER ID        IMAGE                           COMMAND                  CREATED              STATUS              PORTS                NAMES
00a94fe6fd0c        httpd                           "httpd-foreground"       6 seconds ago        Up 5 seconds        0.0.0.0:89->80/tcp   test-04
b47b89287e43        httpd                           "httpd-foreground"       38 seconds ago       Up 37 seconds       0.0.0.0:88->80/tcp   test-03
9b695e1d8660        nginx                           "nginx -g 'daemon of…"   About a minute ago   Up About a minute   0.0.0.0:84->80/tcp   test-02
3cbf17118dab        nginx                           "nginx -g 'daemon of…"   2 minutes ago        Up 2 minutes        0.0.0.0:83->80/tcp   test-01
055caf398060        gliderlabs/registrator:latest   "/bin/registrator -i…"   3 minutes ago        Up 3 minutes                             registrator

Nginxはhttpと検証サービスは、領事に登録されています

ドッカー作曲コンテナの配置

領事サーバ

Consul-Templatee 是一个守护进程,用于实时查询Consul集群信息,并更新文件系统上
任意数量的指定模板,生成配置文件。更新完成以后,可以选择运行shell命令执行更新操作,重新加载nginx,Consul-template
可以查询Consul中的服务目录,key,key-values等
这种强大的抽象功能和查询语言模板可以使Consul-template特别适合动态的创建配置文件
[root@localhost ~]# cd /root/
[root@localhost ~]# ls
anaconda-ks.cfg  compose_nginx  initial-setup-ks.cfg  公共  文档  模板  音乐
chen             consul         下载                  图片  桌面  视频
[root@localhost ~]# cd consul/
[root@localhost consul]# ls
consul_0.9.2_linux_amd64.zip
[root@localhost consul]# 
#准备temlate nginx 模板文件

[root@localhost consul]# vim nginx.ctmpl
upstream http_backend {
  {{range service "nginx"}}
   server {{.Address}}:{{.port}};
   {{end}}
}

server {
  listen 1216;
  server_name localhost 192.168.136.167;
  access_log /var/log/nginx/kgc.cn-access.log;
  index index.html index.php;
  location / {
    proxy_set_header HOST $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header Client-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_pass http://http_backend;
  }
}

#安装nginx
[root@localhost nginx-1.12.0]# yum install gcc gcc-c++ pcre-devel zlib-devel -y
[root@localhost nginx-1.12.0]# ./configure --prefix=/usr/local/nginx

[root@localhost nginx-1.12.0]# make && make install
[root@localhost nginx-1.12.0]# vim /usr/local/nginx/conf/nginx.conf
#nginx中有events,http,if,location,字段
 19     include     vhost/*.conf;
[root@localhost nginx-1.12.0]# cd /usr/local/nginx/conf/
[root@localhost conf]# mkdir vhost
[root@localhost consul]# cd /var/log/
[root@localhost log]# mkdir /var/log/nginx
[root@localhost log]# ln -s /usr/local/nginx/sbin/nginx  /usr/local/sbin/
[root@localhost log]# nginx
[root@localhost log]# netstat -ntap | grep nginx
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      107612/nginx: ma
[root@localhost opt]# cd /mnt/
[root@localhost mnt]# cp consul-template_0.19.3_linux_amd64.zip /root/
[root@localhost mnt]# cd /root/

[root@localhost ~]# unzip consul-template_0.19.3_linux_amd64.zip 
[root@localhost ~]# mv consul-template /usr/bin/

#启用模板
[root@localhost ~]# consul-template -consul-addr 192.168.136.142:8500 \
> -template "/root/consul/nginx.ctmpl:/usr/local/nginx/conf/vhost/kgc.conf:/usr/local/nginx/sbin/nginx -s reload" \
> --log-level=info

#coul服务器处于监控状态,我们再开一台终端同一台服务器的

#検証
ドッカー作曲コンテナの配置

#增加一个nginx容器节点
增加一个nginx容器节点,测试服务发现及配置更新功能
//在registrator服务端注册
dockers run -itd -p:85:80 --name test-05 -h test05 nginx
docker logs -f test-01
docker logs -f test-02
docker logs -f test-05

おすすめ

転載: blog.51cto.com/14469918/2466453