2017-03-17 10 views
8

GitLabはkubernetesクラスタで動作しています。ランナーはビルド成果物を含むドッカー画像を構築することはできません。私はすでにこれを解決するためにいくつかのアプローチを試みましたが、運はありません。ここではいくつかのconfigsスニペットは、次のとおりです。GitLab CIランナーはkubernetesのunix:///var/run/docker.sockに接続できません

.gitlab-ci.yml

image: docker:latest 
services: 
    - docker:dind 

variables: 
    DOCKER_DRIVER: overlay 

stages: 
    - build 
    - package 
    - deploy 

maven-build: 
    image: maven:3-jdk-8 
    stage: build 
    script: "mvn package -B --settings settings.xml" 
    artifacts: 
    paths: 
     - target/*.jar 

docker-build: 
    stage: package 
    script: 
    - docker build -t gitlab.my.com/group/app . 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.my.com/group/app 
    - docker push gitlab.my.com/group/app 

config.toml

concurrent = 1 
check_interval = 0 

[[runners]] 
    name = "app" 
    url = "https://gitlab.my.com/ci" 
    token = "xxxxxxxx" 
    executor = "kubernetes" 
    [runners.kubernetes] 
    privileged = true 
    disable_cache = true 

パッケージステージログ:私は間違って何をやっている

running with gitlab-ci-multi-runner 1.11.1 (a67a225) 
    on app runner (6265c5) 
Using Kubernetes namespace: default 
Using Kubernetes executor with image docker:latest ... 
Waiting for pod default/runner-6265c5-project-4-concurrent-0h9lg9 to be running, status is Pending 
Waiting for pod default/runner-6265c5-project-4-concurrent-0h9lg9 to be running, status is Pending 
Running on runner-6265c5-project-4-concurrent-0h9lg9 via gitlab-runner-3748496643-k31tf... 
Cloning repository... 
Cloning into '/group/app'... 
Checking out 10d5a680 as master... 
Skipping Git submodules setup 
Downloading artifacts for maven-build (61)... 
Downloading artifacts from coordinator... ok  id=61 responseStatus=200 OK token=ciihgfd3W 
$ docker build -t gitlab.my.com/group/app . 
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 
ERROR: Job failed: error executing remote command: command terminated with non-zero exit code: Error executing in Docker Container: 1 

答えて

6

はこれを使用する必要はありません。

DOCKER_DRIVER: overlay 

SVC-0コンテナはそれを開始することができませんので、オーバーレイは、サポートされていないようにそれはそう原因:

$ kubectl logs -f `kubectl get pod |awk '/^runner/{print $1}'` -c svc-0 
time="2017-03-20T11:19:01.954769661Z" level=warning msg="[!] DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING [!]" 
time="2017-03-20T11:19:01.955720778Z" level=info msg="libcontainerd: new containerd process, pid: 20" 
time="2017-03-20T11:19:02.958659668Z" level=error msg="'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded." 

また、ドッカービルドにexport DOCKER_HOST="tcp://localhost:2375"を追加してください。

docker-build: 
    stage: package 
    script: 
    - export DOCKER_HOST="tcp://localhost:2375" 
    - docker build -t gitlab.my.com/group/app . 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.my.com/group/app 
    - docker push gitlab.my.com/group/app 
3

Kubernetesを使用する場合は、ビルドイメージを調整してDockerエンジンに接続する必要があります。

ビルドイメージに追加:ドキュメントから

DOCKER_HOST=tcp://localhost:2375 

引用:

ドッキングウィンドウの実行:また、ドッキングウィンドウ・イン・ドッカ画像として知られているDINDも 可能ですが、悲しいことにニーズですコンテナは特権モードで実行されます。 もしあなたがそのリスクを抱いて喜んでいるのであれば、 が最初の一見でまっすぐに見えないかもしれない他の問題が起こります。ドッカーデーモンは通常、.gitlab-ci.yamlのサービスとして から起動されるため、ポッド内の別の コンテナとして実行されます。基本的に、ポッド内のコンテナは、 に割り当てられたボリュームと、localhostを使用して相互にアクセスできるIPアドレスだけを共有します。 /var/run/docker.sockはdockerによって共有されません:dindコンテナとdocker バイナリはデフォルトでそれを使用しようとします。これを上書きしてクライアントがtcp を使って他のコンテナのドッカーデーモンに連絡するようにするには、ビルドコンテナの環境変数に DOCKER_HOST = tcp:// localhost:2375を必ず含めてください。

Gitlab-CI on Kubernetes

+0

提案してくれてありがとうございますが、私はすでにこれを試しました:( –

+1

'tcp:// localhost:2375でDockerデーモンに接続できません。ドッカーデーモンが動いていますか? –

+3

あなたはこれを解決しましたか?私もこのエラー(TCPを含むものを含む)を取得しています...私のgitlab-runnerはドッカーのコンテナにあります。 – gabriel

関連する問題