Tag: dockerfile

由于长时间运行的进程日志,Docker守护进程内存泄漏

我有以下设置: 在容器中运行Perl服务,并将注销写出到STDERR logspout将这些日志发送到远程服务器进行归档 在一个600 MB的RAM机器。 我也定期截断日志: /var/lib/docker/containers/CID/CID-json.log 正如这里所build议的,以避免100%的磁盘情况。 问题 Docker守护进程开始时内存使用率低,最初为1%,运行容器2天后缓慢增加到40%。 参考 在这个问题和这个问题上已经讨论了Docker守护进程的内存泄漏。 但是他们两人现在都被closures了,并表示合并在一个提交中。 我运行的是Docker的最新版本 (Docker版本1.4.0,版本4595d4f),但仍然面临单调增加的内存使用问题。 编辑:我做了这个实验:只要在容器中运行一个bash过程,打印出很多行给STDERR,docker守护进程的内存使用量加速非常快 docker是否做了一些日志缓冲 ,即使清除了底层日志文件(/var/lib/docker/containers/CID/CID-json.log),也不释放内存? 显然没有办法清除日志。 这将提交解决长期运行的任务这个问题? 我不知道为什么docker守护进程的内存使用量不断增加。 我如何debugging这个问题?

在docker构build之后加载Postgres转储

我有一个我想加载docker-compose的dump.sql文件。 泊坞窗,compose.yml: services: postgres: environment: POSTGRES_DB: my_db_name POSTGRES_USER: my_name POSTGRES_PASSWORD: my_password build: context: . dockerfile: ./devops/db/Dockerfile.db 我的Dockerfile.db目前非常简单: FROM postgres MAINTAINER me <me@me.me> COPY ./devops/db ./devops/db WORKDIR ./devops/db 我想在某个时候运行一个像psql my_db_name < dump.sql的命令。 如果我从Dockerfile.db运行这样的脚本,问题是脚本在构build之后但在docker构build之前运行,并且数据库尚未运行。 任何想法如何做到这一点?

不能访问我的Docker DotNet核心网站

我已经跑到死胡同了。 我有一个dotnet核心1.0.0应用程序,我试图启动和运行。 它从Linux和Windows的伟大作品。 现在我正试图把它放到docker。 我已经做了这个docker文件: FROM microsoft/dotnet:1.0.0-preview2-sdk COPY . /app WORKDIR /app/app RUN ["dotnet", "restore"] ENTRYPOINT ["dotnet", "run"] 它只是简单地将代码复制到Docker镜像中的应用程序文件夹中并恢复依赖关系,然后运行它。 当我尝试运行它时,它启动,因为一切正常,并打印相同,因为它是在Windows或Linux启动。 运行该项目的命令: docker run –name dotNetWeb -p 8080:8080 kiksen1987/dotnetcore 链接到代码: https : //github.com/kiksen1987/dotnetcore 链接到Docker镜像: https : //hub.docker.com/r/kiksen1987/dotnetcore/ 我真的不知道什么是错的。 我或多或less采取了与其他项目99%相同的方法。 任何反馈来改善这个问题将是不错的:)

Docker – 多个重复的卷声明; 怎么了?

我正在尝试为MySQL泊坞窗容器设置持久的数据卷。 我在Dockerfile中使用了官方的MySQL镜像: VOLUME / var / lib / mysql 如果我调用 -v / var / lib / mysql:/ var / lib / mysql 在运行期间,我的命令是否优先,还是必须从Dockerfile中删除VOLUME声明?

从私人git仓库build立一个Docker镜像

我无法从专用bitbucket存储库构builddocker镜像。 我的bitbucket回购在Docker文档中有一个“Dockerfile”的根。 docker工人 – 版本 Docker version 1.3.1, build 4e9bbfa 我努力了… docker build –rm=true –tag="myorg/myimagename" git://bitbucket.org:myacct/myrepo.git 错误:致命:无法连接到bitbucket.org:bitbucket.org:服务名称不支持ai_socktype docker build –rm=true –tag="myorg/myimagename" git://git@bitbucket.org:myacct/myrepo.git 错误:致命:无法连接到bitbucket.org:bitbucket.org:服务名称不支持ai_socktype 我正在关注的文件… 我假设我的主机的密钥将被使用。 将Git存储库设置为URL时,将使用该存储库作为上下文。 Git仓库克隆了它的子模块(git clone -recursive)。 新的git克隆发生在本地主机的临时目录中,然后作为上下文发送到Docker守护进程。 这样,您的本地用户凭据和VPN等可以用来访问私人存储库。 https://docs.docker.com/reference/commandline/cli/#build 我也假设docker将拾取库中的Dockerfile&上下文。 这将克隆GitHub存储库并使用克隆的存储库作为上下文。 存储库根目录下的Dockerfile用作Dockerfile。 请注意,您可以使用git://模式来指定任意的Git存储库。 https://docs.docker.com/reference/commandline/cli/#examples_1 我已经… 在bitbucket和我的主机之间正确设置我的ssh密钥 在主机上通过ssh成功克隆了专用的bitbucket repo

Dockerfile:如何用build-arg的replace环境variables中的占位符?

