我在" 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"在其内部的脚本中,管道将成功,进一步加强了并发问题的想法。
答案 0 :(得分:2)
你的阶段:测试有两个docker-compose运行,两个都使用相同的容器名运行。您可以在第一次测试的--name test1
和第二次测试的docker-compose run
中--name test2
添加docker-compose run
来更改此项。
原始答案
运行docker ps -a
,它将列出已使用的容器名称。造成这种情况的主要原因是您已使用docker-compose up
运行容器并且容器仍处于运行状态。
您的选择
docker-compose down
。这应该打倒已经运行的容器。并且应该最有可能解决您的错误。docker stop <container_name>
来查看正在运行的容器并停止这些容器。