Docker持久数据连接

我正在尝试创build3个容器的Docker环境:

  • 只有数据的容器
  • 一个数据库容器
  • 应用程序容器

我通过运行创builddatabasedatabase容器:

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

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

我已经testing了data-only容器和database容器之间的持久性,它的工作原理。

链接app容器:

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

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

我无法find我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 

您的数据容器只在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/hostsconfiguration,而不是关于数据量。

所以,而不是docker inspect app运行docker inspect db ,你会发现你的数据容器信息在安装参数