多個docker 掛載VOLUME的心得

2021-09-08 13:26:27 字數 2411 閱讀 1371

假如有乙個mysql映象

在dockerfile中制定volume /var/lib/mysql

那麼當執行:

docker run -d -e mysql_root_password=root --name=hzbtest 172.16.71.199/common/mysql:5.6

1)上面沒有指定 -v,新建的容器會自動在主機上建立一目錄來掛載/var/lib/mysql

docker inspect hzbtest"

mounts

": [

]

2)當執行-v,只指定容器內部的目錄

docker run -d -e mysql_root_password=root --name=hzbtest2 -v /var/lib/mysql 172.16.71.199/common/mysql:5.6

這種方式的效果和1)的效果一樣。

3)當執行:

docker run -d -e mysql_root_password=root --name=hzbtest3 -v /root/data:/var/lib/mysql 172.16.71.199/common/mysql:5.6

這種情況,容器啟動後會把/var/lib/mysql裡面的檔案遷移到宿主機的/root/data目錄下

4)當執行:

docker run -d -e mysql_root_password=root --name=hzbtest4 -v /root/data:/var/log 172.16.71.199/common/mysql:5.6

由於容器的映象的dockerfile並沒有給/var/log指定volume,所以,容器內的/var/log/裡面的檔案並不會遷移到/root/data裡面,相反/var/log/的檔案會變成/root/data裡面的所有檔案。

可以用多個 -v標籤為容器新增多個volume,還可以使用:ro指定該volume為唯讀。

docker run -d -e mysql_root_password=root --name=hzbtest4 -v /root/data:/var/log:ro 172.16.71.199/common/mysql:5.6

現在假如再有乙個mongodb的映象

在dockerfile中制定volume /data/db,這個資料夾本身帶有檔案.

當執行:

docker run -d -e mysql_root_password=root --name=hzbtest5 -v /root/data:/data/db 172.16.71.199/common/mongodb:3.0.9

這種情形hzbtest5的/data/db的檔案會遷移到/root/data/資料夾下,這時候/roo/data裡面就會同時有mysql掛載過來的/var/lib/mysql和mongodb掛載過來的/data/db裡面的檔案。

hzbtest3的/var/lib/mysql目錄和hzbtest5的/data/db目錄都能看到/root/data裡面的全部檔案。

5)使用dockerfile新增volume

from mysql:latest  

run useradd root

volume /data

run touch /data/aa

run chown -r root:root /data

這種情況和docker run -v /data是一樣的。注意,dockerfile中使用volume是不能掛載宿主機中指定的資料夾。這時為了保證dockerfile的可移植性,因為不能保證所有的宿主機都有對應的資料夾。

6)共享volume/資料卷容器(--volumes-from)

首先建立乙個資料卷容器,在/root/data下面放乙個檔案test.txt

docker run -it -v /root/data --name=dbdata mysql:latest /bin/bash

建立乙個容器testa引用這個卷

docker run -it --name=testa --volumes-from dbdata mysql:latest /bin/bash

建立乙個容器testb引用這個卷

docker run -it --name=testb --volumes-from dbdata mysql:latest /bin/bash

可以看到testa和testb的/root/data目錄下都會有test.txt檔案

當在testb的/root/data下新增aa.txt檔案時,testb的/root/data下也將看到aa.txt檔案,說明他們是共用的乙個資料卷。

docker 容器掛載

設定容器目錄為唯讀模式 docker run it name haha3 v opt haha3 opt haha3 rocentos bin bash 3 建立volume容器,多個容器共享資料 建立volume container docker run it v var volume1 v va...

Docker掛載題目

掛載ctf題目 1.安裝container 2.掛載本地題目所在的目錄 3.用socat命令掛載到container埠 退出後中斷 4.用nohup永久掛載題目退出容器不會中斷 5.用nc命令連線題目 此方法只能在乙個區域網內可以訪問。docker pulldocker run it v 本地目錄 ...

Docker掛載題目

掛載ctf題目 1.安裝container 2.掛載本地題目所在的目錄 3.用socat命令掛載到container埠 退出後中斷 4.用nohup永久掛載題目退出容器不會中斷 5.用nc命令連線題目 此方法只能在乙個區域網內可以訪問。docker pulldocker run it v 本地目錄 ...