我在docker容器中有一个gitlab运行器,如果我运行像nginx这样的图像,运行正常。但是现在我试图在gitlab runner中的docker(dind)中运行docker,我想在dind里面运行docker-compose。 Docker信息运行正常,但如果我尝试运行docker-compose,我会收到一个权限被拒绝的错误。
我将/ usr / local / bin / docker-compose文件链接到gitlab runner容器,并将其输入到runner config.toml文件的volumes参数中。
如果我尝试运行sudo,它会以未知的命令错误结束,因此无法解决问题。
我是否必须更多地链接某些文件或者是多个嵌套容器?
答案 0 :(得分:3)
如果你正在使用dind,这意味着docker工作正常,现在你只需要安装docker-compose,这只是简单的python包,你可以在before_script中完成
<强> .gitlab-ci.yml 强>
image: docker:latest
services:
- docker:dind
variables:
DOCKER_DRIVER: overlay2
stages:
- test
before_script:
- apk add --no-cache py-pip
- pip install docker-compose
- docker info
- docker login -u gitlab-ci-token -p $CI_JOB_TOKEN docker.registry.com
test:
stage: test
script:
- cp .env.sample .env # copy environement variable
- docker-compose up -d
# run some test here
答案 1 :(得分:1)
要拥有@Lob
,您需要为映像docker(版本18.09.6)安装它,在编写本文时应建立481bc77。
自docker-compose version 1.24.0起,您还需要以下dev依赖项才能安装docker-compose:
docker-compose
以下是示例apk add python-dev libffi-dev openssl-dev gcc libc-dev make
:
.gitlab-ci.yml