docker-swarm容器固定到node节点启动

栏目: 服务器 · 发布时间: 6年前

内容简介:具体包括:

D ocker-compose的编排

首先这里需要创建一个目录 mkdir /docker-compose然后在里边创建一个docker-compose .yml 的文件。

具体包括:

I mages、hostname、ports、networks、volumes、deploy这些内容

其中包括 nginx+tomcat 1 +tomcat 2 三个服务

version: "3"                这是最新的版本

services:

nginx:

image: nginx5:latest

hostname: nginx

ports:

- "8021:80"

networks:

- "mynet"

volumes:

- "/srv/jetsen/nginx:/nginx"

- "nginx://usr/local/nginx-1.6.2"

deploy:

placement:

constraints:

- engin.labels.function ==  nodeone

tomcat1:

image: tomcat15:latest

hostname: tomcat1

ports:

- "8088:8080"

networks:

- "mynet"

volumes:

- "/srv/jetsen/tomcat1:/tomcat1"

- "tomcat1jdk:/usr/local/jdk1.7.0_79"

- "tomcat1tomcat://usr/local/apache-tomcat-7.0.61/"

deploy:

placement:

constraints:

- engine.labels.function == nodeone

tomcat2:

image: tomcat15:latest

hostname: tomcat2

ports:

- "8089:8080"

networks:

- "mynet"

volumes:

- "/srv/jetsen/tomcat2:/tomcat2"

- "tomcat2jdk:/usr/local/jdk1.7.0_79"

- "tomcat2tomcat://usr/local/apache-tomcat-7.0.61/"

deploy:

placement:

constraints:

- engine.labels.function == nodetwo

volumes:

nginx:

tomcat1tomcat:

tomcat1jdk:

tomcat2tomcat:

tomcat2jdk:

networks:

mynet:

external: true

另外需要修改 docker的主配置文件

docker-swarm容器固定到node节点启动

--label=function=nodeone 一个标签【别名】

--label=host=node1      主机名

--registry-mirror=http://e0d76b42.m.daocloud.io :国内的镜像

注:另外 node 2 的服务器节点也需要修改

docker-swarm容器固定到node节点启动

完成之后通过 docker   stack   deploy   -c   docker-compose .yml   mynet:名字】

启动这个 docker-compose编排文件

查看 docker   service    list   

docker-swarm容器固定到node节点启动

查看运行的节点

docker-swarm容器固定到node节点启动

                         N ginx+tomcat 1 +tomcat 2 反向代理 docker

实现上面的三个容器运行必须要有三个 dockerfile写出来的启动镜像

N ginx:

docker-swarm容器固定到node节点启动

这里使用的是 nginx 1.6.2 版本

ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -F /usr/local/nginx/logs/access.log

FROM docker.io/centos:7.2.1511

MAINTAINER  LXF

RUN  yum -y install gcc gcc-c++  kernel-headers    dracut  make auotmake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel

ADD ./nginx-1.6.2  /usr/local/nginx-1.6.2

RUN  cd /usr/local/nginx-1.6.2 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module && make &&make install

EXPOSE 80

ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -F /usr/local/nginx/logs/access.log

T omcat 1 的镜像:

docker-swarm容器固定到node节点启动

T omcat使用的是7版本

FROM docker.io/centos:7.2.1511

MAINTAINER LXF

RUN yum -y install gcc gcc- c++ make   glibc  kernel-headers tar  glibc-common

ADD ./apache-tomcat-7.0.61 /usr/local/apache-tomcat-7.0.61

ADD ./jdk1.7.0_79  /usr/local/jdk1.7.0_79

ENV  JAVA_HOME=/usr/local/jdk1.7.0_79

ENV  PATH=$JAVA_HOME/bin:$PATH

FROM docker.io/centos:7.2.1511

MAINTAINER LXF

RUN yum -y install gcc gcc- c++ make   glibc  kernel-headers tar  glibc-common

ADD ./apache-tomcat-7.0.61 /usr/local/apache-tomcat-7.0.61

ADD ./jdk1.7.0_79  /usr/local/jdk1.7.0_79

ENV  JAVA_HOME=/usr/local/jdk1.7.0_79

ENV  PATH=$JAVA_HOME/bin:$PATH

ENV  CATALINA_HOME=/usr/local/apache-tomcat-7.0.61

ENV  PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH

