在Windows容器上使用复杂的PowerShell脚本构buildDockerfile

我正在尝试使用运行PowerShell的dockerfile来构build一个Docker镜像。 embedded式powershell脚本已经在dockerfile之外进行了testing,但是在运行dockerfile时却有错误。 从docker文件: RUN powershell -NoProfile -Command " \ $lines = (Get-Content c:\telegraf\telegraf.conf).replace('http://localhost:8086', 'http://publichost.com:8086'); \ Set-Content c:\telegraf\telegraf.conf $lines; \ $lines = (Get-Content c:\telegraf\telegraf.conf).replace('database = "telegraf"', 'database = "qa"'); \ Set-Content c:\telegraf\telegraf.conf $lines \ " 我得到了以下错误: At line:1 char:97 + … egraf.conf; $pos = [array]::indexof($lines, $lines -match global_ … + ~ You must provide a value […]

docker工人不工作NLTK

我想在Docker中运行一个nltk服务。 但是,我总是得到错误信息“'nltk'不是一个包”。 你能弄清楚什么是错的? 在构build过程中一切正常,打印nltk版本。 当用docker-compose up nltk启动容器时,我得到docker-compose up nltk $ docker-compose up nltk Recreating nltk Attaching to nltk nltk | Traceback (most recent call last): nltk | File "/var/www/nltk.py", line 1, in <module> nltk | from nltk.corpus import brown nltk | File "/var/www/nltk.py", line 1, in <module> nltk | from nltk.corpus import brown nltk | […]

如何在容器环境中通过connmanbuild立集装箱networking?

我一直在使用Docker 1.13.1像我的目标,像树莓派和创build容器基于Ubuntu可以带来systemd的。 据我所知,Docker支持容器和docker0网桥的桥接模式,在每个容器中分配IP地址。 如果Connman服务没有在容器中启动,172.17.0.2被正确设置在容器中,但是connman服务启动,不是(随机设置容器中的ip)。 任何人都知道如何使用connman在容器中分配从docker0桥提供的ip地址?

如何捕获Docker中运行的多个命令的输出?

我使用docker来运行一个bash文件,里面有多个命令。 每行一个。 有没有办法分别捕获这些命令的输出? 我想有这样的命令有这个输出,这个其他的命令有这个其他的输出等等。 或者在同一个docker镜像中运行不同的命令? 也许这可能是分离这些命令的输出的一种方式。

Docker和本地/ etc / hostslogging

docker容器与我的主机文件使用最佳做法是什么? 我有这些logging: test.devel IP of my machine test2.devel IP of my machine … 如何将test.devel的请求传递给一个docker,并将test2.devel传递给另一个呢? 谢谢。

使用spotify maven插件构buildDocker镜像时,会更改小型二进制文件

我正在使用Spotify的docker-maven-plugin来构buildDocker镜像。 更确切地说,这一个: <groupId>com.spotify</groupId> <artifactId>docker-maven-plugin</artifactId> <version>0.4.13</version> 我的开发机器有一个Windows 7,所以我运行docker机版本docker-machine version 0.9.0, build 15fd4c7docker版本是这样的 Client: Version: 1.13.1 API version: 1.26 Go version: go1.7.5 Git commit: 092cba3 Built: Wed Feb 8 08:47:51 2017 OS/Arch: windows/amd64 Server: Version: 17.03.0-ce API version: 1.26 (minimum version 1.12) Go version: go1.7.5 Git commit: 3a232c8 Built: Tue Feb 28 07:52:04 2017 OS/Arch: linux/amd64 Experimental: […]

Windows Docker端口转发奇怪的行为

我使用这些命令作为一个服务在Windows 2016上安装docker(所以我没有使用虚拟机,Docker本身安装在windows上): Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force Install-Module -Name DockerMsftProvider -Force Install-Package -Name docker -ProviderName DockerMsftProvider -Force Restart-Computer -Force 从本教程: https : //blog.docker.com/2016/09/build-your-first-docker-windows-server-container/ 我已经build立了一个简单的CIstream程,我使用的容器之一是基于这个图像: https : //hub.docker.com/r/microsoft/mssql-server-windows-express/我执行的步骤之一是: mvn liquibase:update Ddb.url=jdbc:sqlserver://xyzq:1433;databaseName=xyz" -Ddb.driver=com.microsoft.sqlserver.jdbc.SQLServerDriver -Ddb.username=username -Ddb.password=password -Ddb.changelog=changelog 其中xyzq是从外部docker主机可见的正常IP,因此,这个命令工作时,我从我的笔记本电脑迁移qa environemnt执行它,但是当我在qa机器本地执行它报告连接被拒绝。 任何人都知道为什么会发生? 在docker主机端口转发莫名其妙不工作? 为什么外部请求在内部失败时起作用? 还有一件事 – 当我从qa机器命令使用docker容器ip时也是如此,但是我想用host ip代替容器ip。 那可能吗?

从卷更改目录的chmod

我正在尝试在容器中运行CakePHP 2应用程序。 我有一切设置和PHP正常工作,但有一个问题:/ var / www / app / tmp具有不正确的写入权限。 这个目录是从卷加载的

Docker用户定义的networking网关超时

我们在Ubuntu映像中有3个docker容器用于我们的产品。 在第一个容器中,有一个使用SOAP协议提供web服务的tomcat应用程序。 对于这个容器,我们已经创build了一个networking,使用下面的命令与其他容器中的静态IP进行通信: docker network create –driver=bridge –subnet=172.18.0.0/16 apinet 之后我们用下面的命令创build了我们的api: docker run –net apinet –ip 172.18.0.10 -d -p 8080:8080 api 在api中,服务正在返回大量数据,45秒后我们得到504网关超时错误。 我们试图使用api而没有指定用户定义的networking,并且我们成功地收到了响应数据。 但是,我们需要这个用户定义的networking给api一个静态IP。 反正有延长用户定义networking的网关超时值吗? 提前致谢。

Docker容器中的cron任务没有被执行

我有这个Dockerfile (我正在使用miniconda只是因为我想安排一些python脚本,但它是一个debian:jessie docker镜像): FROM continuumio/miniconda:4.2.12 RUN mkdir -p /workspace WORKDIR /workspace ADD volume . RUN apt-get update RUN apt-get install -y cron ENTRYPOINT ["/bin/sh", "/workspace/conf/entrypoint.sh"] 保持容器活着的脚本entrypoint.sh是这样的: #!/usr/bin/env bash echo ">>> Configuring cron" service cron start touch /var/log/cron.log mv /workspace/conf/root /var/spool/cron/crontabs/root chmod +x /var/spool/cron/crontabs/root crontab /var/spool/cron/crontabs/root echo ">>> Done!" tail -f /var/log/cron.log 从有关supervisor的docker文档( https://docs.docker.com/engine/admin/using_supervisord/ )看起来这可能是一个选项以及bash脚本选项(就像我的例子),这就是为什么我决定去bash脚本并忽略主pipe。 而cron的细节/workspace/conf/root是这样的: […]