Docker目錄掛載 Volume

2021-09-01 13:16:34 字數 1949 閱讀 4011

3.使用 data container (container )

預設情況下,容器不使用任何 volume,此時,容器的資料被儲存在容器之內,它只在容器的生命週期內存在,會隨著容器的被刪除而被刪除。當然,也可以使用 docker commit 命令將它持久化為乙個新的映象。很多情況下我需要資料持續化儲存.

docker容器啟動的時候,如果要掛載宿主機的乙個目錄,可以用-v引數指定

這樣在容器啟動後,容器內會自動建立/home/data的目錄。通過這種方式,我們可以明確一點,即-v引數中,冒號":"前面的目錄是宿主機目錄,後面的目錄是容器內目錄。

ps:路徑為絕對路徑

啟動容器

[root@au opt]# docker run -d --name=dor -v /opt/datasource:/home/data yjgithub/dor
容器: yjgithub/dor

宿主機絕對路徑:/opt/datasource

容器絕對路徑:/home/data

通過docker inspect命令檢視詳細資訊

docker inspect $containerid

[root@au opt]#docker ps

container id image command created status ports names

1249319e10ca yjgithub/dor "nginx -g 'daemon of…" about a minute ago up about a minute 80/tcp dor

[root@au opt]#docker inspect 1249319e10ca

"mounts": [

],

ps:

1.容器銷毀了,在宿主機上新建的掛載目錄不會消失

2.如果宿主機目錄存在,在執行容器時也會對映到容器中

3.宿主機目錄資料,在執行容器時也會同步

4.掛載宿主機已存在目錄後,在容器內對其進行操作,報「permission denied」,

4.1 設定selinux永久關閉

修改/etc/sysconfig/selinux檔案,將selinux的值設定為disabled。

4.2 以特權方式啟動容器 指定--privileged引數

[root@au opt]# docker run -d --name=dor --privileged=true -v /opt/datasource:/home/data yjgithub/dor

如果要在容器之間共享資料,最好是使用 data container。這種 container 中不會跑應用,而只是掛載乙個卷

建立乙個 data container:

[root@au opt]#docker create -v /opt/datasource/share:/dbdata --name dbstore yjgithub/dor /bin/true
使用這個 volume

[root@au opt]#docker run -d -p --name web --volumes-from dbstore  yjgithub/dor
[root@au share]# docker inspect web

"mounts": [

],

結果還是一樣的,即將 au 對應的主機上的目錄掛載給容器內的 /volume 目錄。

這種做法,能想到的好處就是容器件共用資料

感覺上兩種做法都是一樣的,何不直接用第一種? 如果還有更好的做法或者其他場景,可以一起討論下.

Docker掛載目錄 備份目錄

docker run p 80 name website v pwd website var www html website ro 172.17.0.2 5000 nginx nginx a p指定埠 b name重新命名容器的名稱 c v使用本地檔案掛載到容器 d 預設掛載的路徑許可權為讀寫。如...

docker容器目錄掛載

我們可以在建立容器的時候,將宿主機的目錄與容器內的目錄進行對映,這樣我們就可以實現宿主機和容器目錄的雙向資料自動同步 我們cp命令來實現資料傳遞,這種方式比較麻煩 我們通過容器目錄掛載,能夠輕鬆實現 上傳,配置修改,日誌同步等需求 docker run it v 宿主機目錄 容器目錄 映象名dock...

Docker掛載本地目錄

命令 docker run v 需掛載目錄的路徑 容器掛載路徑 name 資料卷名字 容器名字 bin bash 例子 docker run v home dock downloads usr downloads name dat ol ubuntu64 bin bash 命令 docker run...