将本地目录挂载到远程docker容器

时间:2017-06-05 16:01:01

标签: python mount

我有一个远程docker容器,我已经使用它来运行:

docker pull bamos/openface
docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash

我还有

的本地目录
/Users/name/Documents/my-project

我需要import openface来自my-project内的脚本ipython,但我不知道如何将my-project挂载到openface,或者应该它是相反的方式。

一般来说,我一直在阅读这里的文档https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume,但我仍然很困惑。如果有人能

,我将不胜感激
  1. 提供确切的命令,以便我可以从openface
  2. 导入my-project
  3. 解释命令的各个方面,这样我就不那么困惑了:D
  4. 谢谢!

    =============================================== =============== 编辑:

    现在我正在做:

    docker run -v /Users/name/Documents/my-project:/root/my-project -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash
    

    它似乎正在发挥作用。

1 个答案:

答案 0 :(得分:1)

所以,我会指出一些你可以学习的主题,并提出我认为对你有用的想法。

在您还在学习的时候,让我们来看看这些主题:

  • 使用泊坞窗图片
  • 自定义泊坞窗图片
  • 集成一些泊坞窗图像

使用泊坞窗图片

这是你已经知道的。运行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。

现在不太好用,但使用起来很有意思。

自定义泊坞窗图片

您可以创建自己的短片,而不是使用短暂的图像。所以,你需要了解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命令,它将启动一些东西(例如,一个Web服务器)。如果您有在线实例(例如AWS),您可以运行您的docker,它将启动您的Web服务。如果您在本地进行测试,则应在线获得相同的结果。一个常见问题是使用不同版本进行测试(例如python3 local和服务器上的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-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

快速解释:

  • 我们创建了一个容器db,一个postgres数据库
  • 我们创建一个Web服务,从Dockerfile构建(它在构建中是隐式的),并使用命令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。