Tag: docker compose

使用sudo运行docker-compose时,在docker-compose.yml文件中进行variablesreplace

我目前正在尝试在docker-compse.yml文件中使用variablesreplace。 该文件包含以下内容: jenkins: image: "jenkins:${JENKINS_VERSION}" external_links: – mongodb:mongo ports: – 8000:8080 下面的图片展示了当我尝试开始一切时发生的事情。 正如你所看到的,docker-compose显示一个警告,说这个variables没有设置。 我怀疑这是由于使用sudo启动docker-compose造成的。 我的设置(一个Jenkinsdocker集装箱可以访问docker和docker – 通过卷挂载组成)目前需要使用sudo。 停止需要sudo的docker会更好吗,还是有另一种方法可以解决这个问题,而不需要改变当前的设置?

如何使用Docker Compose在多个节点的Swarm集群上重新创build容器?

当我在Swarm集群中只有一个节点时,遇到了这个问题,当我尝试在这个节点上重新创build我的Web应用程序容器时(我想部署一个正在侦听端口80的Node.JS Web应用程序的新版本) 问题是Swarm首先停止旧的容器,但并没有将其移除 ,然后尝试创build新的容器,由于Swarm也跟踪停止的容器的端口约束,它认为在我的节点端口80上仍在使用中(被停止的容器): Recreating 41910b0283eb_41910b0283eb_41910b0283eb_vagrant_web_1 ERROR: unable to find a node with port 80 available 这个问题可能有两种解决scheme: 在每次部署之前,我可以执行docker-compose stop和docker-compose rm ,它会停止并删除每个正在运行的容器 – 这也将释放Swarm的端口80。 另一个解决scheme是有多个节点并放松。 当compose重新创build容器时,Swarm会自动find一个没有人使用端口80的随机节点,并在另一个节点上启动新的容器。 我可以使用解决scheme1,但我想知道如何让它工作,当我有多个节点。 我的问题与2方法是通常一个Web应用程序需要有一个修复IP我可以用于域名注册。 如果Swarm将我的Web应用程序部署到随机select的节点,那么我该如何解决这个问题? 我可以使用循环法DNS,但我不知道是否会有所帮助,因为在这种情况下,如果我的群集中有3个节点,我需要在每个节点上都有一个我的Web应用程序实例。 但是,如果是这样的话,我不会遇到同样的问题? Swarm会认为有人还在使用端口80,所以它不会find任何有80端口可用的节点。 如何解决这个问题?

防止Docker撰写创build单独的networking

我发现,使用版本2的YAML语法时, Docker Compose会将容器放在单独的networking中。 这使得与现有容器的链接困难。 有没有办法来防止这种情况,并恢复到版本1的行为,而没有实际回复?

如何在“docker run”命令中replacevariables值

我正在使用一个bash脚本,并试图分配一个指纹值如下 export FINGERPRINT=D0:19:C5:80:42:66:56:AC:6F docker run –rm -i -v /var/run/docker.sock:/var/run/docker.sock –name ucp docker/ucp join –replica –fingerprint $FINGERPRINT 然而,bash根本不能代替$ FINGERPRINT的价值

是否有可能使用Docker Compose从正在运行的Docker容器中启动新的Docker容器?

我有一个在Docker容器中运行的Node.js应用程序。 我需要从Node.js应用程序(通过代码;例如child_process.spawn() )启动一个新的容器,其唯一目的是运行Python脚本。 我还需要传递一个参数(数据库loggingID)到这个Python脚本。 所以命令是: python main.py 56fb661b7e51f80736d48113 请注意,我不希望此容器在当前容器中运行,而是要成为一个单独的容器。 我知道像Swarm或Kubernates这样的编排框架会更适合这个任务,但是我已经要求在我的开发环境中在本地机器上使用Docker Compose,然后我们将在生产环境中使用Kubernates。 是否有可能使用Docker Compose从正在运行的Docker容器中启动一个新的Docker容器(只是一个容器,而不是一个全新的机器/虚拟机),如果是这样的话,我该怎么做呢?

如何给Docker容器更多的资源

我正在使用docker创build我的本地开发环境来开发Magento模块。 在大多数操作中,Magento非常缓慢,而且我注意到每个内核(我的机器都有8个内核),CPU使用率不会高于20%。 有什么设置,我可以改变给docker集装箱更多的CPU资源方面的资源?

如何和在哪里的官方docker形象的PostgreSQL坚持其数据库

