• Docker(34)- 如何修改 docker 容器的目录映射


    如果你还想从头学起 Docker,可以看看这个系列的文章哦!

    https://www.cnblogs.com/poloyy/category/1870863.html

    问题背景

     docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/webapps:/usr/local/tomcat/webapps tomcat:7
    • 创建容器时,指定了目录映射(-v)
    • 如果容器运行之后发现目录映射需要改怎么办?

    删除原有容器,重新创建新的容器

    删除容器

    docker rm -f 容器ID/名字

    重新创建容器

     docker run -d -p 9999:8080 -i --name tomcat7 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

    重新指定需要映射的目录

    优点

    简单粗暴,在测试环境用的更多

    缺点

    如果是数据库、服务器相关的容器,创建新的容器,又得重新配置相关东西了

    修改容器配置文件(重点)

    暂停 Docker 服务

    systemctl stop docker

    进入 Docker 容器配置文件目录下

    cd /var/lib/docker/containers/
    ls

    进入某个容器的配置文件目录下

    容器ID 就是文件夹名称,可通过 docker ps -aq 来查看,不过这是缩写,对照起来看就行

    cd c614b6db4aed0c8d0c742baa09ff4e2c24761703586460b68633d7b66e62c633
    ls

    修改 config.v2.json

    vim config.v2.json

    • 输入 / ,搜索映射的目录(webapps)
    • 也可以找到 MountPoints 
    • 若需要重新指定主机上的映射目录,则改绿圈的两个地方
    • 若需要重新指定容器上的映射目录,则改蓝圈的两个地方

     

    MountPoints 节点

    其实是一个 json 结构的数据,下图

    重新启动 Docker 服务

    systemctl stop docker
    docker start tomcat7
    cd /usr/local/tomcat/webapps
    ls

    重新映射目录成功!!

    注意

    优点

    直接操作配置文件没有副作用,算简单

    缺点

    需要暂停 Docker 服务,会影响其他正常运行的 Docker 容器

    使用 docker commit 命令

    停止 Docker 容器

    docker stop tomcat7

    使用 commit 构建新镜像

    docker commit tomcat7 new_tomcat7
    docker images

    使用新镜像重新创建一个 Docker 容器

     docker run -d -p 9999:8080 -i --name tomcat77 -v /usr/local/tomcat/webapps:/usr/local/tomcat/webapps tomcat:7

    修改新容器的名字

    如果新容器想用回旧容器的名字,需要先删了旧容器,再改名

    docker rm -f tomcat7
    docker rename tomcat77 tomcat7
    docker ps

    优点

    • 无需停止 Docker 服务,不影响其他正在运行的容器
    • 旧容器有的配置和数据,新容器也会有,不会造成数据或配置丢失,对新旧容器都没有任何影响

    缺点

    需要生成新的镜像和容器,管理镜像和容器的时间成本会上升

  • 相关阅读:
    设置Fedora core 6中yum光盘源 去除无收集不克不及翻开软件包治理的标题效果
    从头放置Windows后Ubuntu 8.04启动的恢复
    _desktop.ini“维金(Worm.Viking.m)”的病毒?
    理顺 JavaScript (17) 函数
    理顺 JavaScript (15) 类的继承手段: prototype
    UniCode 速查表
    理顺 JavaScript (16) 使用 prototype
    一句话判断网络是否联通
    给 Edit 两个可选值 回复 "delphi学习中" 的问题
    理顺 JavaScript (20) String 中的正则表达式函数
  • 原文地址:https://www.cnblogs.com/poloyy/p/13993832.html
Copyright © 2020-2023  润新知