Closed Bug 1489595 Opened 6 years ago Closed 6 years ago

What code is running for `workerType: servo-docker-worker`?

Categories

(Taskcluster :: Operations and Service Requests, task)

task
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: SimonSapin, Unassigned)

Details

… if it is not enabled already.

This is the "dind" feature documented at https://docs.taskcluster.net/docs/reference/workers/docker-worker/docs/payload , which as I understand it binds a Unix socket to allow reaching the worker/host’s Docker daemon from within the task/container.

Also, could you please let me know, or better if possible let me know how to find out myself:

* What OS distribution and version are these workers running?
* What Docker distribution and version? (A first attempt caused "Error response from daemon: client and server don't have same version": https://tools.taskcluster.net/groups/d1iouUX1S72lEbbI6hfGcA/tasks/JMOZEORVRtuHvACTNv8D8w/details )

For context, I’d like to use this to build on demand the Docker images used in Servo tasks, similar to https://firefox-source-docs.mozilla.org/taskcluster/taskcluster/docker-images.html .

Thanks!
Flags: needinfo?(wcosta)
afaict, dind features works. docker-worker runs on Ubuntu 14.04, with kernel 4.4.0-1014-aws, and the docker version is 18.06.0.
Flags: needinfo?(wcosta)
> docker-worker runs on […]

Can you confirm if this also applies to servo-docker-worker specifically, or if it could be on older versions? Running "docker version" in a task prints:

    Client:
     Version:	17.12.1-ce
     API version:	1.24 (downgraded from 1.35)
     Go version:	go1.10.1
     Git commit:	7390fc6
     Built:	Wed Apr 18 01:23:11 2018
     OS/Arch:	linux/amd64
    Error response from daemon: client and server don't have same version (client : 1.24, server: 1.18)

https://tools.taskcluster.net/groups/NzDRDb19RtSIcb0jTFU-eA/tasks/FLbvHCQKQAe5MtM_CC2t7g/runs/0/logs/public%2Flogs%2Flive.log#L635-642

So the it seems the client (in the task/container) has a version older than 18.06.0, but an API version newer than the server (on the worker/host) it is talking to.
Flags: needinfo?(wcosta)
I’ve found in https://docs.docker.com/develop/sdk/#api-version-matrix that API version 1.18 corresponds (somehow? I’m not sure of the exact relationship between these two numbers) to Docker 1.6, which happens to be the version of the 'docker.io' package in the Ubuntu repositories (not Docker-CE repositories) for Ubuntu 14.04.

By making my task run in a 14.04 image and install that package, I was able to run "docker version" and have it successfully talk to the server which is presumably running on the host outside of the task’s container. (My "docker build" command fails apparently because the command-line interface was different in that version, I’ll keep looking.)

So the initial premise of this issue is solved, but I’d still like to have a way to look at the exact worker code handling tasks with `provisionerId: aws-provisioner-v1` and `workerType: servo-docker-worker`.
Summary: Enable docker-in-docker for the servo-docker-worker worker type → What code is running for `workerType: servo-docker-worker`?
Flags: needinfo?(wcosta)
Closing as I’ve now managed to use docker-in-docker to build a docker image in a task and run it in a dependent task, and got some answers about the code/configuration of servo-docker-worker on IRC. Thanks all!

https://github.com/servo/servo-taskcluster-experiments/commits/ea7804385d
https://tools.taskcluster.net/groups/TnPiGW2uTvelGQQS80AhFA
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Component: Service Request → Operations and Service Requests
You need to log in before you can comment on or make changes to this bug.