docker将主机的/目录挂载到容器的/在debian wheezy 7.8中

时间:2016-02-27 16:45:30

标签: docker debian

我正在我的debian wheezy主机上创建一个非常基本的图像。这是Dockerfile:

FROM ubuntu:trusty
USER root

# Activate multiverse repos
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ trusty universe multiverse' >> /etc/apt/sources.list
RUN echo 'deb http://security.ubuntu.com/ubuntu trusty-security universe multiverse' >> /etc/apt/sources.list
RUN echo 'deb http://archive.ubuntu.com/ubuntu/ trusty-updates universe multiverse' >> /etc/apt/sources.list
RUN apt-get update

RUN apt-get install -y supervisor

WORKDIR /

CMD ["/usr/bin/supervisord", "-n"]

为了构建图像,我使用了docker build -t basic-ubuntu .

为了运行容器,我使用了docker run -d basic-ubuntu

要进入容器,我使用了docker exec -i -t <container_id> bash

当我进入容器时,我看到的是容器的根目录/与主机具有相同的内容。当我在容器上创建文件时,它也在主机上创建。即使我在Dockerfile中添加了RUN apt-get install -y我在主机上没有的某个包,但我在容器上找不到它。实际上,甚至容器上的$ PATH变量也与主机相同。

以下是我的环境

的一些信息
host$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.8 (wheezy)
Release:        7.8
Codename:       wheezy

host$ docker version
Client:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Thu Feb 11 19:20:12 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.1
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   9e83765
 Built:        Thu Feb 11 19:20:12 2016
 OS/Arch:      linux/amd64

docker inspect

显示的坐骑
"Mounts": []

对于完整的码头工人检查跟踪:http://pastebin.com/t4uSu4ZH

我认为问题来自docker exec步骤。因为构建和运行似乎正常工作。

2 个答案:

答案 0 :(得分:1)

  

我认为问题来自docker exec步骤

情况确实如此,考虑到容器可以隔离您与主机 (不同的文件系统,进程,root,用户......)

当你对某个容器“执行bash”时,你会看到一个提示:

 root@<short_container_id>

如果你没有看到,那是因为你的docker exec不能正确执行。

如果你确实看到了,那么你认为主机上的内容实际上仍然是容器内容。

同样相关,与-i一起使用时,docker exec(互动)可能存在潜在错误。
请参阅“Why do there exist “-i” and “-t” options for the “docker exec” command?”。

OP amine确认情况为in the comments

Issue 8755 ("Docker tty is not a tty with docker exec")表示-t(tty)未正确打开centos7上的tty(不是centos6)。

即使TERM设置为xterm,也会发生这种情况(不要忘记issue 9299docker execTERM时未设置-t env }通过)

Op提到的另一个问题是:

  

当我回到howto install docker in debian时,我发现在先决条件中:“kernel must be 3.10 at minimum”和“These older versions are known to have bugs”。
  我的debian的内核版本是3.2   解决方案是升级到更新的debian版本,内核版本高于3.10

答案 1 :(得分:0)

我遇到docker volume mount function工作不正常的问题。结果证明这是内核版本问题。将Debian内核从3.2升级到3.16后,一切正常。

$ uname -a
Linux 3.16.0-0.bpo.4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3~bpo70+1 (2016-01-19) x86_64 GNU/Linux