Docker持久数据链接

时间:2016-02-06 22:06:54

标签: docker dockerfile

我正在尝试创建3个容器Docker环境:

  • 仅限数据的容器
  • 数据库容器
  • 应用容器

我通过运行:

创建data-onlydatabase容器

docker run -d -t --name dbdata -v /dbdata data-only

docker run -d -t --volumes-from dbdata --name db hdf5

我已经测试了data-only容器和database容器之间的持久性,但它确实有效。

链接app容器:

这是我遇到问题的地方。当我将app容器链接到运行的database容器时:

docker run -i -t -p 5000:5001 --link db:db --name app py-opencv

我找不到我的data-only/dbdata。我已经阅读了所有可以找出原因的方法,但无济于事。

当我运行docker inspect app时,我可以看到链接:

"Links": [
            "/db:/app/db"
        ]

我也看到:"Mounts": []"VolumesFrom": null不确定这是否是一个问题。

当我运行docker exec app cat /etc/hosts时,我看到了:

172.17.0.4  1cab4ab3c886
127.0.0.1   localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.17.0.2  db 5e291000ab13

请帮忙

Dockerfiles(由于简洁而剥离了一些内容):

data-only

FROM debian:jessie

ENV HOME /root

CMD ["true"]

database

FROM debian:jessie

ENV HOME /root

# Install dependencies via apt-get
# Build HDF5
# Cleanup

EXPOSE 5001

app

FROM python:3.5

ENV HOME /root

# Install dependencies
# Install Python packages
# Build OpenCV and dependencies

# Update environment and directories
ENV PYTHONUNBUFFERED 1
ENV HDF5_DIR /usr/bin/ld
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/

EXPOSE 5000

1 个答案:

答案 0 :(得分:1)

当您运行命令db

时,您的数据容器仅位于docker run -d -t --volumes-from dbdata --name db hdf5容器中

如果您想要在应用容器中访问该数据容器,您还应该添加命令volumes-from

使用此命令docker run -i -t -p 5000:5001 --link db:db --name app py-opencv,您只链接两个容器。 app容器获取有关db容器的/etc/hosts配置,但不涉及数据卷。

所以代替docker inspect app运行docker inspect db,您将在mount参数中找到数据容器信息