Tag: python

Docker:不读文件

我正在构build一个简单的应用程序: Dockerfile , app.py和requirements.txt 。 当Dockerfile生成时,我得到错误:“没有这样的文件或目录”。 但是,当我更改添加到复制在Dockerfile它的作品。 你知道这是为什么吗? 我正在使用教程: https : //docs.docker.com/get-started/part2/#define-a-container-with-a-dockerfile App.py from flask import Flask from redis import Redis, RedisError import os import socket # Connect to Redis redis = Redis(host="redis", db=0, socket_connect_timeout=2, socket_timeout=2) app = Flask(__name__) @app.route("/") def hello(): try: visits = redis.incr("counter") except RedisError: visits = "<i>cannot connect to Redis, counter […]

docker-py:通过对等方重置连接

我试图通过docker-py创build一个docker镜像,我使用下面的代码: import docker import os docker_client = docker.from_env() path = os.path.dirname(os.path.abspath(__file__)) + "/container" docker_client.images.build(path=path, tag='container-tag') 最后一行抛出这个错误: requests.exceptions.ConnectionError: ('Connection aborted.', error(104, 'Connection reset by peer')) 我正在使用的用户是docker组的成员,我已经检查了套接字文件的权限。

使用Docker for Development,我错过了这个观点吗?

如果您需要安装Python,Go,Ruby及其依赖项,以便在IDE(例如VS Code或Jetbrains等效项)中正常工作,那么使用Docker进行开发有什么意义? 没有它们,你就不会有一些开发工具,比如适当的debugging器。 看起来你需要做所有额外的步骤来设置开发有或没有docker。 那么为什么要使用它? 我理解部署,但不是为了开发。

主机客户端脚本从dockerized服务器脚本获取空string响应

我在mac osx上运行Docker版本17.06.2-ce-mac27(19124)。 我试图运行容器中的套接字和容器主机中的客户端脚本的简单的python服务器脚本。 看起来客户端脚本可以连接到端口但不触发服务器脚本。 当我从容器外部运行客户端脚本时,我得到一个空的响应: port_test_server $ ./echo_client.py 收到'' 并且容器中运行的服务器脚本没有输出。 当我从容器中运行客户端脚本时,我得到了预期的响应 port_test_server $ docker container exec 7c7d1fb7e614 ./echo_client.py 收到“有爱就有生命” 以及在容器中运行的服务器脚本的预期输出: port_test_server $ docker run -it –expose 8887 -p 8887:8887 ptserver 由('127.0.0.1',38694) 因此,服务器脚本在容器中运行,而从容器外部运行的客户端脚本正在连接到端口,但似乎服务器脚本没有被触发。 这里是代码: Docker文件:(将echo_client.py和echo_server.py拷贝到workdir中) FROM debian:jessie-slim ENV DEBIAN_FRONTEND noninteractive RUN apt-get update && apt-get install -y locales \ && localedef -i en_US -c -f UTF-8 […]

在Docker容器中运行一个命令时奇怪的“没有这样的文件或目录”错误

我正试图运行一个非常简单的python文件,只是在docker容器中打印“woof”。 据我所知,我已经创build了一个名为: c5d3c4c383d1 然后我运行下面的命令,试图告诉自己在docker中运行什么目录: sudo docker run c5d3c4c383d1 pwd 这将返回以下值: / 我认为是我的根目录,所以我去我的根目录。 键入密码显示: / 然后通过nano命令创build一个名为meow.py的文件,并在这一行中input: print("Woof!") 我保存这个并用ls命令确认这是在/目录下。 然后我input以下内容: sudo docker run c5d3c4c383d1 python meow.py 哪个返回: python: can't open file 'meow.py': [Errno 2] No such file or directory 我不明白这一点。 很明显,我不在根目录下运行docker命令,因为meow.py文件在根目录下是DEFINETLY,但是说这个文件找不到。 到底是什么…正如我所说当我在泊坞窗容器中运行密码它说,我在/目录,但我不能给这个文件找不到错误。

从Docker容器中以不同的用户身份运行命令/脚本

