1.部署tomcat鏡像
下載官方的tomcat鏡像。
sudo docker pull tomcat:7-jre7
啟動docker容器,2個實例,分別映射不同的端口號,
~/work/sample-webapps/[v1.0|v2.0]/下面存放JavaWeb.war包,通過volume方式映射到docker鏡像中
docker run -it --rm -p 8080:8080 -v ~/work/sample-webapps/v1.0:/usr/local/tomcat/webapps/ tomcat:7-jre7 docker run -it --rm -p 8081:8080 -v ~/work/sample-webapps/v2.0:/usr/local/tomcat/webapps/ tomcat:7-jre7
啟動完成之后,就可以訪問到兩個tomcat服務了。192.168.5.109是docker宿主機的ip。
在8080和8081兩個端口啟動兩個容器,分別對應不同的版本號,方便識別。
通過端口映射訪問到JavaWeb應用,用瀏覽器測試即可。




1.1 如何進入docker容器內部?
#查看當前docker容器,使用4位id可以進入docker容器內部
docker ps # 找到對應的容器id docker exec -t -i yourContainerName /bin/bash #通過shell進入docker容器內部
2.配置nginx反向代理和負載均衡
通過nginx反向代理之后,請求動態數據/JavaWeb的數據,都轉發到tomcat中處理,
多個tomcat組成集群,負載均衡就可以實現,V1.0 和V2.0 都可能顯示
組成tomcat集群的upstream更詳細配置,可以參考官方文檔,nginx默認以輪詢方式轉發請求給tomcat集群中的服務器,還有ip_hash等其他方式。


反向代理之后效果如下:


ubuntu14.04 上面sudo apt-get install 安裝的 nginx版本是1.6 穩定版
啟動方式 sudo /etc/init.d/nginx start 如果端口占用,說明安裝之后已經默認啟動完成了。
nginx重新加載配置文件,不需要重啟nginx sudo /etc/init.d/nginx reload
/etc/nginx/nginx.conf 文件內容如下:
user www-data; worker_processes 4; pid /run/nginx.pid; events { worker_connections 768; # multi_accept on; } http { ## # Basic Settings ## sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; # server_tokens off; # server_names_hash_bucket_size 64; # server_name_in_redirect off; include /etc/nginx/mime.types; default_type application/octet-stream; ## # Logging Settings ## access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## # Gzip Settings ## gzip on; gzip_disable "msie6"; # gzip_vary on; # gzip_proxied any; # gzip_comp_level 6; # gzip_buffers 16 8k; # gzip_http_version 1.1; # gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript; ## # nginx-naxsi config ## # Uncomment it if you installed nginx-naxsi ## #include /etc/nginx/naxsi_core.rules; ## # nginx-passenger config ## # Uncomment it if you installed nginx-passenger ## #passenger_root /usr; #passenger_ruby /usr/bin/ruby; ## # Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*; upstream docker-tomcat-cluster { server 127.0.0.1:8080; server 127.0.0.1:8081; } server { listen 80; server_name 192.168.5.109; #must give the domain to match location /JavaWeb { proxy_pass http://docker-tomcat-cluster ; proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } }
3.docker鏡像遷移和批量部署
sudo docker images sudo docker save -o ./tomcat7-jre7.tar ccc8
將tar文件,copy到另一台主機
docker load -i /opt/soft_bak/tomcat7-jre7.tar
導入后未命名,通過tag命令打上標記。
docker images #找到鏡像 docker tag 3e7767ddd728 geektown/tomcat7-jre7 docker images #查看tag之后的鏡像