我有一个Web应用程序,我想运行在Docker上进行testing。 应用程序使用数据库作为存储,数据库的configuration保存在环境variables(JSON)中。 下面你可以看到我的Dockerfile中的envvariables定义(另请参见我的方法) ENV CONFIG '{ \ "credentials":{ \ "hostname": "172.17.0.5", \ "password": "PWD", \ "port": "1234", \ "username": "${USER}" \ }, \ "name":"database", \ "tags":[] \ }, \ … 如果我硬编码数据库的所有参数一切正常,但我不想只改变我的Dockerfile,因为数据库的IP地址已经改变。 因此我想使用Docker构build参数。 我已经尝试了两种方法: 直接引用variables(见“$ {USER}”一行) 使用以下命令replace“PWD”的占位符RUN CONFIG=$(echo $CONFIG | sed 's/PWD/'$db_pwd'/g') 第一种方法不会导致replace,因此$ {USER}是$ {USER}。 第二种方法似乎工作(至less在terminal),但似乎variables分配不起作用。 你有什么想法我可以做这个工作? 随意build议其他方法。 我只是不想在我的Dockerfile中有硬编码参数。 谢谢!

Docker只有在发生变化时才能运行pip requirements.txt。

在Dockerfile中,我有一个安装requirements.txt的图层: FROM python:2.7 RUN pip install -r requirements.txt 当我构builddocker镜像时,它将运行整个过程, 而不pipe对此文件所做的任何更改。 如何确保Docker只运行pip install -r requirements.txt如果文件发生了变化? Removing intermediate container f98c845d0f05 Step 3 : RUN pip install -r requirements.txt —> Running in 8ceb63abaef6 Collecting https://github.com/tomchristie/django-rest-framework/archive/master.zip (from -r requirements.txt (line 30)) Downloading https://github.com/tomchristie/django-rest-framework/archive/master.zip Collecting Django==1.8.7 (from -r requirements.txt (line 1))

使用docker-compose构build容器,但稍后使用-it选项运行/ etc / bash?

我正在使用docker-compose进行开发 。 在这个过程中,我经常需要build造5个容器(1个用于web服务器,4个用于postgres,redis,mongo等)。 Web服务器容器configuration为包含其他容器的链接,它具有自己的ENVvariables,来自开发主机的已安装卷。 问题是我不需要Web容器来运行服务器本身。 为此,我需要执行/etc/bash与所有依赖的容器创build后,在Web容器内的选项。 那就是为什么,我的web容器的dockerfile结束于: CMD /bin/true 很明显,这样的容器不会运行,所以我不能使用水手 docker exec -it <CONTAINER ID> /bin/bash 以“input”它并运行node app.js或一些其他任务。 任何方式来构build容器作为docker-compose.yml文件的一部分,但后来用-it选项运行/ etc / bash? 顺便说一句,当然,我可以手动启动一个单独的Web容器 docker run \ –link postgres –link … -e "NODE_ENV=development" \ -e … \ … … .. 但是在这种情况下,我需要在每次打算开发应用程序时将所有链接,env vars,卷等附加为附件。

Docker:RUN touch不会创build文件

在尝试debuggingDockerfile中的RUN语句时,我试图将输出redirect到绑定卷( ./mongo/log )中的文件。 令我惊讶的是,我无法通过RUN命令创build文件,或者使用redirect/附加( > , >> )操作符将另一个命令的输出传送到文件。 然而,我可以通过docker exec -ti mycontainer /bin/shlogin正在运行的容器并从那里发出命令来执行上述任务。 为什么会发生这种行为? 如何将Dockerfile / redirect输出中的文件与文件或运行Dockerfile的控制台联系起来? 这是我的Dockerfile: FROM mongo:3.4 #Installing NodeJS RUN apt-get update && \ apt-get install -y curl && \ curl -sL https://deb.nodesource.com/setup_6.x | bash – && \ apt-get install -y nodejs #Setting Up Mongo WORKDIR /var/www/smq COPY ./mongo-setup.js mongo-setup.js ##for testing […]

泊坞窗。 Spring应用程序。 设置和获取环境variables

我试图dockerize我的Spring应用程序。 问题:我无法从Docker容器中获取Spring应用程序中的环境variables。 Springconfiguration(2个选项,单独尝试) <bean class="java.net.URI" id="dbUrl"> <constructor-arg value="#{systemProperties['JDBC_CONNECTION_STRING']}"/> </bean> <bean class="java.net.URI" id="dbUrl"> <constructor-arg value="#{systemEnvironment['JDBC_CONNECTION_STRING']}"/> </bean> 也尝试在Java中 URI dbUrl = URI.create(System.getProperty("JDBC_CONNECTION_STRING")); 我的dockerconfiguration。 使用docker-compose build和docker-compose up docker-compose build每次更新值。 泊坞窗,compose.yml app: build: . command: catalina.sh run ports: – "8888:8080" links: – postgres volumes: – /usr/bin postgres: image: postgres:9.5 ports: – "5432" volumes: – /var/lib/postgresql/data Dockerfile FROM tomcat:jre8 ENV […]