zoukankan      html  css  js  c++  java
  • 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命令中把这个新文件的目录映射出来即可。

  • 相关阅读:
    altium designer 工程中的原理图库和封装如何提取出来
    555是集成电路
    安装JDK+Tomcat,进行环境变量设置,和运行JSP
    2018年房价会涨吗?
    MySQLroot密码的恢复方法
    mysql中的数据类型长度
    感觉还不错,受益很高,有保障
    phpstorm问题
    Mac上的抓包工具Charles
    解决Firefox显示“已阻止载入混合活动内容”的方法
  • 原文地址:https://www.cnblogs.com/koushr/p/14562533.html
Copyright © 2011-2022 走看看