如何挂载Docker容器,以便我可以运行存储在容器内部的python脚本

时间:2019-01-20 14:06:12

标签: python docker intellij-idea ros mount

我正在使用通过此docker image创建的dockerfile(不是我的)。

ROS动力学,ROS2和一些重要的软件包已经安装在此图像上。 当我使用docker run -it <image-hash-code>运行docker镜像时,ROS动力学运行良好,并且python3等软件包可以找到。 因此,所有Docker映像都是我自己项目的一个很好的起点。

但是,我想更改存储在docker映像中的python脚本。 python脚本正在使用已安装的软件包,并且正在与ROS动力学以及ROS2进行交互。

我不想在Ubuntu系统上安装所有这些程序和程序包,这些程序和程序包已经安装在docker映像中,以便测试我自己的python脚本。

是否可以挂载docker映像,以便测试python脚本? 当然,我可以使用vim编辑python脚本,但是我在考虑更多IntelliJ。

因此,IDE(例如IntelliJ)如何访问和运行存储在docker映像中的python脚本,其结果与我直接在运行的容器上执行此脚本的结果相同。

乔哈尔勋爵(Lord Johar)的方法,正在安装docker,使用IDE编辑脚本,保存图像,然后运行图像,这种方法正在起作用,但这不是我想要实现的。

我的目标是将docker容器用作开发环境,IDE可以在该开发环境上访问并使用已安装的程序和软件包。

换句话说:我想在主机系统上使用IDE,以便以与将IDE安装在docker映像上相同的方式测试我的python脚本。

3 个答案:

答案 0 :(得分:0)

您可以使用docker commit

  1. 使用此命令docker commit <your python container>
  2. 现在键入docker images以查看图像。
  3. 您应使用此命令docker tag myphthon:v1 <image ID>
  4. 重命名并标记图像
  5. 使用docker run命令,然后享受您的代码。 最好将一个卷安装到您的容器上以保留代码和数据Docker volume

答案 1 :(得分:0)

  

但是,我想更改存储在docker映像中的python脚本。 python脚本正在使用已安装的软件包,并且正在与ROS动力学以及ROS2进行交互。

  1. 您必须将卷挂载到docker并编辑文件。
  2. 更好的方法是使您的形象 在您的ubuntu上安装docker,提取python映像,使用Dockerfile创建映像,每次您更改代码时都使用新标签构建新映像,然后运行映像并享受docker容器

第二种方式

  1. 将您的python应用复制到/ path / to / your / app(我的主文件是index.py)
  2. 将目录更改为/ path / to / your / app
  3. 创建名称为Dockerfile的文件:

    FROM python:alpine3.7
    COPY . /app
    WORKDIR /app
    RUN pip install -r requirements.txt
    EXPOSE 5000
    CMD python ./index.py
    

    还要注意的是RUN指令,该指令正在调用PyPi(pip)并指向requirements.txt文件。该文件包含应用程序需要运行的依赖项列表。

  4. 构建图像。

    docker build --tag my-app .
    

    注意:命令末尾是一个点,太重要了。另一件事是,您必须位于Dockerfile中的/ path / to / your / app

  5. 现在您可以运行容器

    docker run --name python-app -p 5000:5000 my-app
    

答案 2 :(得分:0)

您正在寻找的是一种可以与本地或远程 docker 恶魔进行通信的工具。

我知道eclipse可以做到这一点。为此使用的工具称为 type Item struct { Config struct { BaseAuthUrlKey string `json:"BASE_AUTH_URL_KEY"` BaseUrl string `json:"BASE_URL"` ConnTimeoutSeconds string `json:"CONN_TIME_OUT_SECONDS"` ReadTimeoutSeconds string `json:"READ_TIME_OUT_SECONDS"` } `json:"config"` ID string `json:"id"` } 。它可以在您的网络中运行 docker 恶魔的机器上探索 docker 镜像和容器。它可以启动和停止容器,将容器提交到镜像并创建镜像。

您需要(据我了解)是能够提交容器,因为您要求更改容器内的脚本。如果你喜欢在那些 docker 容器上坚持你的工作,提交是必不可少的。

由于我不熟悉 IntelliJ,我建议查看 eclipse's docker tooling wiki 以了解它是否是您要查找的内容。然后在你有了一个想法之后,在你最喜欢的 IDE 中寻找类比,比如 IntelliJ

另一个支持 docker explore 的 IDE 是 clion