2017-07-24 135 views
0

泊塢窗項目組成我做了這個問題

。它在localhost上運行良好。我想用這個基礎來測試或分析Gitlab Runner的代碼。我解決了很多問題,比如安裝docker撰寫,運行和構建選定的容器並在容器中運行命令。第一個作業運行和成功(!),但下面的工作之前,「before_script」失敗:泊塢窗撰寫基於Gitlab CI - 管道錯誤

不能在UNIX連接到碼頭工人守護進程:///var/run/docker.sock。碼頭守護程序是否正在運行?
...
來自守護進程的錯誤響應:衝突。
...
來自守護進程的錯誤響應:衝突。

我不明白爲什麼。我做錯了什麼?我再說一遍:管道的第一份工作與「成功」消息運行良好!管道的每個其他工作都失敗。

全輸出:

Running with gitlab-ci-multi-runner 9.4.0 (ef0b1a6) 
    on XXX Runner (fdc0d656) 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:5096e5a0cba00693905879b09e24a487dc244b56e8e15349fd5b71b432c6ec9ffor docker service... 
ERROR: Preparation failed: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 
Will be retried in 3s ... 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:5096e5a0cba00693905879b09e24a487dc244b56e8e15349fd5b71b432c6ec9f for docker service... 
ERROR: Preparation failed: Error response from daemon: Conflict. The container name "/runner-fdc0d656-project-35-concurrent-0-docker" is already in use by container "80918876ffe53e33ce1f069e6e545f03a15469af6596852457f11dbc7a6c5b58". You have to remove (or rename) that container to be able to reuse that name. 
Will be retried in 3s ... 
Using Docker executor with image docker:latest ... 
Starting service docker:dind ... 
Pulling docker image docker:dind ... 
Using docker image docker:dind ID=sha256:5096e5a0cba00693905879b09e24a487dc244b56e8e15349fd5b71b432c6ec9f for docker service... 
ERROR: Preparation failed: Error response from daemon: Conflict. The container name "/runner-fdc0d656-project-35-concurrent-0-docker" is already in use by container "80918876ffe53e33ce1f069e6e545f03a15469af6596852457f11dbc7a6c5b58". You have to remove (or rename) that container to be able to reuse that name. 
Will be retried in 3s ... 
ERROR: Job failed (system failure): Error response from daemon: Conflict. The container name "/runner-fdc0d656-project-35-concurrent-0-docker" is already in use by container "80918876ffe53e33ce1f069e6e545f03a15469af6596852457f11dbc7a6c5b58". You have to remove (or rename) that container to be able to reuse that name. 

文件

.gitlab-ci.yml

# Select image from https://hub.docker.com/r/_/php/ 
image: docker:latest 

# Services 
services: 
    - docker:dind 

stages: 
    - build 
    - test 
    - deploy 

cache: 
    key: ${CI_BUILD_REF_NAME} 
    untracked: true 
    paths: 
     - vendor 
     - var 

variables: 
    DOCKER_CMD: docker exec --user user bin 
    COMPOSE_HTTP_TIMEOUT: 300 

before_script: 
    - apk add --no-cache py-pip bash 
    - pip install docker-compose 
    - touch ~/.gitignore 
    - bin/docker-init.sh 
    - cp app/config/parameters.gitlab-ci.yml app/config/parameters.yml 
    - cp app/config/nodejs_parameters.yml.dist app/config/nodejs_paramteres.yml 
    - chmod -R 777 app/cache app/logs var 
    # Load only binary and mysql 
    - docker-compose up -d binary mysql 

build: 
    stage: build 
    script: 
     - ${DOCKER_CMD} composer install -n 
     - ${DOCKER_CMD} php app/console doctrine:database:create --env=test --if-not-exists 
     - ${DOCKER_CMD} php app/console doctrine:migrations:migrate --env=test 

codeSniffer: 
    stage: test 
    script: 
     - ${DOCKER_CMD} bin/php-cs-fixer fix --dry-run --config-file=.php_cs 

database: 
    stage: test 
    script: 
     - ${DOCKER_CMD} php app/console doctrine:mapping:info --env=test 
     - ${DOCKER_CMD} php app/console doctrine:schema:validate --env=test 
     - ${DOCKER_CMD} php app/console doctrine:fixtures:load --env=test 

unittest: 
    stage: test 
    script: 
     - ${DOCKER_CMD} bin/phpunit -c app --debug 

deploy_demo: 
    stage: deploy 
    script: 
     - echo "Deploy to staging server" 
    environment: 
     name: staging 
     url: https://staging.example.com 
    only: 
     - develop 

deploy_prod: 
    stage: deploy 
    script: 
     - echo "Deploy to production server" 
    environment: 
     name: production 
     url: https://example.com 
    when: manual 
    only: 
     - master 

docker-compose.yml

version: "2" 

services: 
    web: 
     image: nginx:latest 
     ports: 
      - "${HTTP_PORT}:80" 
     depends_on: 
      - mysql 
      - elasticsearch 
      - binary 
     links: 
      - binary:php 
     volumes: 
      - ".:/var/www" 
      - "./app/config/docker/vhost.conf:/etc/nginx/conf.d/site.conf" 
      - "${BASE_LOG_DIR}/nginx:/var/log/nginx" 

    mysql: 
     image: mysql:5.6 
     environment: 
      MYSQL_USER: test 
      MYSQL_PASSWORD: test 
      MYSQL_ROOT_PASSWORD: test 
     ports: 
      - "${MYSQL_PORT}:3306" 
     volumes: 
      - "${BASE_LOG_DIR}/mysql:/var/log/mysql" 
      - "${BASE_MYSQL_DATA_DIR}:/var/lib/mysql" 
      - "./app/config/docker/mysql.cnf:/etc/mysql/conf.d/mysql.cnf" 

    elasticsearch: 
     image: elasticsearch:1.7.6 
     ports: 
      - "${ELASTICSEARCH_PORT}:9200" 
     volumes: 
      - "${BASE_ELASTICSEARCH_DATA_DIR}:/usr/share/elasticsearch/data" 

    binary: 
     image: fchris82/kunstmaan-test 
     container_name: bin 
     volumes: 
      - ".:/var/www" 
      - "${BASE_LOG_DIR}/php:/var/log/php" 
      - "~/.ssh:/home/user/.ssh" 
     tty: true 
     environment: 
      LOCAL_USER_ID: ${LOCAL_USER_ID} 

config.toml

[[runners]] 
    name = "XXX Runner" 
    url = "https://gitlab.xxx.xx/" 
    token = "xxxxxxxxxxx" 
    executor = "docker" 
    [runners.docker] 
    tls_verify = false 
    image = "docker:latest" 
    privileged = true 
    disable_cache = false 
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"] 
    shm_size = 0 
    [runners.cache] 

回答

0

好的,我發現了這個問題。我寵壞了配置。如果您使用dind服務.gitlab-ci.yml那麼請不要使用/var/run/docker.sockconfig.toml文件或者vica相反,如果您使用「套接字」方法,請不要使用dind服務。

更多信息:https://docs.gitlab.com/ce/ci/docker/using_docker_build.html