Jenkins
В Jenkins я решил использовать функцию удаленного докера.Поэтому я установил docker.io
на сервере Linux и использую этот конвейер.
node {
stage('Example') {
docker.withServer('tcp://docker.example.org:2375') {
docker.image('stefanscherer/node-windows:10').inside {
sh 'node --version'
}
}
}
}
Но это не удается с сообщением об ошибке конфигурации тома.
java.io.IOException: Failed to run image 'stefanscherer/node-windows:10'. Error: docker: Error response from daemon: invalid volume specification: '/var/lib/jenkins/workspace/Docker Test:/var/lib/jenkins/workspace/Docker Test:rw,z'.
See 'docker run --help'.
at org.jenkinsci.plugins.docker.workflow.client.DockerClient.run(DockerClient.java:133)
Возможно, проблема в том, чтоЯ пытаюсь совместить linux Jenkins с докером Windows?Но я читал, что это опция experimental
, которая должна позволять использовать контейнеры Linux.
GitLab
GitLab-Runner, установленный через это руководство.https://docs.gitlab.com/runner/install/windows.html Затем я подключил его и выбрал docker
в качестве исполнителя.
Когда я удаляю hosts
из daemon.json
, я получаю это сообщение об ошибке.
ERROR: Preparation failed: Error response from daemon: client version 1.18 is too old. Minimum supported API version is 1.24, please upgrade your client to a newer version (executor_docker.go:1161:0s)
Как получить версию, которая поддерживает более новый API?Я прочитал статью о том, что GitLab ждет LTS EOL (End-of-Life).Я думаю, что для CentOS или что-то еще.
Когда я настроил hosts
в daemon.json
, я получаю это сообщение об ошибке.
ERROR: Preparation failed: error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.18/info: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows, the docker client must be run elevated to connect. This error may also indicate that the docker daemon is not running. (executor_docker.go:1161:0s)
Это потому, что бегун не может найтиDocker, потому что Docker прослушивает только порт TCP.Я попытался добавить //./pipe/docker_engine
к hosts
из daemon.json
, но это не сработало.Служба Docker немедленно аварийно завершает работу.
Docker
Windows Server 2016
daemon.json
{
"hosts": ["tcp://0.0.0.0:2375"],
"experimental": true
}
Цель
Моя цель состоит в том, чтобы создавать свои рабочие места из (linux) Jenkins и (linux) GitLab в (windows) Docker.
Проблема
Jenkins неработает вообще из-за некоторых настроек, может быть, или из-за того, что он пытается смонтировать пути Windows?
GitLab ожидает старый API, который не предлагает докер.