• docker run启动时目录映射研究


    以docker hub的centos:8为研究对象

    1、宿主机和容器映射目录都不存在

    宿主机和容器映射目录都会自动创建,且在一边操作等同于在另一边操作。

    2、宿主机目录不存在,容器映射目录为空。容器中/usr/lib/games目录为空

    宿主机映射目录会自动创建,且在一边操作等同于在另一边操作。

    3、宿主机目录不存在,容器映射目录不为空。容器中/usr/lib/locale/C.utf8目录不为空

    宿主机映射目录会自动创建,容器映射目录中原来的文件都消失了,在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

    4、宿主机映射目录为空,容器映射目录不存在

    容器映射目录会自动创建,且在一边操作等同于在另一边操作。

    5、宿主机和容器映射目录都为空。

    在一边操作等同于在另一边操作。

    6、宿主机映射目录为空,容器映射目录不为空

    容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

    7、宿主机映射目录不为空,容器映射目录不存在

    容器映射目录会自动创建,一进去该目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。

    8、宿主机映射目录不为空,容器映射目录为空

    一进容器映射目录就能看见宿主机映射目录中的文件,且在一边操作等同于在另一边操作。

    9、宿主机和容器映射目录都不为空。

    容器映射目录中原来的文件都消失了。在一边操作等同于在另一边操作,且操作的是宿主机目录中的文件。

    如果想在宿主机中访问容器中的文件,怎么办呢?

    1、如果想访问镜像自带的文件,按照上面实践,直接映射是不行的,直接映射的话,在宿主机和容器中访问的都是宿主机目录中的文件。自己想了个办法,在dockerfile的CMD命令中给想访问的文件加个软链接,docker run时把这个软链接所在目录映射出来就行了。

    https://www.cnblogs.com/koushr/p/14560872.html,dockerfile中CMD改成ln -sf /usr/local/bin/redis-cli /app/bin/redis-cli;redis-server /conf/redis.conf,即在容器启动后,给/usr/local/bin/redis-cli文件建个软链接。docker run命令修改为docker run -d --network n1 -p 6380:6380 -v /Users/shengruikou/Desktop/redis:/conf -v /Users/shengruikou/Desktop/redis/bin:/app/bin my_redis:6.2.0,把宿主机的/Users/shengruikou/Desktop/redis/bin目录和容器的/app/bin目录建立映射关系。在容器启动后,就可以在宿主机的/Users/shengruikou/Desktop/redis/bin目录中访问容器的redis-cli文件了。

    2、如果想访问容器启动后新生成的文件,则直接在docker run命令中把这个新文件的目录映射出来即可。

  • 相关阅读:
    BrowserSync,自动刷新,解放F5,去掉更新提示
    js获取手机系统语言
    块元素,行内元素,行内块区别
    原生js判断某个元素是否有指定的class名的几种方法
    如何实现调用console.log(‘good’.repeat(3))时输出goodgoodgood?
    数组如何去除重复数据,只保留一条
    Sentinel笔记-Flow流控规则
    sentinel笔记 NodeSelectorSlot,ClusterBuilderSlot
    Sentinel笔记--Slotchain
    Sentinel笔记-核心类
  • 原文地址:https://www.cnblogs.com/koushr/p/14562533.html
Copyright © 2020-2023  润新知