這應該不難,但我無法弄清楚。我有一個容器正在運行,並在docker run命令中使用-v /tester
。然後我做docker exec ti containername /bin/bash
。然後我用vi /tester/stayhere.txt
創建一個名爲/tester/stayhere.txt的文件。然後我保存該文件並驗證它在那裏。然後,我執行docker commit並啓動新映像,並且缺少stayhere.txt。我究竟做錯了什麼?在Docker容器中存放數據文件
1
A
回答
1
在Docker容器中裝入容器時,它不被認爲是容器本身的一部分。這就是爲什麼當你提交更改時缺失。
據碼頭工人單證:
的數據量是繞過聯盟的文件系統的一個或多個容器內的特別指定的目錄中。
和:創建容器時
卷被初始化。如果容器的基礎映像包含指定安裝點上的數據,則在卷初始化時,現有數據將被複制到新卷中。
這意味着,數據量的活聯合文件系統之外,如果你甚至刪除該容器中的數據量依然存在:
數據卷的設計,以保持數據的,獨立的容器的中生命週期。因此,Docker在刪除容器時不會自動刪除卷,也不會「垃圾收集」不再由容器引用的卷。
因此,它們不是您的docker commit命令的一部分。
爲了達到你想要的效果,你需要在鏡像文件的同一路徑上拷貝文件,而沒有安裝作爲碼頭卷。您可以使用Dockerfile或直接啓動容器並更改文件系統然後提交。
下一次啓動容器時,容量爲,您應該能夠看到這些文件。
0
我不能說,沒有確切的命令,你正在運行。我會猜測你實際上並沒有真正開始「新」形象。我認爲那是因爲你用docker exec
(它啓動了一個正在運行的容器中的東西)而不是docker run
來「啓動」它。
更一般地說,雖然我會建議改變並提交是不好的做法。你真正應該做的是構建你的東西的任何東西,你應該在構建時做(與Dockerfile
)。
任何持久狀態的東西都應該裝入容器中 - 通過卷裝或存儲容器。
這是很容易創建的其中之一:
docker create -v /path/to/data --name my_storage_container base-image-name /bin/true
然後從一個乾淨的構建映像啓動你的容器:
docker run -it --volumes-from my_storage_container image /bin/bash
文件節省您的話應該堅持,不管你有多與圖像混亂。
相關問題
- 1. 在Docker容器中保存MySQL數據
- 2. 如何在Docker容器中保存HDFS數據
- 3. 如何在Docker容器中保存初始數據塊
- 4. Docker:容器如何在容器中沒有卷的情況下保存數據?
- 5. 在docker容器內刪除的文件未釋放空間
- 6. 將表保存在Docker容器中
- 7. 將文件從Docker容器中取出
- 8. 使用Docker/YML文件的Oracle PDB容器數據庫
- 9. 未保存Docker容器
- 10. 壓縮mysql數據文件夾以保存在Docker鏡像中
- 11. Docker僅限數據的容器權限
- 12. 導出和導入docker數據容器
- 13. Docker數據容器的持久性
- 14. Docker \用數據提交一個容器
- 15. 訪問Docker容器內的文件
- 16. 如何保留Docker容器卷文件?
- 17. 如何將數據庫從couchdb容器映射到另一個容器webapp在同一個docker-compose文件中
- 18. docker-compose不在Docker容器中安裝bower組件
- 19. Docker容器上的Windows Perf計數器:System.InvalidOperationException:類別不存在
- 20. Haskell - 從文件中讀取數據並存儲到容器中
- 21. 從Windows文件資源管理器訪問Docker容器文件
- 22. 保存內容與文件放內容
- 23. Docker:無法將數據從logstash容器發送到Kafka容器
- 24. 如何在Postgres Docker容器中創建數據庫?
- 25. 如何在Docker容器中遷移mysql數據目錄?
- 26. 在Docker數據容器中部署Web應用程序vs卷
- 27. 在Docker容器中訪問主機上的MySQL數據庫
- 28. 如何在Docker容器中顯示PostgreSQL數據庫?
- 29. 在docker撰寫容器中安裝mongo數據的主機卷
- 30. Docker - 重新創建後在MySQL容器中回滾數據
謝謝Sobrique我不認爲我已經完全明白你在說什麼,但我簡化了問題,試圖獲得答案。基本上我的情況是這樣的,我有docker在AWS中運行,Docker在IBM雲中運行。我在AWS中運行的容器想要導出並在IBM雲中運行,但無論我做什麼,都無法讓文件保留。您如何建議將容器和文件移至IBM雲? –
我已經試過碼頭保存,導出,提交但我認爲你告訴我的是,也許我應該使用碼頭CP來獲取容器中的文件,並將它們裝入新的容器中......這似乎很奇怪,因爲那麼我必須移動一個碼頭圖像和一組數據。這打破了我對容器的理解......爲什麼不把它放在容器中並移動呢? –
如果您可以發佈與您的跑步完全相同的命令歷史記錄,我可能會擴展更多。 – Sobrique