docker使用小記6 - docker-compose掛載數據卷出現的問題


最近使用Docker-Compose來實現對Docker容器集群的快速編排,在編寫docker-compose.yml完之后,想運行下看看結果,這一試果然試出問題。我再文件中有對容器目錄進行掛載,可是運行之后卻報錯。

 

 

 這是yml文件中對mysql容器的編排

 

 

 因為如果用docker run指令啟動容器的話,參數-v掛載的卷不用事先創建,所以卷mysql我一開始是沒有進行創建的,所以有沒有可能是docker-compose不會自動替我創建卷的原因呢,這里我使用docker volume create對yml文件中指定的數據卷進行創建。

 

可以看到此時所需的卷都已經創建,再次運行命令docker-compose up -d,發現還是一樣的結果。此時想到docker掛載除了指定卷外還能掛載主機指定路徑,嘗試將所有掛載改成系統內某個目錄,再運行,發現容器創建啟動成功。

至此可以確認時掛載卷時存在問題,我又試着不指定卷名運行,發現也能成功,所以問題應該就是出現在指定卷名掛載上。

上百度查找相關資料沒找到有用的,最后還是在谷歌上面找到解決方法。

 

 

 該資料中作者用了設置volume的mountpoint的方法解決,而我選擇的是第二個方法,為此順便看了下官方對extenal參數的定義

 

 

 翻譯過來就是:

如果設置為true,則指定此卷是在合成之外創建的。DOCKE編寫不嘗試創建它,並且如果不存在,則會引發錯誤。

對於3.3及以下版本的格式,外部不能與其他卷配置鍵(驅動程序、驅動程序選項、標簽)一起使用。對於第3.4版及以上版本,此限制不再存在。

在下面的示例中,不是嘗試創建一個名為[項目名稱]數據的卷,而是將一個現有的卷簡單地稱為數據,並將其裝入DB服務的容器中。

 

根據文檔的寫法在yml文件中加上volumes的設置:

 

 保存后再次運行docker-compose up -d,容器啟動成功,至此問題解決。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM