首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >docker不能运行两个容器

docker不能运行两个容器
EN

Stack Overflow用户
提问于 2016-09-14 11:30:16
回答 1查看 1.3K关注 0票数 3

这是我的设计:

两个不同的坞映像,一个用于开发,另一个用于测试。以及利用这些图像的两个不同的停靠文件。

码头图像

代码语言:javascript
复制
lukas@E7450:~$ docker images
cbs/compare-dev   webapp  79ace960ede7  About an hour ago   852.8 MB
cbs/compare-test  webapp  10da03e3922b  About an hour ago   846.2 MB

composer-development.yml

代码语言:javascript
复制
version: '2'

services:

  redis:
    restart: always
    image: redis
    container_name: compare_dev_redis
    links:
      - webapp
    volumes:
      - /home/data/compare/development/database/redis:/data
    volumes_from:
      - webapp
    command: redis-server /srv/www/compare/htdocs/config/services/compare.redis.conf

  varnish:
    restart: always
    image: ldynia/varnish
    container_name: compare_dev_varnish
    links:
      - webapp
    volumes:
      - ./scripts/startup_varnish.sh:/etc/varnish/startup_varnish.sh
    volumes_from:
      - webapp
    environment:
      CACHE_SIZE: 256m
      VCL_PORT: 8080
      VCL_CONFIG: /srv/www/compare/htdocs/config/services/compare.varnish.development.vcl
    command: bash startup_varnish.sh

  database:
    restart: always
    image: postgres:9.5.3
    container_name: compare_dev_postgres
    environment:
      ENVIRONMENT: developement
      POSTGRES_DB: compare_development
      POSTGRES_USER: developer
      POSTGRES_PASSWORD: developer
    volumes:
      - /home/data/compare/development/database/postgres:/var/lib/postgresql/data

  webapp:
    restart: always
    depends_on:
      - database
    image: cbs/compare-dev:webapp
    container_name: compare_dev_webapp
    build: docker/development
    ports:
      - "22:22"
      - "80:80"
      - "443:443"
      - "8080:8080"
    volumes:
      - .:/srv/www/compare/htdocs
      - ./storage:/srv/www/compare/htdocs/storage
    environment:
      HTTP_PORT: 80
      HOST: compare.dev
    command: bash scripts/startup_app.sh

composer-testing.yml

代码语言:javascript
复制
version: '2'

services:

  redis:
    image: redis
    container_name: compare_test_redis
    links:
      - webapp
    volumes:
      - /home/data/compare/testing/database/redis:/data
    volumes_from:
      - webapp
    command: redis-server /srv/www/compare/htdocs/config/services/compare.redis.conf

  varnish:
    image: ldynia/varnish
    container_name: compare_test_varnish
    links:
      - webapp
    volumes:
      - ./scripts/startup_varnish.sh:/etc/varnish/startup_varnish.sh
    volumes_from:
      - webapp
    environment:
      CACHE_SIZE: 256m
      VCL_PORT: 9090
      VCL_CONFIG: /srv/www/compare/htdocs/config/services/compare.varnish.production.vcl
    command: bash startup_varnish.sh

  database:
    image: postgres:9.5.3
    container_name: compare_test_postgres
    environment:
      ENVIRONMENT: production
      POSTGRES_DB: compare_testing
      #POSTGRES_USER: !!! CHANGE ME !!!
      #POSTGRES_PASSWORD: !!! CHANGE ME !!!
    volumes:
      - /home/data/compare/testing/database/postgres:/var/lib/postgresql/data

  webapp:
    depends_on:
      - database
    image: cbs/compare-test:webapp
    container_name: compare_test_webapp
    build: docker/testing
    ports:
      - "555:443"
      - "9000:80"
    volumes:
      - .:/srv/www/compare/htdocs
      - ./storage:/srv/www/compare/htdocs/storage
      - /etc/ssl/private/servercerts:/etc/ssl/private/servercerts
    environment:
      HTTP_PORT: 555
      HOST: compare.cbs.dtu.dk
    command: bash scripts/startup_app.sh

当我当时处理单个组合文件时,一切都很好。

