docker执行命令不使用挂载的目录为/

我是docker集装箱的新手,我正试图解决我现在面临的一个问题。

这些是基于有限知识的理解。

当我们创build一个docker容器时,Docker会创build一个本地mount,并将其用作docker容器的根文件系统。

现在,如果我使用docker exec在主机服务器的容器中运行任何命令,docker并没有使用装入的分区作为容器的/文件系统。 我的意思是,它仍然从主机服务器上渲染二进制文件和envvariables。 是否有任何选项/替代解决scheme,使docker使用docker exec的原始挂载目录呢?

如果我使用docker attach或docker run -i -t / bin / bash来访问/启动容器,我将挂载的目录作为我的/文件系统,从而为我提供了一个完全独立于我的主机系统的环境。 但是,docker exec命令不会发生这种情况。

请帮忙 !!

你在误解中运作。 泊坞窗图片只包含安装在里面的东西。 出于效率原因,这通常是操作系统的一个非常简化的版本。

docker容器是从一个图像启动 – 这是一个正在运行的版本,可以更改和存储状态 – 但可能会被丢弃。

docker run从图像启动一个容器。 您可以多次run相同的图像来创build完全不同的容器(正好具有相同的内容起点)。

docker exec附加到其中一个容器来运行命令。 所以你只能看到它里面的东西…是在图像内,或添加后启动(如日志文件)。 它没有对主机文件系统的看法,可能不是同一个操作系统 – 唯一的要求是它共享内核的元素…虽然它通常有一个常用的二进制文件的select。

而当你run一个图像来创build一个容器时,你可以指定一个安装。 其中一个选项是通过主机文件系统,例如-v /path/on/host:/path_in/container 。 但是,您不必须使用数据容器,也可以使用docker卷装入。 例如, docker run -v /mount使用docker文件系统(不是父主机的一部分)在容器内创build一个挂载点。 这可以用来创build一个数据容器: docker create -v /path/to/data --name data_for_acontainer some_basic_image

然后将这个数据容器的卷装载到一个新的容器上:

 docker run -d --volumes-from data_for_acontainer some_app_image 

哪个将数据容器附加到/path/to/data装载上。 但是,两者都不是直接触及“主机”文件系统,而是整个Docker化的重点。