假設我們我需要的元件有:nginx tomcat webapp redis
我們的作業系統是debain
nginx是一個容器
tomcat webapp是一個容器
redis一個容器
....
然後把這些容器整合,完成部署
疑惑的是連接埠之間如何存取?資料庫檔案在哪裡?各容器之間檔案是否可以共用?
沒有使用過Docker 不知道思想是否正確,求各位大俠解惑
ringa_lee2017-04-24 09:14:08
1、你完全可以把docker當成虛擬機器來使用,這樣至少使用上不會有什麼學習成本。無非是把虛擬機器裡面的一些操作步驟寫成了Dockerfile讓docker自動配置,更加清晰明了。但有些操作和設定步驟在普通方式的安裝下可能比較難實現,需要藉鏡docker hub上別人的寫法。
在這種方式下,連接埠之間的存取和檔案共用不成問題;資料庫檔案可以放在容器裡面,也可以透過VOLUME的方式從本機檔案系統掛載到容器裡面。
2、使用docker來搭建微服務,也就是分成不同的容器來組成一個大服務的內部服務。這種情況下連接埠之間的存取可以透過run時指定--link參數指定某台容器;資料庫檔案透過-v(--volume)的方式指定從本地某個目錄掛載到容器裡面;容器檔案之間的共享透過指定某個資料夾為VOLUME就可以共享,本質上還是把本地檔案系統的目錄掛載到多個容器中而已。
3、如果真要使用微服務的話,你需要了解一下docker-compose這個技術,幫助你管理各個元件,你只要把容器的run配置寫在yml檔案裡就行了。
迷茫2017-04-24 09:14:08
我的是mysql tomcat fastdfs
mysql 用-p 映射3306埠
tomcat 8080 fastdfs 改成8081了
主機ip為10.0.15.4
所以在tomcat 專案的配置上是連接到了然後iptables 開放dokcer 容器網段可以存取host
怪我咯2017-04-24 09:14:08
如果你用到的所有元件都是為一個應用服務,建議使用Docker編排工具,例如官方提供的Compose。
容器間的檔案和資料可以共享,透過資料卷掛載即可實現;
容器間的連接最方便的是通link參數進行連接,這會在兩個容器間建立專用通道,避免了資料連接埠對外開放造成的安全隱患。
如果你要做的話,還是建議你先把最基礎的東西熟悉一下,挺有意思的。