Docker Compose - Запуск уже созданных контейнеров - PullRequest
0 голосов
/ 19 июня 2020

Я новичок в Docker и пытаюсь запустить тесты Selenium Grid на Docker. Для этой цели я создал файл docker compose и выполнил команду ниже

docker-compose -f docker-compose.yaml up

Все работало нормально, но через несколько часов я перезапустил хост-машину и снова выполнил указанную выше команду. На этот раз я получаю ошибку ниже

ERROR: for selenium-hub  Cannot create container for service selenium-hub: Conflict. The container name "/selenium-hub" is already in use by container "some-hash". You have to remove (or rename) that container to be able to reuse that name.

Я пробовал docker-compose -f docker-compose.yaml run selenium-hub, но эта команда не запускает узлы селена. Итак, мои вопросы:

  • Нужно ли мне удалять контейнер каждый раз перед повторным запуском docker compose?
  • Есть ли способ использовать docker -compose как файл, так что
    каждый раз, когда я перезапускаю docker, я могу просто запускать файл, чтобы запускать все контейнеры вместе?

Под Docker -Compose Я использовал

version: "3"
services:
  selenium-hub:
    image: selenium/hub:3.141.59-20200525
    container_name: selenium-hub
    ports:
      - "4444:4444"

  chrome:
    image: selenium/node-chrome:3.141.59-20200525
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

  firefox:
    image: selenium/node-firefox:3.141.59-20200525
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

  opera:
    image: selenium/node-opera:3.141.59-20200525
    volumes:
      - /dev/shm:/dev/shm
    depends_on:
      - selenium-hub
    environment:
      - HUB_HOST=selenium-hub
      - HUB_PORT=4444

Ответы [ 2 ]

0 голосов
/ 19 июня 2020

Просто используйте команду docker-compose up, чтобы запустить уже созданные контейнеры.

0 голосов
/ 19 июня 2020

Существуют возможные способы

  1. docker system prune очистить кеш и удалить зависший промежуточный контейнер, а также удалить неактивные контейнеры с именами. Эту команду необходимо использовать осторожно.
  2. docker container prune удалит только мертвые / стоп-контейнеры и освободит имена
  3. docker rm -v $(docker ps -aq -f 'status=exited')
  4. docker rmi $(docker images -aq -f 'dangling=true')
  5. docker-compose rm --force удаляет одноразовые контейнеры, созданные docker -compose up или docker -compose run
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...