linux 已经创建的容器container 如何挂载共享文件夹 如何更改端口 (docker)
最近因为公司的项目在部署时候很困难(保密需求,需要跳板机)我们开发的同学根本无法调试,就想自己搭建一个编译环境进行编译和测试。这里使用的是 docker 中 centos 6.6版本的基础镜像,自己安装的python3环境,如何安装环境在上一篇文章已经完整介绍过了,这里不多赘述。当我费劲千辛万苦弄完docker的container环境,却发现几乎没交教程教如何在已有的container里开启共享文
最近因为公司的项目在部署时候很困难(保密需求,需要跳板机)我们开发的同学根本无法调试,就想自己搭建一个编译环境进行编译和测试。
这里使用的是 docker 中 centos 6.6版本的基础镜像,自己安装的python3环境,如何安装环境在上一篇文章已经完整介绍过了,这里不多赘述。
当我费劲千辛万苦弄完docker的container环境,却发现几乎没交教程教如何在已有的container里开启共享文件夹,这里鸣谢:
1.分享如何挂载文件的博主(hjun169):51cto
2. 如何修改已创建container的端口映射 (不会推车的娘们):csdn
二位的内容很有操作性,非常感谢。
整个过程如下 :
0. 使用 docker -ps -a 拿到需要更改的container的ID(一大长串的那个)
1. 停止所有container 并使用service docker stop(ubuntu平台)关闭docker服务
2. 到目录 /var/lib/docker/containers/<容器ID>/中复制 config.v2.json 和 hostconfig.json 两个文件到任意不用root权限的目录下
3. 更改相应位置,更改端口信息,或者共享文件夹绑定信息
3.1 仅更改端口:在hostconfig.json 文件中 找到类似 "PortBindings":{"80/tcp":[{"HostIp":"","HostPort":"8080"}]} 字段,其中键值对的键是容器中的端口,值是主机的 ip 和 端口 ,修改成你想要的的即可,仅适用于已经定义想修改情况。
3.2 修改和新增,如果修改后的端口数量和run时候的不一致除了上面的修改,还需要修改config.v2.json 中的 "ExposedPorts":{"80/tcp":{}}项 修改使得键值对的数量跟你想要的一致,值保持空对象就行。
3.2 修改或新增共享文件夹:
a:修改hostconfig.json 文件 中的"Binds": ["/data:/import"] 项目 格式是 "主机目录:容器目录"
b:修改config.v2.json 文件中的 MountPoints 项 成为如下结构(中文和括号不要复制)
"MountPoints": {
"/import(容器)": {
"Source": "/data(主机)",
"Destination": "/import(容器)",
"RW": true,
"Name": "",
"Driver": "",
"Type": "bind",
"Propagation": "rprivate",
"Spec": {
"Type": "bind",
"Source": "/data(主机)",
"Target": "/import(容器)"
},
"SkipMountpointCreation": false
}
4.使用root权限将文件复制到原来的文件夹 这里建议写个脚本:使用 sudo chmod +x ./update.sh 进行提权后 ./update.sh 运行
update.sh文件内容如下
cp config.v2.json /var/lib/docker/containers/<长长的容器ID>/config.v2.json
cp hostconfig.json /var/lib/docker/containers/<长长的容器ID>/hostconfig.json
5.恢复运行docker 用命令 service docker start 启动服务
6.启动容器应该就可以看到你自己的 /import 文件夹了 这个文件夹跟主机共通,你想要的端口也绑定好了
PS:
务必要关闭docker 的服务后再修改!!!
不然会造成各种问题,最严重的的是container丢失
1.不要在确定好用前修改容器的名字,会造成端口资源锁定 遇到的话请看这篇文章: https://blog.csdn.net/zpwangshisuifeng/article/details/104834323
2.json文件默认这里是没有格式的,建议用各种文本编辑器来做,不容易造成错误我用的atom配合pretty-json插件
3.记得备份上述两个json ,出现docker start卡主后可以用原来的配置文件解除问题,docker start 出问题多半是你自己修改json文件造成的,建议仔细检查。
更多推荐
所有评论(0)