首先,我知道这可能不是最“容器化”的解决scheme。 在这一点上,我想知道如果我将不得不放弃我到目前为止,或者如果我能做这个工作。 我需要在服务器之间移动文件并将其备份。 我目前有一个脚本,这样做。 我运行这个脚本的用户具有所有服务器的密钥,因此,从服务器到服务器的rsync是这个脚本没有问题。 我现在正在创build一个web服务,用户可以通过ping来安全地移动文件并进行备份。 这可以防止他们不得不联系我来运行脚本,并且稍后将允许与某些工作stream程软件集成。 但是,我的docker容器捕获的HTTP请求到Web服务将不会有密钥到处,因此不能成功地运行脚本。 我正在寻找一个解决scheme,将允许我运行这个脚本,同时也有一个Web服务,用户可以请求。 我最初的希望是为了基本上传递参数和运行脚本。 我不知道下面这些想法的可行性,但是这是我迄今为止的两个想法。 运行泊坞窗容器作为我的用户,到处都有钥匙 在启动时将docker钥匙交给任何地方 有没有人有任何build议,如何做到上述问题或可能的解决办法? 随意问更多的问题,因为我知道这是一个奇怪的问题。 提前感谢任何帮助!

获取错误铬不可从docker到达

我正试图从一个python应用程序的铬上运行seleniumtesting。 这工作正常,如果我在独立的python服务器上运行。 当我创buildDocker镜像并尝试从那里执行时,我得到一个这样的错误 2017-10-03 21:18:49 – DEBUG :: Thread-1 : Error occured: Message: chrome not reachable (Driver info: chromedriver=2.32.498513 (2c63aa53b2c658de596ed550eb5267ec5967b351),platform=Linux 4.4.84-boot2docker x86_64) 。 我看到了几个关于SO的答案,这些答案build议将–no-sandbox and –disable-setuid-sandbox参数添加到chrome选项,但是当我尝试运行映像时仍然遇到该错误。 options = webdriver.ChromeOptions() options.binary_location = '/app/webdrivers/linux/32/chromedriver' #options.add_argument('headless') options.add_argument('–no-sandbox') options.add_argument("–disable-setuid-sandbox") #options.add_argument('window-size=1200×600') driver = webdriver.Chrome(chrome_options=options) 我已经安装了铬驱动程序,它的存在于我的泊坞窗应用程序文件夹中,并且我已经复制到/usr/bin和/usr/local/bin只是为了看看是否能解决我的问题。 任何帮助,高度赞赏。 谢谢 !!

为什么conda安装tk不能在我的docker容器中工作,即使它说安装了?

我在我的python 3 docker容器中遇到了问题。 我试过了: conda install tk 但它说它确实安装它 root@36602e2cd649:/home_simulation_research/overparametrized_experiments/pytorch_experiments# conda install tk Fetching package metadata ……….. Solving package specifications: . # All requested packages already installed. # packages in environment at /opt/conda: # tk 8.6.7 h5979e9b_1 但是当我去python,并尝试导入它不起作用: >>> import Tkinter Traceback (most recent call last): File "<stdin>", line 1, in <module> ImportError: No module named […]

康达在集装箱内的目的是什么?

我已经看到很多使用conda命令的dockerfiles例子。 还有预先build立的anaconda和miniconda容器。 我肯定错过了什么。 docker REPLACE virtualenv和conda? 我不应该在我的dockerfile中拥有所有的依赖关系吗? 我不明白从这里添加anaconda我得到了什么。 事实上,如果我不得不使用所有的miniconda包含的模块,我必须拉一个miniconda容器,这似乎使我的容器不必要地变大了。

无法在dockerfile中创buildconda env

我在我的应用程序文件夹中有一个environment.yml 我在我的dockerfile中有这个: RUN conda env create RUN source activate myenvfromymlfile 当我运行容器,虽然env没有激活。 如果我do conda env list是看/opt/conda被激活: root@9c7181cf86aa:/app# conda env list # conda environments: # myenvfromymlfile /opt/conda/envs/myenvfromymlfile root * /opt/conda 如果我附加到容器,我可以手动运行source activate myenvfromymlfile ,它的工作原理,但为什么不在RUN指令工作? 在例子中,我经常在需要conda的dockerfiles中看到这个: CMD [ "source activate your-environment && exec python application.py" ] 有人可以解释为什么有必要使用&&来使它成为一个单一的命令? 为什么在一个RUN指令中运行“source activate”不起作用? 我想让我的dockerfile看起来像这样: RUN conda env create RUN source activate myenvfromymlfile […]