ADD ./server.xml   /usr/local/apache-tomcat-7.0.61/conf/server.xml

RUN mkdir -p /web/webapp1

ADD index.jsp /web/webapp1/index.jsp

RUN chmod +x   /usr/local/apache-tomcat-7.0.61/bin/*

EXPOSE 8080

ENTRYPOINT  /usr/local/apache-tomcat-7.0.61/bin/startup.sh  && tail -F /usr/local/apache-tomcat-7.0.61/logs/catalina.out

~                          

T omcat 2 的镜像和 tomcat 1 的没有区别就是在 index. J sp文件有区别

完成之后开始生产成镜像    通过 docker    build    -t    镜像   / 路径

docker-swarm容器固定到node节点启动

aa是nginx的镜像

完成之后需要去编写 docker-compose . yml文件

内容如下

version: "3"

services:

tomcat1:

image: tomcat:1

hostname: tomcat1

expose:

- 8080

networks:

- "mynet"

volumes:

- " /srv/jetsen/tomcat1 :/tomcat1"

- "tomcat1jdk:/usr/local/jdk1.7.0_79"

- "tomcat1tomcat://usr/local/apache-tomcat-7.0.61/"

deploy:

placement:

constraints:

- engine.labels.function == nodeone

tomcat2:

image: tomcat:2

hostname: tomcat2

expose:

- 8080

networks:

- "mynet"

volumes:

- " /srv/jetsen/tomcat2 :/tomcat2"

- "tomcat2jdk:/usr/local/jdk1.7.0_79"

- "tomcat2tomcat://usr/local/apache-tomcat-7.0.61/"

deploy:

placement:

constraints:

- engine.labels.function == nodetwo

nginx:

image: aa:aa

hostname: nginx

ports:

- "8021:80"

networks:

- "mynet"

volumes:

- " /srv/jetsen/nginx: /nginx"

- "nginx1:/usr/local/nginx-1.6.2"

- "nginx2://usr/local/nginx"

deploy:

placement:

constraints:

- engine.labels.function == nodeone

volumes:

nginx:

nginx1:

nginx2:

tomcat1tomcat:

tomcat1jdk:

tomcat2tomcat:

tomcat2jdk:

networks:

mynet:

external: true

注:卷组一定要在最后标注, 另外加红颜色的路径要创建才行           加绿色的表示申明的作用使用的卷组和网络

docker-swarm容器固定到node节点启动

docker-swarm容器固定到node节点启动

完成之后需要启动这个 docker-compose文件

docker-swarm容器固定到node节点启动

自己定义名字

当然删除的命令是

docker-swarm容器固定到node节点启动

看一下起来的容器

docker-swarm容器固定到node节点启动

前面说过 tomcat 2 woeker节点上工作

docker-swarm容器固定到node节点启动                  docker-swarm容器固定到node节点启动

启动三个容器之后进行反向代理的配置

需要在 nginx的主配置文件配置upstream,可以去卷组里面配置

docker-swarm容器固定到node节点启动

手动添加

docker-swarm容器固定到node节点启动

docker-swarm容器固定到node节点启动

添加在卷组当中会自动和容器的数据同步,防止容器挂掉数据丢失

完成之后需要测试一下

docker-swarm容器固定到node节点启动

反向代理测试:

docker-swarm容器固定到node节点启动

docker-swarm容器固定到node节点启动

注:如果有业务需要需要将 docker-compose文件单独分开那么需要编写单独的文件,比如讲上面的分为三分,每一份都需要申明网络和卷组。当然使用同一个网络mynet的话,启动的容器之间还是可以互相同信得


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法谜题

算法谜题

Anany Levitin、Maria Levitin / 赵勇、徐章宁、高博 / 人民邮电出版社 / 2014-1-1

算法是计算机科学领域最重要的基石之一。算法谜题,就是能够直接或间接地采用算法来加以解决的谜题。求解算法谜题是培养和锻炼算法思维能力一种最有效和最有乐趣的途径。 本书是一本经典算法谜题的合集。本书包括了一些古已有之的谜题,数学和计算机科学有一部分知识就发源于此。本书中还有一些较新的谜题,其中有一部分谜题被用作知名IT企业的面试题。全书可分为4个部分,分别是概览、谜题、提示和答案。概览介绍了算法......一起来看看 《算法谜题》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具