将本地目录挂载到远程 docker 容器
Mounting a local directory to remote docker container
我有一个远程 docker 容器,我已将其拉出,目前 运行 使用:
docker pull bamos/openface
docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
我在
也有一个本地目录
/Users/name/Documents/my-project
在 ipython
中开发时,我需要从 my-project
中的脚本 import openface
,但我不知道如何将 my-project
挂载到 openface
,或者应该反过来。
总的来说,我一直在阅读这里的文档https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume,但仍然很困惑。如果有人可以,我将不胜感激
- 给出确切的命令,以便我可以从
my-project
导入 openface
- 解释命令的各个方面,这样我就不会那么困惑了:D
谢谢!
============================================= =================
编辑:
现在我在做:
docker run -v /Users/name/Documents/my-project:/root/my-project -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
它似乎在工作。
所以,我会指出一些你可以研究的主题,并给出我认为对你有用的想法。
既然你还在学习,让我们来看看这些主题:
- 使用 docker 图片
- 自定义 docker 图片
- 整合一些 docker 图像
使用 docker 图片
这是你已经知道的。 运行 docker run -v /Users/name/Documents/my-project:/root/my-project -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
并开始使用它。 运行 一些命令并查看所提供图像的功能。
用例(对我而言):
- 有一次,我需要测试 NoSQL Cassandra。我很容易 运行
docker run --name some-cassandra -d cassandra:latest
并且它已经在工作了
- 我会制作一个 Python/Flask 应用程序,所以与其制作 virtualenv,我更喜欢 Docker。
目前不太好,但用起来很有趣。
自定义一张docker图片
您可以创建自己的图像,而不是使用临时图像。所以,你需要了解Dockerfile。这是一个简单的例子:
FROM bamos/openface
RUN pip install flask
COPY myentrypoint.sh
CMD ["myentrypoint.sh"]
快速解释:
- 从
bamos/openface
开始你自己的形象
- 运行 一个安装 python package flask
的命令
- 复制您的入口点(您需要创建一个)
- 运行 当用户使用你的容器时这个入口点
有了这张图片,只需用名称 Dockerfile
和 运行 docker build -t
chibro2/myopenface .
保存,然后你就有了你自己的带有额外包的图片。
entrypoint 是默认的 sh 命令,它将启动某些东西(例如,网络服务器)。如果您有在线实例(例如 AWS),您可以 运行 您的 docker,它将启动您的网络服务。如果您在本地进行测试,您应该在网上获得相同的结果。一个常见的问题是使用不同的版本进行测试(例如 python3 本地版本,以及 python2 在服务器版本)。
用例:
- 制作您的基础设施的版本(您的 git 存储库中有所有需要的包)
- 制作一个可以在您的服务器上轻松运行的图像。
检查:
https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of-images
https://docs.docker.com/engine/reference/builder/
整合一些docker张图片
我在 Docker 真正喜欢的一件事是 docker 撰写。您可以轻松处理多个 docker 相互配合的图像。 docker-compose:
的一个例子
version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
快速解释:
- 我们创建一个容器数据库,一个 postgres 数据库
- 我们创建一个 Web 服务,从 Docker 文件构建(它隐含在构建中),运行 一个服务器,命令为
python3 manage.py runserver 0.0.0.0:8000
.
Ps.: 是的,它使用代码作为一个卷,但我不建议将其用于生产,但建议用于开发(因此,您可以轻松更改代码,并且不需要构建图像)。
使用 docker-compose,我们可以轻松地集成多个项目并使用一个命令启动所有项目:docker-compose up
用例:
- 这非常适合微服务
- 服务发现很容易
- 简单的扩展命令(
docker-compose scale web=2
将创建 2 个 Web 服务器实例)。
查看此快速入门:https://docs.docker.com/compose/django/
结论
docker 要学的东西太多了。对此我不能给出很好的答案,但我希望我能提供一点帮助。
未来可能的步骤是使用 Docker Machine 和 Docker Swarm。
我有一个远程 docker 容器,我已将其拉出,目前 运行 使用:
docker pull bamos/openface
docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
我在
也有一个本地目录/Users/name/Documents/my-project
在 ipython
中开发时,我需要从 my-project
中的脚本 import openface
,但我不知道如何将 my-project
挂载到 openface
,或者应该反过来。
总的来说,我一直在阅读这里的文档https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume,但仍然很困惑。如果有人可以,我将不胜感激
- 给出确切的命令,以便我可以从
my-project
导入 - 解释命令的各个方面,这样我就不会那么困惑了:D
openface
谢谢!
============================================= ================= 编辑:
现在我在做:
docker run -v /Users/name/Documents/my-project:/root/my-project -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
它似乎在工作。
所以,我会指出一些你可以研究的主题,并给出我认为对你有用的想法。
既然你还在学习,让我们来看看这些主题:
- 使用 docker 图片
- 自定义 docker 图片
- 整合一些 docker 图像
使用 docker 图片
这是你已经知道的。 运行 docker run -v /Users/name/Documents/my-project:/root/my-project -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
并开始使用它。 运行 一些命令并查看所提供图像的功能。
用例(对我而言):
- 有一次,我需要测试 NoSQL Cassandra。我很容易 运行
docker run --name some-cassandra -d cassandra:latest
并且它已经在工作了 - 我会制作一个 Python/Flask 应用程序,所以与其制作 virtualenv,我更喜欢 Docker。
目前不太好,但用起来很有趣。
自定义一张docker图片
您可以创建自己的图像,而不是使用临时图像。所以,你需要了解Dockerfile。这是一个简单的例子:
FROM bamos/openface
RUN pip install flask
COPY myentrypoint.sh
CMD ["myentrypoint.sh"]
快速解释:
- 从
bamos/openface
开始你自己的形象
- 运行 一个安装 python package flask 的命令
- 复制您的入口点(您需要创建一个)
- 运行 当用户使用你的容器时这个入口点
有了这张图片,只需用名称 Dockerfile
和 运行 docker build -t
chibro2/myopenface .
保存,然后你就有了你自己的带有额外包的图片。
entrypoint 是默认的 sh 命令,它将启动某些东西(例如,网络服务器)。如果您有在线实例(例如 AWS),您可以 运行 您的 docker,它将启动您的网络服务。如果您在本地进行测试,您应该在网上获得相同的结果。一个常见的问题是使用不同的版本进行测试(例如 python3 本地版本,以及 python2 在服务器版本)。
用例:
- 制作您的基础设施的版本(您的 git 存储库中有所有需要的包)
- 制作一个可以在您的服务器上轻松运行的图像。
检查: https://www.digitalocean.com/community/tutorials/docker-explained-using-dockerfiles-to-automate-building-of-images https://docs.docker.com/engine/reference/builder/
整合一些docker张图片
我在 Docker 真正喜欢的一件事是 docker 撰写。您可以轻松处理多个 docker 相互配合的图像。 docker-compose:
的一个例子version: '3'
services:
db:
image: postgres
web:
build: .
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
快速解释:
- 我们创建一个容器数据库,一个 postgres 数据库
- 我们创建一个 Web 服务,从 Docker 文件构建(它隐含在构建中),运行 一个服务器,命令为
python3 manage.py runserver 0.0.0.0:8000
.
Ps.: 是的,它使用代码作为一个卷,但我不建议将其用于生产,但建议用于开发(因此,您可以轻松更改代码,并且不需要构建图像)。
使用 docker-compose,我们可以轻松地集成多个项目并使用一个命令启动所有项目:docker-compose up
用例:
- 这非常适合微服务
- 服务发现很容易
- 简单的扩展命令(
docker-compose scale web=2
将创建 2 个 Web 服务器实例)。
查看此快速入门:https://docs.docker.com/compose/django/
结论
docker 要学的东西太多了。对此我不能给出很好的答案,但我希望我能提供一点帮助。
未来可能的步骤是使用 Docker Machine 和 Docker Swarm。