示例:

只运行开发容器。

代码语言:javascript
复制
lukas@E7450:~$ docker-compose -f composer-development.yml up -d
lukas@E7450:~$ docker ps
CONTAINER ID        IMAGE                    COMMAND                  CREATED             STATUS              PORTS                                                                                  NAMES
cb3840ae6e8d        ldynia/varnish           "bash startup_varnish"   40 seconds ago      Up 40 seconds                                                                                              compare_dev_varnish
980a90cf8177        redis                    "docker-entrypoint.sh"   42 seconds ago      Up 42 seconds       6379/tcp                                                                               compare_dev_redis
8c4ed8c08705        cbs/compare-dev:webapp   "bash scripts/startup"   45 seconds ago      Up 44 seconds       0.0.0.0:22->22/tcp, 0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 0.0.0.0:8080->8080/tcp   compare_dev_webapp
9e7fca1a63ce        postgres:9.5.3           "/docker-entrypoint.s"   11 seconds ago      Up 11 seconds       5432/tcp                                                                               compare_dev_postgres

只运行测试容器。

代码语言:javascript
复制
lukas@E7450:~$ docker-compose -f composer-testing.yml up -d
lukas@E7450:~$ docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                        NAMES
8df766e350d4        redis                     "docker-entrypoint.sh"   11 seconds ago      Up 9 seconds        6379/tcp                                     compare_test_redis
0174348650e7        ldynia/varnish            "bash startup_varnish"   11 seconds ago      Up 10 seconds                                                    compare_test_varnish
17c6838d378c        cbs/compare-test:webapp   "bash scripts/startup"   11 seconds ago      Up 10 seconds       0.0.0.0:9000->80/tcp, 0.0.0.0:555->443/tcp   compare_test_webapp
9f78d61a19f8        postgres:9.5.3            "/docker-entrypoint.s"   11 seconds ago      Up 11 seconds       5432/tcp                                     compare_test_postgres

问题:

当我试图同时运行两个容器时,问题就开始了。也就是说,开发容器已经由docker -f composer-Development.ymlup -d触发。现在,我开始我的测试,容器码头-编写-f作曲家-测试。start -d,这就是所发生的事情。

代码语言:javascript
复制
lukas@E7450: docker-compose -f composer-testing.yml up
Recreating compare_dev_postgres
Recreating compare_dev_webapp
Recreating compare_dev_redis
Recreating compare_dev_varnish
Attaching to compare_test_postgres, compare_test_webapp, compare_test_varnish, compare_test_redis

不知何故,码头-组合决定重新创建和停止developement容器-leaving me只与测试容器。我所期望的是,有两个容器同时运行(开发和测试容器),而我所拥有的只是测试容器!

代码语言:javascript
复制
ludd@E7450:~$ docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS              PORTS                                        NAMES
f66b54032ca2        ldynia/varnish            "bash startup_varnish"   8 minutes ago       Up 2 minutes                                                     compare_test_varnish
83626ac27c32        redis                     "docker-entrypoint.sh"   8 minutes ago       Up 2 minutes        6379/tcp                                     compare_test_redis
97ad2f330272        cbs/compare-test:webapp   "bash scripts/startup"   8 minutes ago       Up 2 minutes        0.0.0.0:9000->80/tcp, 0.0.0.0:555->443/tcp   compare_test_webapp
4f174819744d        postgres:9.5.3            "/docker-entrypoint.s"   8 minutes ago       Up 2 minutes        5432/tcp                                     compare_test_postgres

问题:

为什么我不能同时运行这两个容器?为什么启动测试容器会停止开发容器?如何并行运行这两个容器?

EN

回答 1

Stack Overflow用户

发布于 2016-09-14 11:35:43

您可以,因为您是从同一个目录运行的,所以compose只是将其视为相同的项目,而不定义项目。因此,它使当前的项目看起来像您最后给它的撰写文件。

要并行地运行两者,请运行它们,如下所示:

代码语言:javascript
复制
docker-compose -f composer-development.yml -p dev up -d

docker-compose -f composer-testing.yml -p test up -d
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39489327

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档