Docker给已创建的容器额外挂载共享⽂件夹
⼀、背景
在使⽤docker过程中,有时候创建容器时候没有设置挂载本地数据卷进⾏⽂件夹共享,但已经在容器中配置完了环境,此时再重新创建⼀个容器⾮常⿇烦,因此需要对已有的容器挂载数据卷。
⼆、挂载原理
Docker中所有的容器的配置,如挂载点、运⾏⽅式等都是以json⽂件进⾏配置,修改对应的json⽂件参数即可挂载指定⽂件夹。
配置容器的json⽂件
/var/lib/docker/containers/<;容器ID>/config.v2.json
/var/lib/docker/containers/<;容器ID>/hostconfig.json
三、打开⽂件
1. 使⽤ docker ps -a拿到需要更改的container的12位ID,然后docker inspect id,拿到64位ID(终端最上
⾯的那个ID)
2. 停⽌所有container 并使⽤service docker stop关闭docker服务(必须关闭Docker服务,否则⽆法修改成功)
3. 到⽬录/var/lib/docker/containers/<64位容器ID>/中复制 config.v2.json和 hostconfig.json两个⽂件到任意不⽤root权限的⽬录下,同时对原⽂件进⾏
备份。
4.在~/下新建两个同名⽂件(避免权限问题)
cd ~/
docker进入容器touch config.v2.json hostconfig.json
5.新开⼀个终端,进⼊到容器⽬录下,打开⽂件
sudo -i ,提升权限
cd /var/lib/docker/containers/<64位容器ID>/
修改前⼀定要先备份下,否则改错了就GG!
cp config.v2.json config.v2.json.back
cp hostconfig.json hostconfig.back
使⽤gedit打开⽂件,复制内容到~/⽬录下的两个同名⽂件
gedit config.v2.json hostconfig.json
四、添加共享⽂件夹挂载信息
使⽤vscode打开~/⽬录下的这两个⽂件(不建议⽤gedit,因为这个json⽂件是⼀⾏的,使⽤vscode可以进⾏格式化,便于修改)
可以看到config.v2.json⽂件⽤gedit打开,内容没法看。
gedit打开的界⾯
1.修改config.v
2.json⽂件
使⽤vscode打开,ctrl+a全选、右键format selection,变成下⾯格式就容易修改。
vscode打开
在MountPoints参数下按照相应的格式进⾏添加相应的字段,注意,必须是绝对路径,且不能是/root,必须是/root/的⼆级⼦⽬录。
2.修改hostconfig.json⽂件
在hostconfig.json⽂件中的Binds参数添加宿主机和容器共享⽂件夹⽬录(注意,必须是绝对路径,且不能是/root,必须是/root/dataset这样的⼆级⼦⽬录)
使⽤vscode打开,ctrl+a全选、右键format selection,变成下⾯格式就容易修改,Binds参数添加宿主机和容器共享⽂件夹⽬录。
hostconfig.json
五、修改容器配置
把~/⽬录下的config.v2.json和hostconfig.json两个⽂件内容,对应复制到以下⽂件中。
/var/lib/docker/containers/<;容器ID>/config.v2.json
/var/lib/docker/containers/<;容器ID>/hostconfig.json
六、启动docker 服务
service docker start
重要参考
linux 已经创建的容器container 如何挂载共享⽂件夹 如何更改端⼝ (docker)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。