標籤:
docker 中的容器互聯是一個較為複雜的話題,詳細內容將在後續章節中介紹。 續前 2 個章節的內容,我們建立了一個 mysql 容器和一個 tomcat 容器,可以使用 「docker ps」來查看他們的狀態。
[email protected] ~/base $ docker psCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES5a02ce457c87 tutum/tomcat:8.0 "/run.sh" 16 minutes ago Up 16 minutes 0.0.0.0:80->8080/tcp insane_hawkingfb4b9ab6a2ba dl.dockerpool.com:5000/mysql:5.7 "/entrypoint.sh mysq 16 hours ago Up 16 hours 0.0.0.0:3306->3306/tcp db001
我們看到這裡我們直接把 mysql 的 3306 連接埠直接映射到了宿主主機上,tomcat 的 8080 連接埠映射到了宿主主機的80連接埠上面,他們現在其實可以直接使用宿主主機的地址互聯了。在開發環境中這沒什麼問題,若在生產環境中,可能就會有一定的安全隱患,使用容器互聯可以避免這個問題,下面我們來操作一下:
[email protected] ~/base $ docker stop db001#使用容器的名字來停止容器db001[email protected] ~/base $ docker rm db001#使用容器的名字來刪除容器db001[email protected] ~/base $ docker run --name db001 -e MYSQL_ROOT_PASSWORD=admin -d mysql:5.7fe9e65aaf58cd34c12f3c1ab4a3318ae3920300b0f3d0241359c904d7182376f[email protected] ~/base $ docker stop 5a05a0#使用容器的id來停止容器,效果與使用名字一樣,而且一般只需要輸入容器 id 的前 3 個字元就可以了[email protected] ~/base $ docker rm 5a05a0[email protected] ~/base $ docker run -d -p 80:8080 --name tomcat001 --link db001:tomysql tutum/tomcat:8.0#解釋下--link 前面的 db001 是我們要串連的資料庫伺服器的容器名稱,後面的 tomysql 是我們要建立的這個連結的名字e3c136d76b447e885006a43c63f5200c2012a7ce02aaa43860c7a00c130a563e[email protected] ~/base $ docker ps#這裡我們可以看到只有tomcat的連接埠映射到了宿主主機上,而 mysql 的連接埠只有 tomcat 容器可以串連CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMESe3c136d76b44 tutum/tomcat:8.0 "/run.sh" 3 seconds ago Up 2 seconds 0.0.0.0:80->8080/tcp tomcat001fe9e65aaf58c dl.dockerpool.com:5000/mysql:5.7 "/entrypoint.sh mysq 5 minutes ago Up 5 minutes 3306/tcp db001,tomcat001/tomysql
至此,mysql和tomcat之間的串連就算完成了。
docker:從 tomcat 容器串連到 mysql 容器