【发布时间】:2016-01-22 12:00:58
【问题描述】:
我是 docker 容器的新手,我正在尝试解决我现在面临的问题。
这些是我基于有限知识的理解。
当我们创建一个 docker 容器时,Docker 会创建一个本地挂载并将其用作 docker 容器的根文件系统。
现在,如果我使用 docker exec 从主机服务器运行容器中的任何命令,则 docker 不会使用挂载的分区作为容器的 / 文件系统。我的意思是,它仍然会从主机服务器中获取二进制文件和环境变量。是否有任何选项/替代解决方案可以使 docker 也使用 docker exec 的原始挂载目录?
如果我使用 docker attach 或 docker run -i -t /bin/bash 访问/启动容器,我将安装目录作为我的 / 文件系统,这为我提供了一个完全独立于我的主机系统的环境。但是 docker exec 命令不会发生这种情况。
请帮忙!!
【问题讨论】:
-
您是否使用 --volumes (-v) 标志在容器中显式挂载主机目录?如果您可以将实际命令或用例添加到您的问题中,我们或许可以为您提供更好的帮助。
-
没有从主机到容器的挂载。测试用例:运行 docker 容器的我的主机系统安装了 java 1.8,并且是默认的 java 版本 == # java -version java version "1.8.0_60" == 现在我有一个 docker 容器正在运行,它有 1.7 = == # docker attach 3095e705ee21 root@3095e705ee21:/# root@3095e705ee21:/# java -version java version "1.7.0_91" === 现在,我在主机服务器的同一个 docker 实例上执行 docker exec。 === # docker exec 3095e705ee21 java -version java version "1.8.0_60" === 我得到的是1.8,实际上是来自主机服务器而不是containe
-
以可读的格式将其添加到您的原始问题中
-
还有你在用什么容器,用什么命令来运行它?
-
某些容器可能会有所不同,不确定,但您使用的容器不太可能实际上是从主机系统中获取二进制文件,这与容器的想法背道而驰
标签: docker