Tag: compose

Docker容器中的多个公共ip地址用于传出连接

希望你能帮我解决我不常见的任务,谢谢你的时间! =) 这是我需要克服的条件: 服务器有1000多个公共IP地址(显然是ipv6 )。 每个docker集装箱必须有1个input地址(它很简单,可以是ipv4 ),250个地址用于输出连接。 重点是每个连接到野外的连接必须从特定的公共src ip地址发起。 基本上每个容器的工作方式就像代理服务器一样多地址。 任何想法如何优雅地与Docker实现? 想从默认的172.17.0.0子网添加250ips到docker,并用iptables绑定到公共地址,看起来很难支持,而且对我来说不稳定。 docker工人有一些function可以帮助我做到这一点更简单吗?

更新Docker容器的Ruby bin文件夹的正确方法是什么?

我一直在转换一个现有的Ruby on Rails应用程序在docker容器中开发。 我不明白在哪里最好把rake rails:update:bin命令。 我试图把它作为docker文件的最后一行,但容器将无法正常启动。 我可以让容器启动的唯一方法是在图像构build之外构buildbin,以便使用ADD命令来拉取bin文件夹。 是否有可能创build一个dockerfile来完成所有的事情? Docker文件看起来像这样 FROM ruby:2.2 RUN apt-get update && apt-get install -y \ build-essential \ libpq-dev \ nodejs RUN mkdir /MyApp WORKDIR /MyApp ADD Gemfile /MyApp/Gemfile ADD Gemfile.lock /MyApp/Gemfile.lock RUN bundle install ADD . /MyApp 我想添加下面一行到最后。 RUN rake rails:update:bin 当我尝试包括rake命令时,我正在重buildMyApp文件夹中没有bin文件夹的图像。 当我离开rake命令时,我正在用bin文件夹重build图像。 而且我知道我真的重build图像,因为我重build它们之前删除caching的版本。

Docker组合和并发集成testing

编辑:对不起,我错了这个问题的第一部分。 所以我有一个docker-compose.yaml在同步运行时工作正常: server: build: . dockerfile: "./docker/integration_tests/server/Dockerfile" links: – mongo environment: – "MONGO_URI=mongodb://mongo:27017/company" mongo: image: 'mongo:3.2.6' ports: – "27017" 当用这个命令启动时: docker-compose build && docker-compose up –abort-on-container-exit 然而,当我启动两三个工作来testing它是否并行工作(这是jenkins使用pipe道,所以他们有不同的目录)我看到这个工作A: Successfully built 7b23b3a7b823 + docker-compose up –abort-on-container-exit Creating companyservercicd3_mongo_1 ERROR: for mongo Cannot start service mongo: driver failed programming external connectivity on endpoint companyservercicd3_mongo_1 (422826f73ce76526e4072f72a2b44467f9080e79a24d37d1fe2bba903854a698): Bind for 0.0.0.0:27017 […]

Logstash泊坞窗镜像中的系统日志驱动程序造成端口“超时”错误

我无法通过docker-compose 1.5.2可靠地启动ELK堆栈。 我得到这个错误: 无法启动容器8b1603:无法初始化日志logging驱动程序:拨号tcp 127.0.0.1:9290:连接超时 我通过用作docker-compose的input的yml文件尝试了logstash docker镜像版本2.3,2.4,5.0和“latest”。 但是当我做“docker-compose up”来启动ELK堆栈时,我总是会遇到下面提到的错误。 我使用“syslog”作为驱动程序将日志提取到Logstash中。 我通过下面的语法来为我的“依赖”其他docker容器: log_driver: syslog syslog-address: "tcp://<docker's host's IP address>:9290 在yml文件中。 还有其他依赖于此端口的“依赖”服务,即使Logstash“已准备就绪”,这些服务也无法访问端口9290。 错误是: 无法启动容器:无法初始化日志logging驱动程序:拨号TCP 127.0.0.1:9290:连接超时 请注意,我已经推迟了几分钟 ,开始使用端口9290的“依赖”容器。但是我仍然有时会得到上面的错误。 Logstash镜像启动时间或系统日志驱动启动时间有什么问题?

Gitlabpipe道阶段需要几个小时或几天来显示结果(通过,失败) – docker,节点的应用程序

我正在使用Gitlab持续集成(.gitlab-ci.yml)和docker,docker-compose来构build,testing和部署我的节点应用程序,但构build和testing需要花费很多时间在gitlabpipe道上完成(在我的本地docker应用程序build立和testing运行顺利),我认为这不是正常的gitlab ci行为,我想我错过了一些东西,或者我使用错误的configuration 请检查下面的configuration(.gitlab-ci.yml)和底部的pipe道截图 .gitlab-ci.yml # GitLab CI Docker Image image: node:6.10.0 # Build – Build necessary JS files # Test – Run tests # Deploy – Deploy application to ElasticBeanstalk stages: – build – test – deploy # Configuration variables: POSTGRES_DB: f_ci POSTGRES_USER: f_user POSTGRES_PASSWORD: sucof services: – postgres:latest cache: paths: – node_modules/ # Job: […]

在启动时使用静态数据进行Docker集成testing

