容器名称已被容器使用 - gitlab ci

时间:2017-07-21 09:54:17

标签: docker docker-compose gitlab gitlab-ci gitlab-ci-runner

我在" test_image"期间收到以下错误在我的gitlab CI管道中对docker镜像运行测试时的步骤。我不能在本地重现它,它只发生在gitlab转轮盒上。有什么想法吗?

  

容器名称" / common_run_1"容器已经在使用

image: docker:latest

stages:
  - build
  - test
  - release

before_script:
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN myregistry.gitlab

build_image:
  stage: build
  script:
    - docker build --pull -t $CONTAINER_TEST_IMAGE .
    - docker-compose up -d --build
    - docker push $CONTAINER_TEST_IMAGE

pylint:
  stage: test
  script:
    - docker pull $CONTAINER_TEST_IMAGE
    - docker-compose run common pylint common

test_image:
  stage: test
  script:
    - docker pull $CONTAINER_TEST_IMAGE
    - docker-compose run common nosetests common

push_master_image:
  stage: release
  script:
    - docker pull $CONTAINER_TEST_IMAGE
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_MASTER_IMAGE
    - docker push $CONTAINER_MASTER_IMAGE
  only:
    - master

push_prod_image:
  stage: release
  script:
    - docker pull $CONTAINER_TEST_IMAGE
    - docker tag $CONTAINER_TEST_IMAGE $CONTAINER_PROD_IMAGE
    - docker push $CONTAINER_PROD_IMAGE
  only:
    - prod

更新: 有很多建议可以简单地使用" docker-compose down"或者"码头停止"。我已经在我的gitlab-runner框中完成了这个(完全清理了docker进程,图像,卷和网络),并重新提交了管道请求。在这种情况下,我在gitlab管道中得到了同样的错误。这让我觉得"测试"中存在并发问题。阶段。此外,如果我添加一个" test2"舞台并放置" pylint"在其内部的脚本中,管道将成功,进一步加强了并发问题的想法。

1 个答案:

答案 0 :(得分:2)

你的阶段:测试有两个docker-compose运行,两个都使用相同的容器名运行。您可以在第一次测试的--name test1和第二次测试的docker-compose run--name test2添加docker-compose run来更改此项。

原始答案

运行docker ps -a,它将列出已使用的容器名称。造成这种情况的主要原因是您已使用docker-compose up运行容器并且容器仍处于运行状态。

您的选择

  1. 运行docker-compose down。这应该打倒已经运行的容器。并且应该最有可能解决您的错误。
  2. 如果选项1失败,那么您可以通过运行docker stop <container_name>来查看正在运行的容器并停止这些容器。