我正在使用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
答案 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分钟,您可以看到示例。
答案 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