docker-compose:數(shù)據(jù)卷volumes掛載規(guī)則說明
案例compose
# add this file # default MySQL root password is 123456 version: '3.1' services: mysql: image: mysql:5.7 container_name: mysql_5.7 restart: always ports: - 3305:3306 volumes: - ./mysql_config/conf.d:/etc/mysql/conf.d - ./mysql_data:/var/lib/mysql - ./docker-entrypoint-initdb.d:/docker-entrypoint-initdb.d environment: MYSQL_ROOT_PASSWORD: 123456
前言
數(shù)據(jù)卷的掛載,是從host到container的,相當(dāng)于linux系統(tǒng)中將host文件夾掛載在container的指定目錄下,若掛載位置有文件/文件夾,則原文件夾隱藏,unmount后原文件夾恢復(fù)。
結(jié)果
概念理解
- 宿主機(jī)目錄對(duì)應(yīng)的物理儲(chǔ)存地址被容器和宿主機(jī)操作系統(tǒng)同時(shí)管理。
- 宿主機(jī)目錄可以看成一個(gè)硬盤被掛載在容器目錄下
- 宿主機(jī)的目錄和容器的目錄可以看成兩個(gè)指針指向同一個(gè)物理地址
- 非空容器目錄為什么不行?數(shù)據(jù)卷的意義在于數(shù)據(jù)持久化,將應(yīng)用數(shù)據(jù)分離,因此數(shù)據(jù)在宿主機(jī),若容器目錄非空,會(huì)造成邏輯沖突,也就是怎樣去同步宿主機(jī)目錄和容器目錄,解決兩邊文件的差異。因此只能掛載在容器中的空目錄下。
tips
- 若掛載的是目錄,容器目錄要為空目錄
- 若容器目錄不存在,也可以掛載會(huì)自動(dòng)創(chuàng)建
- volumes基本規(guī)則->*文件夾:文件夾;文件:文件
只要指定目錄掛載就會(huì)刪除容器內(nèi)的同名文件夾,例如:將mysql的配置目錄映射出容器,就會(huì)被代替為宿主機(jī)的對(duì)應(yīng)文件夾內(nèi)容,無法在compose層面將原本的配置文件copy到宿主機(jī)。但是目前,docker-
compose不支持類似docker cp的功能將容器內(nèi)的文件復(fù)制到宿主機(jī)。
可以參考github上官方的提問:https://github.com/docker/compose/issues/5523
以及Stack Overflow上的提問:https://stackoverflow.com/questions/39176561/copying-files-to-a-container-with-docker-compose
想要將容器內(nèi)文件復(fù)制出容器的解決的方法只有通過手動(dòng)或腳本執(zhí)行docker cp。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
windows10下安裝docker且使用wsl2安裝雙系統(tǒng)并構(gòu)建最小jre鏡像和應(yīng)用鏡像
這篇文章主要給大家介紹了windows10下安裝docker且使用wsl2安裝雙系統(tǒng)并構(gòu)建最小jre鏡像和應(yīng)用鏡像的流程步驟,文中有詳細(xì)的圖文介紹,需要的朋友可以參考下2023-08-08關(guān)于ROS2安裝與docker環(huán)境使用
大家好,本篇文章主要講的是關(guān)于ROS2安裝與docker環(huán)境使用,感興趣的同學(xué)趕快來看看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽2021-12-12Docker中cgroups資源控制實(shí)戰(zhàn)
cgroups是Linux內(nèi)核的功能,允許用戶管理和限制進(jìn)程組資源使用,支持資源限制、優(yōu)先級(jí)控制、資源記錄等,應(yīng)用廣泛,Docker和k8s等容器技術(shù),通過cgroups實(shí)現(xiàn)精細(xì)的資源控制,本文就來詳細(xì)的介紹一下2024-11-11docker?compose部署mongodb?分片集群的操作方法
分片機(jī)制(Sharding)是MongoDB中用于處理大規(guī)模數(shù)據(jù)集和高負(fù)載應(yīng)用的一種數(shù)據(jù)分布策略,通過將數(shù)據(jù)均勻分布在多個(gè)服務(wù)器上,分片技術(shù)能夠提高應(yīng)用的可擴(kuò)展性和性能,本文給大家介紹docker?compose部署mongodb?分片集群的相關(guān)操作,感興趣的朋友一起看看吧2024-10-10dockerfile發(fā)布springboot項(xiàng)目實(shí)踐
使用Docker的其中一個(gè)目的,是為了更加簡(jiǎn)單,方便的部署我們編寫的服務(wù),本文主要介紹了dockerfile發(fā)布springboot項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下2023-08-08