docker-swarm容器固定到node節點啟動
Docker-compose的編排
首先這裡需要建立一個目錄mkdir /docker-compose然後在裡邊建立一個docker-compose.yml的檔案。
具體包括:
Images、hostname、ports、networks、volumes、deploy這些內容
其中包括nginx+tomcat1+tomcat2三個服務
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的主配置檔案
圖片1.png
--label=function=nodeone: 一個標籤【別名】
--label=host=node1 : 主機名
--registry-mirror=:國內的映象
注:另外node2的伺服器節點也需要修改
圖片2.png
完成之後透過docker stack deploy -c docker-compose.yml 【mynet:名字】
啟動這個docker-compose編排檔案
檢視docker service list
圖片4.png
檢視執行的節點
圖片5.png
Nginx+tomcat1+tomcat2反向代理docker
實現上面的三個容器執行必須要有三個dockerfile寫出來的啟動映象
Nginx:
圖片1.png
這裡使用的是nginx1.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
Tomcat1的映象:
圖片2.png
Tomcat使用的是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
~
Tomcat2的映象和tomcat1的沒有區別就是在index.Jsp檔案有區別
完成之後開始生產成映象 透過docker build -t 映象 /路徑
圖片3.png
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
注:卷組一定要在最後標註,另外加紅顏色的路徑要建立才行 加綠色的表示申明的作用使用的卷組和網路
圖片4.png
圖片5.png
完成之後需要啟動這個docker-compose檔案
圖片6.png
自己定義名字
當然刪除的命令是
圖片7.png
看一下起來的容器
圖片8.png
前面說過tomcat2在woeker節點上工作
圖片9.png 圖片10.png
啟動三個容器之後進行反向代理的配置
需要在nginx的主配置檔案配置upstream,可以去卷組裡面配置
圖片11.png
手動新增
圖片12.png
圖片13.png
新增在卷組當中會自動和容器的資料同步,防止容器掛掉資料丟失
完成之後需要測試一下
圖片14.png
反向代理測試:
圖片15.png
圖片16.png
注:如果有業務需要需要將docker-compose檔案單獨分開那麼需要編寫單獨的檔案,比如講上面的分為三分,每一份都需要申明網路和卷組。當然使用同一個網路mynet的話,啟動的容器之間還是可以互相同信得
©著作權歸作者所有:來自51CTO部落格作者tty之星的原創作品,如需轉載,請註明出處,否則將追究法律責任
好知識,才能預見未來
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/1978/viewspace-2821703/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [Kubernetes]node節點pod無法啟動/節點刪除網路重置
- 容器技術之Docker-swarmDockerSwarm
- k8s將deployment中的pod固定到指定節點K8S
- grid軟體複製到另外的節點啟動crs
- unix cm單節點啟動
- Hadoop 啟動namenode節點失敗Hadoop
- RAC二節點啟動異常
- 容器技術|Docker三劍客之docker-swarmDockerSwarm
- Kubernetes-15:一文詳解Pod、Node排程規則(親和性、汙點、容忍、固定節點)
- Longhorn 企業級雲原生分散式容器儲存-券(Volume)和節點(Node)分散式
- 啟動zabbix容器
- k8s系列--node(k8s節點介紹,新增節點,移除節點)K8S
- Kubernetes Node 節點上的映象管理
- Node-red節點安裝換源
- Docker重啟保持容器自動啟動Docker
- ACK容器服務釋出virtual node addon,快速部署虛擬節點提升叢集彈效能力
- 12.2新特性之ADG多節點啟動MRP程式
- RAC節點啟動失敗--ASM無法連線ASM
- LeetCode-129-求根節點到葉節點數字之和LeetCode
- kubernetes實踐之五:Node節點安裝
- Kubernetes Node 節點的生命週期簡述
- Unity元件:FixedJoint固定關節Unity元件
- oracle兩節點RAC,由於gipc導致某節點crs無法啟動問題分析Oracle
- 【劉文彬】EOS多節點組網:商業場景分析以及節點啟動時序
- Docker容器的自啟動Docker
- Spring容器系列-啟動原理Spring
- 從servlet容器到Spring mvc 5.1.1.RELEASE IoC 啟動原始碼分析ServletSpringMVC原始碼
- Kubernetes安裝之九:配置node節點之kubelet
- Solaris叢集節點重啟
- docker啟動hub和Chrome nodeDockerChrome
- docker中怎麼啟動容器Docker
- rac二節點例項redo故障無法啟動修復
- 前端基礎知識之什麼是節點Node?前端
- HDFS動態新增節點
- hadoop動態摘除節點Hadoop
- docker 容器如何固定ip,有幾種方式Docker
- Node.js 啟動除錯方式Node.js除錯
- node.js啟動http服務Node.jsHTTP