我一直在这个问题上挣扎了一会儿。 我想用一组特定的数据做一个性能testing。 为了实现这一点,我使用Docker-compose,并导出了几个.sql文件。 当我第一次使用docker-compose build和docker-compose up构build并运行容器时, docker-compose up数据集是好的。 然后我运行我的testing(也插入)数据。 运行我的testing后,我想再次执行它,所以我重新启动容器使用docker-compose up 。 但这一次,由于某种原因,我不明白,上次插入的数据(通过我的testing)仍然存在。 我现在得到不同的行为。 目前我有以下Dockerfile: FROM mysql:5.7 ENV MYSQL_DATABASE dev_munisense1\ MYSQL_ROOT_PASSWORD pass EXPOSE 3306 ADD docker/data/ /docker-entrypoint-initdb.d/ 因为我读过mysql Docker镜像运行/docker-entrypoint-initdb.d/所有/docker-entrypoint-initdb.d/ 。 第一次正常工作。 我也尝试了这些post的build议: 如何在Docker容器中迁移mysql数据目录? http://txt.fliglio.com/2013/11/creating-a-mysql-docker-container/ 如何在构build时创build已填充的MySQL Docker镜像 如何使用填充数据库进行自动化testing的docker图像? 和几个相同的其他职位。 他们目前似乎没有工作。 每次启动容器时,如何确保数据集完全相同? 而不必每次重build图像(这需要很长的时间,因为一个大的数据集)。 提前致谢 编辑: 我也试着用不同的参数来运行容器,比如: docker-compose up –force-recreate –build mysql但是这没有成功。 容器重build并重新启动,但数据库仍受我的testing影响。 目前解决我的问题的唯一办法是删除整个容器和图像。

Docker-compose:启动项目时遇到错误

我有错误消息: ERROR: for webapi No such image: sha256:58e2b174484ca40a99ec559bcf6421811d4532cbe009f89d08d430eae9f27050 ERROR: Encountered errors while bringing up the project. 在Docker快速入门terminal中运行命令之后: docker-compose build docker-compose up -d 它看起来像我的形象的一些问题,但我找不到我应该find它的地方。 这是build立正常,这是抛出exception,而运行我的形象。 我的docker-compose.yml: version: '2' services: webapi: image: clientpanel build: context: ./src/WebApi dockerfile: Dockerfile links: – mongodb – rabbit ports: – "9183:9183" mongodb: image: mongo ports: – "27017:27017" rabbit: container_name: dev_rabbit hostname: localhost […]

Docker-Compose:如何将卷从主机映射到容器?

问题: 我想通过使用docker-compose的特定容器从docker主机共享一个文件夹。 运行MongoDB的容器应将其数据文件放置在/ var / lib / mongodb中,但是该文件夹应该挂载到hosts文件夹/ var / lib / mongodb。 但是它仍然是容器中的一个本地目录,而不是主机的共享目录。 有时也会以下面的警告结束: 警告:服务“mongodb”使用前一个容器中的“/ var / lib / mongodb”卷。 主机映射“name_dbvolume”不起作用。 删除现有容器(使用docker-compose rm mongodb )以使用主机卷映射。 泊坞窗,compose.yml version: '2' services: loopback: build: . expose: – "80" – "443" – "28015" – "29015" ports: – 3000:3000 links: – mongodb environment: VIRTUAL_HOST: api.xxxxxx.com VIRTUAL_PORT: 3000 LETSENCRYPT_EMAIL: yyyyyy@xxxxxxx.com […]

如何设置docker elasticsearch与节点?

这里是我的docker-composer.yml文件: db: image: mongo ports: – "27017:27017" restart: always elasticsearch1: image: docker.elastic.co/elasticsearch/elasticsearch:5.3.0 container_name: elasticsearch1 environment: – cluster.name=docker-cluster – bootstrap.memory_lock=true – "ES_JAVA_OPTS=-Xms512m -Xmx512m" ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 mem_limit: 1g cap_add: – IPC_LOCK volumes: – esdata1:/usr/share/elasticsearch/data ports: – 9200:9200 web: build: . volumes: – ./:/usr/src/app ports: – "3000:3000" links: – […]

当使用PhpStorm运行时,stream_socket_client容器之间的超时

我有stream_socket_client()函数的问题,但只在某些情况下。 我使用docker-compose来构build包含nginx,php-fpm(7.1.3)和schickling / mailcatcher(以及其他一些不重要的容器)的环境。 我的问题涉及到SwiftMailer,但我已经将问题隔离到以下代码: // /var/www/web/app_dev.php $streamContext = stream_context_create(); $timeout = 5; $_stream = stream_socket_client('172.21.0.106:1025', $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, $streamContext); var_dump($_stream); 172.21.0.106:1025是正确的,并为Mailcatcher的静态 IP:端口。 现在,如果我通过浏览器请求这个文件,我得到: /var/www/web/app_dev.php:8:resource(4,stream) 哪个是对的。 当我做docker exec php_container /var/www/web/app_dev.php ,我得到: /var/www/web/app_dev.php:9:types(stream)的资源(20) 这也是正确的。 但是当我使用configuration的Docker远程解释器(通常工作正常)通过PhpStorm(选项“运行>运行…”)运行此脚本时,我得到输出: docker:// php_container:latest / php /var/www/web/app_dev.php 警告:stream_socket_client():无法连接到第5行/var/www/web/app_dev.php中的172.21.0.106:1025(连接超时) 调用堆栈:0.0001 349080 1. {main}()/var/www/web/app_dev.php:0 0.0032 360960 2. stream_socket_client()/var/www/web/app_dev.php:5 进程使用退出码0结束 我做了一些testing,看起来像尝试使用任何其他容器的主机端口时存在的问题,但它使用Dockernetworking之外的任何东西时工作。 例如,使用'172.21.0.103:3306'容器)的问题仍然存在,但与'google.com:80' ,它也可以通过PhpStorm运行function。 docker-compose.yml的重要部分: services: […]