客户需求总是多种多样的,
即使你最初想得再好再详细,
过一段时间后,
你的docker系统,架构或多或少会发生一些变化。
其中一个docker需求就是怎么在运行的容器里,
新增挂载目录,
下面子恒老师来详细讲讲…
一、 docker容器新添加绑定目录原理
docker容器的挂载信息,
保存在 /var/lib/docker/containers/ 各容器实例的下面两个文件中:
1) hostconfig.json
2) config.v2.json
在上面两个文件按照格式新增挂载信息,
就能在已经运行的容器实例中添加绑定目录。
二、 docker已运行容器挂载目录操作方法
我们以nginx容器为例做演示,
2-1) 查看正在运行的容器
docker ps
记下nginx容器id,和其它所有容器的id
假设nginx容器id为ef7XXXX
由于第三步要停止docker服务,
为了方便后面重启docker容器,
这里要把所有容器的id或名称记下来。
2-2) 关闭所有容器
docker stop $(docker ps -qa)
2-3) 停止docker服务
systemctl stop docker
我们的环境是contos 7,
使用上面的命令,
你根据自己的系统停止docker服务。
2-4) 修改nginx挂载目录配置文件
cd /var/lib/docker/containers/ef7XXXX/
其中 ef7XXXX 为nginx容器id
首先备份hostconfig.json,config.v2.json文件。
2-4-1) 修改hostconfig.json文件
hostconfig.json文件的 “Mounts” 是一个数组,
根据里面的格式新增一个元素,
{"Type":"bind","Source":"/docker/nginx/weixin","Target":"/usr/share/nginx/weixin"}
其中Source 表示宿主机路径,
Target 表示docker容器中的路径。
2-4-2) 修改config.v2.json文件
config.v2.json文件的 “MountPoints” 里保存了挂载的目录信息,
参照MountPoints已经挂载目录的格式,
新增一条挂载目录信息,
"/usr/share/nginx/weixixn":{
"Source":"/docker/nginx/weixin",
"Destination":"/usr/share/nginx/weixin",
"RW":true,
"Name":"",
"Driver":"",
"Type":"bind",
"Propagation":"rprivate",
"Spec":{"Type":"bind",
"Source":"/docker/nginx/weixin",
"Target":"/usr/share/nginx/weixin"
},
"SkipMountpointCreation":true
}
其中Source 表示宿主机路径,
Destination Target 表示docker容器中的路径,
实际的配置文件中,
上面的信息都是在一行里,
修改的时候要特别注意。
2-5) 启动docker服务
systemctl start docker
2-6) 启动docker容器
启动第一步中记录的容器。
2-7) 查看docker新挂载情况
docker inspect ef7XXX
如果你是使用docker的nginx php容器,
在nginx中容器中新增了挂载目录后,
一定要在php中新增相关路径的挂载目录,
否则nginx会报错找不到文件。
猛击这里,
观看子恒老师《微信支付开发》系列视频
了解实现过程和下载相关源代码

来源:秦子恒博客,欢迎转载分享,请保留出处
docker已运行容器挂载目录,docker容器新添加绑定目录,docker ngix php容器添加挂载目录链接:https://www.qinziheng.com/docker%e6%95%99%e7%a8%8b/9342.htm