我是新来的docker工人,有点困惑,因为我期待着我的PostgreSQLdocker容器不能够保存任何数据,但是当我停止它时,我把它旋转回来,我的数据库数据似乎仍然在那里。 我一直在寻找现有的答案,并发现堆栈交换以下内容: (对不起,我没有代表超过2个链接) Docker的postgres持久性和容器的生命周期 如何在Docker Postgres的脚本中创build用户/数据库 如何处理docker中的永久性存储(例如数据库) 但我还是不明白。 也许有人可以为我更明显地拼出来! 这就是我所做的: (我使用的docker撰写和构build文件显示在这篇文章的底部) 我遵循Docker文档站点的教程: 快速入门:Docker Compose和Django 这一切都工作完美,所以我继续按照Django的应用程序教程: 编写你的第一个Django应用程序 再次,所有的好,所以我在我的新网站上玩了一下,导致数据库填充一些数据。 我可以看到我的示例Django应用程序的Web应用程序代码是如何在我的主机上安装在卷上的,并且也复制到了我再次运行docker-compose时生成的映像, 但是我期望在postgres中存储任何数据数据库容器在停止所有容器后将丢失。 但是,在停止所有运行的容器之后,我回到docker项目目录并运行: docker-compose up 这一切都直接回来了,我以前的图像运行的数据仍然在数据库中,并在我的Djangonetworking应用程序中使用。 发生什么了? 数据库在哪里存储数据? 主机上的某个地方? 我怎么知道那是哪里? postgres容器如何pipe理在单独运行中持久化数据? 构build文件的哪一部分使这种情况发生? 或者这是官方postgres图像默认行为? 以下是我在上面引用的docker quickstart教程指导下使用的构build文件。 Dockerfile FROM python:2.7 ENV PYTHONUNBUFFERED 1 RUN mkdir /code WORKDIR /code ADD requirements.txt /code/ RUN pip install -r requirements.txt ADD . /code/ requirements.txt […]

在Docker-compose中开始多个服务

我有一个相当简单的架构。 一个前端从互联网上收听; 它将消息放在消息中介上; 该消息被后端消耗。 我有一个docker-compose文件的前端和消息代理,一个消息代理和后端,这两个工作得很好。 不过,我需要一个完整的docker服务器,将所有这3个服务组合在一起。 主要的问题是前端和后端需要开始使用make。 作为前端的一个例子: frontend: build: . command: make serve depends_on: – message_broker message_broker: image: message/broker 后端几乎是一样的。 现在我试图把两者联系在一起: frontend: build: frontend command: make serve depends_on: – message_broker backend: build: backend command: make serve depends_on: – message_broker – frontend message_broker: image: message/broker 但是,当我试图运行它与docker-compose up我得到make: *** No rule to make target 'serve'. Stop. […]

在AWS上使用Docker扩展两层MEAN应用程序

所以我现在的设置是一个Node.js应用程序,它提供了一个Angular前端,另外一个Node.js应用程序,它具有Express和API,以及一个MongoDB实例。 简单地说,客户端应用程序与后端应用程序进行对话,后端应用程序与MongoDB进行对话。 我正在研究如何Dockerize这些应用程序,它似乎像一些例子使用链接。 所以我的问题是链接只能在同一个主机上工作(意味着AWS上的一个EC2实例)还是多个EC2实例? 如果只有前者,如果我同时拥有应用程序和Mongo集装箱,我该如何扩展? 就像如果我旋转了第二个EC2实例一样,我会在第二个实例中再次将容器化的Node应用程序和Mongo放在一起吗? 在Node应用程序的同一个实例上有一个Mongo容器单点故障? 那容错怎么样? 只是试图把我的头围绕在这,并为我对这个问题的无知道歉。 谢谢!

Docker使用NodeJS应用程序组合卷映射

我正在努力实现一些令人难以置信的基本的东西,但是现在已经进行了几个晚上,并且还没有find一个坚实的(或任何)解决scheme。 我在SO上发现了一些类似的主题,并且遵循了那里的内容,但无济于事,所以我为我的具体情况创build了一个GitHub回购。 我在做什么: 能够使用docker-compose up -d来configurationNodeJS应用程序(我计划在将来添加更多的容器,在本例中省略) 确保代码是通过volumes来映射的,所以我不必每次在本地对某些代码进行更改时重新构build代码。 我的猜测是我遇到的问题是与volumes的映射造成一些文件丢失/容器内覆盖,例如在一些变化我试过文件夹被映射,但个别文件是不。 我已经创build了一个简单的回购来说明我的问题,只是结帐,并运行docker-compose up -d来查看问题,容器因以下原因死亡: Error: Cannot find module '/src/app/app.js' 回购的链接在这里: https : //github.com/josephmcdermott/nodejs-docker-issue,PR的欢迎,如果有人能解决这个问题,我会永远感激。 更新:请参阅下面的解决scheme代码,亲切感谢ldg Dockerfile FROM node:4.4.7 RUN mkdir -p /src COPY . /src WORKDIR /src RUN npm install EXPOSE 3000 CMD ["node", "/src/app.js"] 泊坞窗,compose.yml app: build: . volumes: – ./app:/src/app 文件夹结构: – app – – * (files […]