Docker Compose - 启动已创建的容器

3

我是Docker的新手,尝试在Docker上运行Selenium Grid测试。为此,我创建了一个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命令,但是这个命令并没有启动selenium节点。所以我的问题是-

  • 我需要在每次运行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个回答

3
有几种可能的方法:
  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 创建的一次性容器。

-1

只需使用docker-compose up命令启动已创建的容器即可。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接