Gitlab在docker里面运行docker

时间:2017-07-02 16:48:36

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

我正在使用gitlab 9.3.3-ce.0和gitlab runner和docker executor。我想在这个docker-executor中构建图像。怎么做?

我正在尝试使用/etc/gitlab-runner/config.toml中的此部分连接到外码头:

[runners.docker]
    tls_verify = false
    image = "java:8"
    privileged = true
    disable_cache = false
    volumes = ["/var/images", "/var/lib/docker:/var/lib/docker", 
               "/var/run/docker.sock:/var/run/docker.sock", 
               "/usr/bin/docker:/usr/bin/docker"]
    shm_size = 0

但是当我尝试在docker docker info内执行时,我得到了:

/usr/bin/docker: No such file or directory

但它应该存在:

$ which docker
/usr/bin/docker

4 个答案:

答案 0 :(得分:1)

您需要在泊坞窗服务中使用泊坞窗:

image: docker:latest

# When using dind, it's wise to use the overlayfs driver for
# improved performance. - THIS DOES NOT ALWAYS WORK!
variables:
  DOCKER_DRIVER: overlay

services:
- docker:dind

before_script:
- docker info

build:
  stage: build
  script:
  - docker build -t my-docker-image .
  - docker run my-docker-image /script/to/run/tests

请参阅https://docs.gitlab.com/ce/ci/docker/using_docker_build.html#use-docker-in-docker-executor

答案 1 :(得分:0)

事实证明,在docker本身内部看不到通过apt-get默认安装docker,因此安装并使用了独立的独立docker。

答案 2 :(得分:0)

正如接受的响应所说,docker是docker中的解决方案。

但是,在docker内部使用docker时需要做出一些牺牲,我认为还有一个更好的选择:Kaniko项目

您可以使用kaniko映像并轻松地构建docker映像。 这是我使用Kaniko用Gitlab和CI / CD录制的一些视频。 https://youtu.be/Gb96kKN8BoI?t=1848 30:45分钟,您可以看到示例。

Gitlab also recommends Kaniko

答案 3 :(得分:0)

我将工作食谱留给那些对GitLab docker dind模式有问题的人使用,该模式最近变得不稳定:

build:
  image:
    name: gcr.io/kaniko-project/executor:debug
    entrypoint: [""]
  script:
    - echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
    - /kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA