【问题标题】:Conflict. The container name "/gitlab-runner" is already in use by container冲突。容器名称“/gitlab-runner”已被容器使用
【发布时间】:2018-12-16 10:35:18
【问题描述】:

我正在关注guide 为我在 Ubuntu 16.4 上运行的 GitLab 服务器安装 docker。

当我执行以下命令时:

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

到目前为止一切顺利。但是,当我运行下一个命令从这个guide 注册跑步者时:

docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner --name gitlab-runner gitlab/gitlab-runner register

我不断收到消息:

docker:来自守护进程的错误响应:冲突。容器名称“/gitlab-runner”已被容器“b055ded012f9d0ed085fe84756604464afbb11871b432a21300064333e34cb1d”使用。您必须删除(或重命名)该容器才能重用该名称。

但是,当我运行 docker container list 来查看容器列表时,它是空的。

有人知道我该如何解决这个错误吗?

【问题讨论】:

标签: docker gitlab ubuntu-16.04 gitlab-ci gitlab-ci-runner


【解决方案1】:

只是为了增加我的 2 美分,因为我最近也通过那些 GitLab 文档来让 Docker GitLab 运行器工作。

按照Docker image installation and configuration 指南,它告诉您启动该容器,但我认为这是一个错误,您希望在注册 Runner 后执行此操作。

如果你确实跑了:

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

只需使用 docker rm -f gitlab-runner 删除 docker 容器,然后转到 registering the runner

docker run --rm -t -i -v /srv/gitlab-runner/config:/etc/gitlab-runner --name gitlab-runner gitlab/gitlab-runner register

这将注册跑步者,并将配置放在本地机器上的/srv/gitlab-runner/config/config.toml 中。

然后你可以运行原来的docker run

docker run -d --name gitlab-runner --restart always \
  -v /srv/gitlab-runner/config:/etc/gitlab-runner \
  -v /var/run/docker.sock:/var/run/docker.sock \
  gitlab/gitlab-runner:latest

(注意,如果由于再次使用该名称而无法正常工作 - 只需再次运行 docker rm -f gitlab-runner 命令 - 您不会丢失 gitlab-runner 配置)。

这将使 Docker gitlab-runner 使用 register 命令中的配置集。

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    您要运行两个同名容器?这些指示是从哪里来的?然后在您的回复中,您说您收到错误“没有这样的容器:gitlab-runner-config”,但这不是您尝试运行的任何容器的名称?

    根据我在其中看到的所有其他内容,您的第一个容器意味着被称为gitlab-runner-config,包括您的volumes-from。可能这就是gitlab-runner 没有出现在docker ps 中的原因,因为您试图从不存在的容器中获取卷。尝试清除所有内容,然后运行以下命令:

    $ docker run -d --name gitlab-runner-config --restart always \
      -v /srv/gitlab-runner/config:/etc/gitlab-runner \
      -v /var/run/docker.sock:/var/run/docker.sock \
      gitlab/gitlab-runner:latest
    

    ...

    $ docker run -d --name gitlab-runner --restart always \
        -v /var/run/docker.sock:/var/run/docker.sock \
        --volumes-from gitlab-runner-config \
        gitlab/gitlab-runner:latest
    

    编辑:好的,所以我阅读了指南,您按照错误的说明进行操作。它是说在第 2 步中,要么 执行一个命令,或者之后执行两个命令。要么做一个组合的配置和运行容器(称为gitlab-runner),要么做一个配置容器(称为gitlab-runner-config),然后是一个运行容器(称为gitlab-runner)。您正在使用相同的容器名称执行多个步骤,但将它们混合在一起。

    【讨论】:

    • 是的,你是对的,我应该只做其中一个。我尝试删除容器,只执行第一个命令,当我在步骤 3 中运行命令以注册运行器时,我仍然收到相同的错误消息。
    • 这似乎是一个不同的问题。随意接受此答案,并创建另一个问题,详细说明您为此获得的步骤和错误。
    • 这是完全相同的错误消息。我更新了问题。
    • 你一直把容器称为同一个东西。在这方面,文档看起来很差,但只需将其称为 --name gitlab-runner-register 之类的其他名称即可。我什至不确定文档要你做什么,因为我假设 register 命令不会注册现有的跑步者?恕我直言,文档看起来很混乱。
    • 好的,我今晚试试,然后回复你。谢谢!
    【解决方案3】:

    运行docker ps -a,您将看到所有容器(甚至是未运行的容器),如果您在运行时使用--rm 选项,如果这是您所追求的行为,您的容器将在停止时被删除。
    如果您想创建多个相同的图像并且不关心名称,则可以随时跳过整个 --name 选项。

    【讨论】:

    • 我试图删除出现在ps -a 中的容器,但随后我收到错误No such container: gitlab-runner-config.。所以我重新执行了第一个命令,然后停止了容器而不是删除它,但我仍然得到与容器已被使用相同的错误。
    【解决方案4】:

    我也遇到过这个,opened an issue against the GitLab documentation。这是我的评论:


    实际上,我认为问题可能有所不同:

    在第 3 步中,单击该链接会将您带到 https://docs.gitlab.com/runner/register/index.html#docker

    在执行此操作时,您会进入右侧部分,靠近页面的end。但这也意味着您错过了页面顶部的一个重要信息:

    在注册 Runner 之前,您需要先:

    • 将其安装在与 GitLab 安装位置不同的服务器上
    • 通过 GitLab 的界面获取共享或特定 Runner 的令牌

    也就是说,文档说明建议并假设 gitlab runner 容器在另一台机器上。因此,它们不应该适用于同一个容器上的容器。

    我的建议是在注册步骤之后添加一个注释,以首先检查页面顶部的注册要求。


    除此之外,@johnharris85 的答案适用于在同一台机器上注册跑步者。您需要做的唯一额外的事情是在命令中添加--network="host" 选项以进行注册。那就是:

    sudo docker run --rm -t -i \
      -v /srv/gitlab-runner/config:/etc/gitlab-runner \
      --network="host" --name gitlab-runner-register \
      gitlab/gitlab-runner register
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-10-20
      • 1970-01-01
      • 2021-12-16
      • 2023-04-02
      • 1970-01-01
      • 2020-11-13
      • 1970-01-01
      相关资源
      最近更新 更多