Teamcity - Unmet requirements: docker.server.osType contains windows

I have Docker Desktop 2.0.0.3 on my Teamcity Agent/Server.

The Teamcity version is 2018.2 build is on (61245).

I have already restarted by Agent/Server multiple times.

I am unable to build a Build Configuration running a Command Line build step in a Docker Container using the Docker Wrapper feature because my Agent is reporting that it has "Unmet requirements: docker.server.osType contains windows".

Am I missing something here?

12 comments
Comment actions Permalink

On Windows machines, the actual cause can be that TeamCity Agent service can start faster than Docker Desktop. Just observed it on the local machine. After restarting the agent after docker up and running `docker.server.version` is detected and reported by an agent.

1
Comment actions Permalink

Hi Mike,

 

this message means that either the docker installation isn't properly done, or that the user running the Teamcity build agent is not properly configured to run docker. Please make sure that the docker executable is in the user's PATH, and that the user has appropriate permissions to run it.

0
Comment actions Permalink

Hi Denis, I was able to get pass the issue but unfortunately is not the most ideal solution. I have a feeling that this might be a Teamcity bug where the docker.server.osType is not being set when running windows containers in Docker Desktop for Windows (Windows Server 2016).

In my original setup, I had Docker running Windows containers in my Teamcity Server/Agent machine running Windows Server 2016. I was expecting to use Docker Wrapper and was running Docker image platform set to Windows (I realized that would not work with the node image since that is built under the Linux platform). However, my docker.server.osType should still be set to windows regardless and I should have passed the compatibility check.

What I did to get around this was to run linux containers in my Windows Server 2016 machine. Below are the steps I took to address this issue.

  • In the build agent, Docker Settings -> Daemon -> Check Experimental Features (This should enable LCOW to run Linux and Windows containers side by side on Windows Server 2016)
  • In the builder server {TeamCityDirectory}\conf\teamcity-startup.properties -> add teamcity.docker.lcow.enabled = true
  • Switch docker to run linux containers

After doing that, I restarted my Build Agent and Build Server services, and the docker.server.osType in my Build Agent popped up to with value of linux. I then set my build step's Docker image platform to linux.

0
Comment actions Permalink
I am getting an error while running a build and instead of running under agent it goes into the build queue for
  • docker.server.version exists

PFB screenshot for details

 
Default Agent-1
Unmet requirements:
 
  • docker.server.version exists



0
Comment actions Permalink

I have the same problem on Windows Server 2019.

Docker and Docker-Compose are installed.

C:\Users\Administrator>docker --version
Docker version 18.09.1, build 20b67756d0

C:\Users\Administrator>docker-compose --version
docker-compose version 1.24.1, build 4667896b

C:\Users\Administrator>echo %PATH%
C:\Program Files\Amazon Corretto\jdk11.0.4_10\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\Docker;C:\Program Files\Git\cmd;C:\Users\Administrator\AppData\Roaming\nvm;C:\Program Files\nodejs;C:\Users\Administrator\AppData\Local\Microsoft\WindowsApps;C:\Users\Administrator\AppData\Roaming\npm;C:\Users\Administrator\AppData\Roaming\nvm;C:\Program Files\nodejs

Teamcity build agent is installed as a service.

On the teamcity server UI the agent lists both Docker and Docker Compose as "This agent supports the following build runners:"

However the Agent Paramters / Configuration Parameters tab lists only those docker relevant properties:

docker.version  18.09.1
dockerCompose.version  1.24.1

Therefore builds with the supposedly supported Docker build runner do not run because:

Unmet requirements:
  • docker.server.version exists

If I could just add the config parameter by hand it might actually work. My guess is this has to do with the new way docker is integrated into Windows Server 2019, which teamcity has not addapted to yet.

Any help would be greatly appreciated.

0
Comment actions Permalink

Hi Holly,

you wrote that the agent is started as a service, but which account is used for that? Administration or System? If System, could you please try to start it under Administrator (the same that you used to check docker in a console)? Does it solve the problem?

0
Comment actions Permalink

I'm experiencing the same problem running agent on Windows Server 2019. Agent service normally is running under the AD account which has Administrator group privileges. Tried running it under the local Administrator account, no success either. Still getting the "Unmet requirements: docker.server.version exists".

0
Comment actions Permalink

Hi Andris,

could you please enable DEBUG logging on the agent (as described here), restart the agent and attach teamcity-agent.log? 

0
Comment actions Permalink

Hi,

I figured out that I actually couldn't start the Docker Desktop on the agent server (Windows Server 2019 EC2 instance in AWS) due to some Hyper-V virtualization issues.

Afterwards I followed this post to install the Windows-based Docker service and it works now for building Windows-based images:
https://4sysops.com/archives/install-docker-on-windows-server-2019/

So I suppose the problem in my case is figuring out how to run the Linux-based Docker service on the server.

0
Comment actions Permalink

Hi Andris,

 

for Linux-host, linux-container, the usual issue is that the docker daemon is by default installed for admin (root) users only. This is at its core a "docker issue": https://docs.docker.com/install/linux/linux-postinstall/ , that they have described in their docs. Please double check that as well.

0
Comment actions Permalink

I've been trying to solve "unmet requirements" for the Docker agent from TeamCity. I tried different sudo runs, no luck. I have Linux, the requirement says: "linux" not found. The UI in TC says (in the agent's details) : "Linux". At this point I give up. I need to build an Angular project. How come a Linux docker agent is not capable of doing that? Java's Maven projects work well, but Node.js is a no-no? I just wasted so much time setting things up. 

0
Comment actions Permalink

Can you share the command you've used to start your build agent?

On the docker hub page for jetbrains/teamcity-agent, it describes the options for configuring your docker agent to run builds that require docker. Here is a snippet, the options are to run the build agent with access to the host docker or to start a docker daemon within the container. Please see https://hub.docker.com/r/jetbrains/teamcity-agent for additional information.

Running Builds Which Require Docker

Regardless of the selected option, the Docker service inside the container must be started under the root user. The recommended approach is to use the TeamCity agent linux-sudo image that provides the sudo access. Alternatively, if you use a non-sudo agent image, you can run the whole container under the root user by passing -u 0.

Initially, the Docker is stopped inside the container. To run it, pass the -e DOCKER_IN_DOCKER=start environment variable.

 

0

Please sign in to leave a comment.