我正在遵循此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
来查看容器列表时,它是空的。
有人知道我该如何解决此错误?
答案 0 :(得分:6)
只需加上我的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配置)。
这将通过register命令设置的配置支持Docker gitlab-runner。
希望这会有所帮助!
答案 1 :(得分:2)
您要运行两个具有相同名称的容器吗?这些指示从何而来?然后在您的响应中,您会说您收到错误“没有这样的容器:gitlab-runner-config”,但这不是您要运行的任何容器的名称吗?
根据我在其中看到的所有内容,包括您的gitlab-runner-config
,似乎您的第一个容器是 meant ,将被称为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
)。您使用相同的容器名称执行多个步骤,但将它们混在一起。
答案 2 :(得分:1)
运行docker ps -a
,您将看到所有容器(甚至是未运行的容器),如果在运行时使用--rm
选项,则在停止时将删除容器。之后。
如果您要创建多个同一图像而不关心名称,则始终可以跳过整个--name
选项。
答案 3 :(得分:0)
我也遇到了这个问题,opened an issue against the GitLab documentation。这里是我的评论:
实际上,我认为问题可能有所不同:
在第3步中,单击链接将转到https://docs.gitlab.com/runner/register/index.html#docker。
执行此操作时,您将到达页面 end 附近的右侧区域。但这也意味着您在页面的顶部中错过了重要的一点信息:
在注册亚军之前,您需要先:
- 将其安装在与安装GitLab的服务器不同的服务器上
- 通过GitLab的界面获取共享或特定跑步者的令牌
也就是说,文档说明建议并假设gitlab运行器容器在另一台机器上。因此,不希望它们适用于同一容器上的容器。
我的建议是在注册步骤之后添加注释,以首先检查页面顶部的注册要求。
除此之外,@ 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