Docker 持久数据链接
Docker persistent data linking
我正在尝试创建 3 个容器 Docker 环境:
- 一个纯数据容器
- 一个数据库容器
- 一个应用容器
我通过 运行ning 创建了 data-only
和 database
容器:
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
你会在挂载参数
中找到你的数据容器信息
我正在尝试创建 3 个容器 Docker 环境:
- 一个纯数据容器
- 一个数据库容器
- 一个应用容器
我通过 运行ning 创建了 data-only
和 database
容器:
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
你会在挂载参数