Docker Nginx容器和Tomcat容器實現(xiàn)負載均衡與動靜分離操作
下載Tomcat8鏡像
[root@localhost ~]# docker search tomcat8NAME DESCRIPTION STARSOFFICIAL AUTOMATEDashince/tomcat8 Tomcat GUI Manager pre-configured docker ima… 5 podbox/tomcat8 2 [OK]
這個tomcat包含了jdk而且啟動了可以直接訪問,自己啟動了8080端口
[root@localhost ~]# docker pull ashince/tomcat8Using default tag: latestlatest: Pulling from ashince/tomcat806b22ddb1913: Pulling fs layer 336c28b408ed: Pull complete 1f3e6b8d80c3: Pull complete [root@localhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginxlatest 2622e6cca7eb 2 weeks ago 132MBashince/tomcat8 latest 02aedead27dd 22 months ago 314MB啟動一個Nginx容器和兩個Tomcat容器[root@localhost ~]# docker run -itd -p 8080:8080 ashince/tomcat8 3e3f2aabe67de7ee3f4b6d62176e21aaa9d2302922845cb08ad37af7146b13c5[root@localhost ~]# docker run -itd -p 8081:8080 ashince/tomcat8 644d59711c805a626b7c1c219aa018f744098a14dd41e54744d6b13e7ba66a2f[root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTS NAMEScca55c4ad919 ashince/tomcat8 'catalina.sh run' About a minute ago Up About a minute 0.0.0.0:8081->8080/tcp unruffled_lalande08b58d2f41d6 ashince/tomcat8 'catalina.sh run' 7 minutes ago Up 7 minutes 0.0.0.0:8080->8080/tcp relaxed_williamsonaeebcb0b40a2 nginx'/docker-entrypoint.…' 2 hours ago Up 2 hours 0.0.0.0:80->80/tcp priceless_ardinghelli
#將Nginx容器當(dāng)中的配置拷貝到本地修改,因為容器當(dāng)中沒有vi vim命令[root@localhost ~]# docker cp 68d2bdf336ed:/etc/nginx/conf.d/default.conf .[root@localhost ~]# lsanaconda-ks.cfg default.conf index.html[root@localhost ~]# grep -vE '#|^$' default.conf server { listen 80; listen [::]:80; server_name localhost; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; }} #兩臺tomcat的ip地址[root@localhost ~]# for i in {72e174adc77d,080068dae40a};do docker inspect $i| grep -i ipaddr |tail -n 1;done 'IPAddress': '172.17.0.4', 'IPAddress': '172.17.0.3',拷貝靜態(tài)資源到Nginx目錄下做動靜分離 ,同時修改配置文件#將其中一臺Tomcat的ROOT目錄拷貝到本地,因為做動靜分離Nginx需要訪問靜態(tài)資源要在本地[root@localhost ~]# docker cp 72e174adc77d:/usr/local/tomcat/webapps/ROOT . #拷貝到Nginx發(fā)布目錄下面[root@localhost ~]# docker cp ROOT 68d2bdf336ed:/usr/share/nginx/html/[root@localhost WEB-INF]# docker exec 68d2bdf336ed ls -l /usr/share/nginx/html/ROOTtotal 184-rwxrwxrwx 1 root root 7064 Jun 21 2017 RELEASE-NOTES.txtdrwxrwxrwx 2 root root 21 Jul 27 2017 WEB-INF-rwxrwxrwx 1 root root 26447 Jun 21 2017 asf-logo-wide.svg-rwxrwxrwx 1 root root 713 Jun 21 2017 bg-button.png-rwxrwxrwx 1 root root 1918 Jun 21 2017 bg-middle.png-rwxrwxrwx 1 root root 1392 Jun 21 2017 bg-nav-item.png-rwxrwxrwx 1 root root 1401 Jun 21 2017 bg-nav.png-rwxrwxrwx 1 root root 3103 Jun 21 2017 bg-upper.png-rwxrwxrwx 1 root root 21630 Jun 21 2017 favicon.ico-rwxrwxrwx 1 root root 12279 Jun 21 2017 index.jsp-rwxrwxrwx 1 root root 2376 Jun 21 2017 tomcat-power.gif-rwxrwxrwx 1 root root 5581 Jun 21 2017 tomcat.css-rwxrwxrwx 1 root root 2066 Jun 21 2017 tomcat.gif-rwxrwxrwx 1 root root 5103 Jun 21 2017 tomcat.png-rwxrwxrwx 1 root root 67795 Jun 21 2017 tomcat.svg #修改后的Nginx配置文件如下,修改完后拷貝會容器當(dāng)中[root@localhost ~]# docker cp default.conf 68d2bdf336ed:/etc/nginx/conf.d/default.conf [root@localhost ~]# docker exec 68d2bdf336ed cat /etc/nginx/conf.d/default.conf upstream tomcat_web{server 172.17.0.3:8080 weight=100 max_fails=2 fail_timeout=15;server 172.17.0.4:8080 weight=100 max_fails=2 fail_timeout=15;} server { listen 80; listen [::]:80; server_name localhost; error_page 500 502 503 504 /50x.html; root /usr/share/nginx/html; location /{ proxy_pass http://tomcat_web; proxy_set_header host $host; } location ~ .*.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ { root /usr/share/nginx/html/ROOT; expires 30d; access_log off; } location ~ .*.(eot|ttf|otf|woff|svg)$ { root /usr/share/nginx/html/ROOT; expires 30d; access_log off; } location ~ .*.(js|css)$ { root /usr/share/nginx/html/ROOT; expires 30d; access_log off; } location = /50x.html { root /usr/share/nginx/html; }} #加載新的配置項[root@localhost ~]# docker exec -it 68d2bdf336ed /bin/bashroot@68d2bdf336ed:/# /usr/sbin/nginx -s reload2020/06/29 07:12:05 [notice] 79#79: signal process started
再去訪問Nginx 80端口如圖所示:
補充知識:Docker 基礎(chǔ)操作 容器自啟動 刪除鏡像和刪除容器
Docker容器自動重啟設(shè)置
重啟reboot操作系統(tǒng)后,發(fā)現(xiàn)docker 服務(wù)未啟動,容器也未啟動,怎么才能重啟后自動啟動呢
1、docker服務(wù)自動重啟設(shè)置
[root@localhost ~]# systemctl enable docker.service
2、docker容器自動啟動設(shè)置
[root@localhost ~]# docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEnginxlatest 5a3221f0137b 10 months ago 126MB[root@localhost ~]# docker run -itd -p 80:80 nginx3e28c4b5c6256c0ba04666751e426987d848b7afeb9c59774d5e9831dc78e5ee[root@localhost ~]# docker run -itd -p 81:80 nginxf0597c725fd6b7f4229aa9ab5de4a3cb29d09097a81dc8f64d1a60d469001379[root@localhost ~]# docker port f0597c725fd680/tcp -> 0.0.0.0:81 [root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTSNAMESf0597c725fd6 nginx'nginx -g ’daemon of?? 30 seconds ago Up 29 seconds 0.0.0.0:81->80/tcp elastic_allen3e28c4b5c625 nginx'nginx -g ’daemon of?? 35 seconds ago Up 33 seconds 0.0.0.0:80->80/tcp tender_volhard
3、 docker容器自動啟動設(shè)置
[root@localhost ~]# docker update --restart=always f0597c725fd6 3e28c4b5c625 f0597c725fd63e28c4b5c625 [root@localhost ~]# reboot -h nowConnection closed by foreign host. [root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTSNAMESf0597c725fd6 nginx'nginx -g ’daemon of?? 13 minutes ago Up 2 minutes 0.0.0.0:81->80/tcp elastic_allen3e28c4b5c625 nginx'nginx -g ’daemon of?? 13 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp tender_volhard
當(dāng)一個host中鏡像和容器較多,需要重置時可選擇刪除其中部分或全部的鏡像和容器。那么你就需要下面的操作了。
1、刪除容器
[root@localhost ~]# docker ps -aCONTAINER ID IMAGECOMMAND CREATED STATUS PORTSNAMES27c5c4d3cf86 nginx'nginx -g ’daemon of?? 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp gracious_nash61cccfe238a8 nginx'nginx -g ’daemon of?? 2 minutes ago Up 2 minutes 0.0.0.0:81->80/tcp distracted_grothendieck[root@localhost ~]# docker ps -aq27c5c4d3cf8661cccfe238a8
1)首先需要停止所有的容器
[root@localhost ~]# docker ps -aqf0597c725fd63e28c4b5c6258855c7777f83466d2efe3dd920ca589b1a10e5457b41cae6314d1d01c941 [root@localhost ~]# docker stop $(docker ps -aq)f0597c725fd63e28c4b5c6258855c7777f83466d2efe3dd920ca589b1a10e5457b41cae6314d1d01c941[root@localhost ~]# docker psCONTAINER ID IMAGECOMMAND CREATED STATUS PORTSNAMES
2)刪除所有的容器(只刪除單個時把后面的變量改為image id即可)
[root@localhost ~]# docker rm -f $(docker ps -aq)f0597c725fd63e28c4b5c6258855c7777f83466d2efe3dd920ca589b1a10e5457b41cae6314d1d01c941[root@localhost ~]# docker ps -aq[root@localhost ~]#
2、刪除鏡像
1)查看host中的鏡像
docker images
2)刪除指定id的鏡像
docker rmi <image id>
3)刪除全部的images
docker rmi $(docker images -q)
3、當(dāng)要刪除的iamges和其他的鏡像有關(guān)聯(lián)而無法刪除時
可通過 -f 參數(shù)強制刪除
docker rmi -f $(docker images -q)
以上這篇Docker Nginx容器和Tomcat容器實現(xiàn)負載均衡與動靜分離操作就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Java基于redis和mysql實現(xiàn)簡單的秒殺(附demo)2. 利用FastReport傳遞圖片參數(shù)在報表上展示簽名信息的實現(xiàn)方法3. XHTML 1.0:標記新的開端4. ASP.NET MVC視圖頁使用jQuery傳遞異步數(shù)據(jù)的幾種方式詳解5. java必懂的冷知識點之Base64加密與解密6. 詳解php如何合并身份證正反面圖片為一張圖片7. python字典通過值反查鍵的實現(xiàn)(簡潔寫法)8. AJAX實現(xiàn)省市縣三級聯(lián)動效果9. 在終端啟動Python時報錯的解決方案10. 如何基于Python和Flask編寫Prometheus監(jiān)控
