linux 已经创建的容器container 如何挂载共享文件夹 如何更改端口 (docker)

最近因为公司的项目在部署时候很困难(保密需求,需要跳板机)我们开发的同学根本无法调试,就想自己搭建一个编译环境进行编译和测试。

这里使用的是 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文件造成的,建议仔细检查。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值