Docker 持久数据链接

Docker persistent data linking

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

我通过 运行ning 创建了 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 容器:

这是我运行遇到问题的地方。当我link把app容器放到database容器里运行ning:

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

我找不到我的 data-only/dbdata。我已尽我所能找出原因,但无济于事。

当我 运行 docker inspect app 我可以看到 link:

"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

请帮忙


Docker 文件(为简洁起见,删除了一些内容):

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

您的数据容器仅在 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 容器获取关于数据库容器但不关于数据量的 /etc/hosts 配置。

所以而不是 docker inspect app 运行 docker inspect db 你会在挂载参数

中找到你的数据容器信息