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



在我的 gitlab CI 管道中对 docker 映像运行测试时,我在"test_image"步骤中收到以下错误。我无法在本地重现它,它只发生在 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"或"docker stop"。我已经在我的 gitlab-runner 盒子上完成了此操作(完全清除了 docker 进程、映像、卷和网络(,并重新提交了管道请求。在这种情况下,我在 gitlab 管道中收到相同的错误。这让我认为在"测试"阶段存在并发问题。此外,如果我添加一个"test2"阶段并将"pylint"脚本放在其中,管道将成功,进一步强化并发问题的想法。

您的 stage:test 正在运行两个 docker-compose,并且都使用相同的容器名称运行。您可以通过在第一个测试docker-compose run添加--name test1并在第二个测试docker-compose run添加--name test2来更改此设置。

原始答案

运行docker ps -a,它将列出已在使用的容器名称。这主要是因为您已经使用docker-compose up运行了容器,并且容器仍然处于运行状态。

您的选择是

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

最新更新