一靶端、背景
在使用docker過(guò)程中速警,有時(shí)候創(chuàng)建容器時(shí)候沒(méi)有設(shè)置掛載本地?cái)?shù)據(jù)卷進(jìn)行文件夾共享,但已經(jīng)在容器中配置完了環(huán)境撕攒,此時(shí)再重新創(chuàng)建一個(gè)容器非常麻煩蒸苇,因此需要對(duì)已有的容器掛載數(shù)據(jù)卷磷蛹。
二、掛載原理
Docker中所有的容器的配置溪烤,如掛載點(diǎn)味咳、運(yùn)行方式等都是以json文件進(jìn)行配置,修改對(duì)應(yīng)的json文件參數(shù)即可掛載指定文件夾檬嘀。
配置容器的json文件
/var/lib/docker/containers/<容器ID>/config.v2.json
/var/lib/docker/containers/<容器ID>/hostconfig.json
三槽驶、打開(kāi)文件
使用
docker ps -a
拿到需要更改的container的12位ID,然后docker inspect id
枪眉,拿到64位ID(終端最上面的那個(gè)ID)停止所有container 并使用
service docker stop
關(guān)閉docker服務(wù)(必須關(guān)閉Docker服務(wù)捺檬,否則無(wú)法修改成功)到目錄
/var/lib/docker/containers/<64位容器ID>/
中復(fù)制config.v2.json
和hostconfig.json
兩個(gè)文件到任意不用root權(quán)限的目錄下,同時(shí)對(duì)原文件進(jìn)行備份贸铜。
4.在~/
下新建兩個(gè)同名文件(避免權(quán)限問(wèn)題)
cd ~/
touch config.v2.json hostconfig.json
5.新開(kāi)一個(gè)終端堡纬,進(jìn)入到容器目錄下,打開(kāi)文件
sudo -i
蒿秦,提升權(quán)限
cd /var/lib/docker/containers/<64位容器ID>/
修改前一定要先備份下烤镐,否則改錯(cuò)了就GG!
cp config.v2.json config.v2.json.back
cp hostconfig.json hostconfig.back
使用gedit
打開(kāi)文件棍鳖,復(fù)制內(nèi)容到~/
目錄下的兩個(gè)同名文件
gedit config.v2.json hostconfig.json
四炮叶、添加共享文件夾掛載信息
使用vscode
打開(kāi)~/
目錄下的這兩個(gè)文件(不建議用gedit
,因?yàn)檫@個(gè)json文件是一行的渡处,使用vscode
可以進(jìn)行格式化镜悉,便于修改)
可以看到config.v2.json
文件用gedit
打開(kāi),內(nèi)容沒(méi)法看医瘫。
1.修改config.v2.json
文件
使用vscode
打開(kāi)侣肄,ctrl+a
全選、右鍵format selection
醇份,變成下面格式就容易修改稼锅。
在MountPoints
參數(shù)下按照相應(yīng)的格式進(jìn)行添加相應(yīng)的字段吼具,注意,必須是絕對(duì)路徑矩距,且不能是/root拗盒,必須是/root/的二級(jí)子目錄。
2.修改hostconfig.json
文件
在hostconfig.json
文件中的Binds
參數(shù)添加宿主機(jī)和容器共享文件夾目錄(注意锥债,必須是絕對(duì)路徑陡蝇,且不能是/root,必須是/root/dataset這樣的二級(jí)子目錄)
使用vscode
打開(kāi)哮肚,ctrl+a
全選毅整、右鍵format selection
,變成下面格式就容易修改绽左,Binds
參數(shù)添加宿主機(jī)和容器共享文件夾目錄。
五艇潭、修改容器配置
把~/
目錄下的config.v2.json
和hostconfig.json
兩個(gè)文件內(nèi)容拼窥,對(duì)應(yīng)復(fù)制到以下文件中。
/var/lib/docker/containers/<容器ID>/config.v2.json
/var/lib/docker/containers/<容器ID>/hostconfig.json
六蹋凝、啟動(dòng)docker 服務(wù)
service docker start
重要參考
linux 已經(jīng)創(chuàng)建的容器container 如何掛載共享文件夾 如何更改端口 (docker)