簡介
我們可以在創建容器的時候,將宿主機的目錄與容器內的目錄進行映射,這樣我們就可以實現宿主機和容器目錄的雙向數據自動同步
作用
我們cp命令來實現數據傳遞,這種方式比較麻煩;
我們通過容器目錄掛載,能夠輕松實現代碼上傳,配置修改,日志同步等需求
命令格式
單目錄掛載
docker run -it -v /宿主機目錄:/容器目錄 鏡像名
多目錄掛載
docker run -it -v /宿主機目錄:/容器目錄 -v /宿主機目錄2:/容器目錄2 鏡像名
只讀目錄掛載
docker run -it -v /宿主機目錄:/容器目錄:ro 鏡像名
關於掛載的本地目錄在容器中沒有執行權限的問題
注意
如果你同步的是多級目錄,可能會出現權限不足的提示;
這是因為Centos7中的安全模塊selinux把權限禁掉了,我們需要添加 --privileged=true
來解決掛載的目錄沒有權限的問題;
例:
docker run -it --privileged=true -v /home/soft/:/usr/soft:rw centos /bin/bash
例:單目錄掛載
先在宿主機建一個目錄,並創建一個文件,如:
在home下建了一個host_data,里面有a.txt文件
運行容器並掛載目錄
docker run -it -v /home/host_data/:/home/client_data/ 8652b9f0cb4c
該容器掛載目錄為/home/client_data/
該文件同步出現
這時候如果修改該文件,宿主機文件會同步修改,如修改
保存退出
同步修改了,這就是雙向數據同步,任何一方修改了另外一方都會跟着改動
多目錄同理
例:只讀目錄掛載
一般用在配置文件,容器內不讓其修改的情況
例:
docker run -it -v /home/host_data/:/home/client_data/:ro 8652b9f0cb4c
進入該目錄進行編輯,會如圖所示
不能編輯,但是宿主機可以編輯