- TeamCity: teamcity-agent:2022.10.2-linux-sudo — cgroup permission denied and «Is the docker daemon running?» error
- Почему TeamCity не распознает свойства док-сервера с помощью образа jetbrains / агента?
- 2 ответа
- Requirement Conditions
- Teamcity — Unmet requirements: docker.server.osType contains windows
- 1 Answer 1
- Почему TeamCity не распознает свойства сервера докеров с помощью образа jetbrains/agent?
- Ответы (2)
TeamCity: teamcity-agent:2022.10.2-linux-sudo — cgroup permission denied and «Is the docker daemon running?» error
I use a Rocky Linux VM on my Windows Server 2019 and updated the VM with all new available updates for that machine. When I open TeamCity, I see the agents in my application. I authorized it. I use the DOCKER_IN_DOCKER option to run multiple teamcity agents but at the moment I get the following error in the teamcity application under «Incompatible configurations»:
Unmet requirements: - docker.server.version exists - docker.server.osType contains linux
When I try to check my teamcity agents docker container and want to check which docker version is running by following command: docker exec -it 76eb8e2b0add bash and inside the container with docker version i get the following error message:
root@76eb8e2b0add:/var/run# docker version Client: Docker Engine - Community Version: 20.10.12 API version: 1.41 Go version: go1.16.12 Git commit: e91ed57 Built: Mon Dec 13 11:45:33 2021 OS/Arch: linux/amd64 Context: default Experimental: true Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
When I try to restart or start the docker daemon by service docker start or service docker restart I get the following error:
root@76eb8e2b0add:/var/run# service docker start mount: /sys/fs/cgroup/cpuset: permission denied. mount: /sys/fs/cgroup/cpu: permission denied. mount: /sys/fs/cgroup/cpuacct: permission denied. mount: /sys/fs/cgroup/blkio: permission denied. mount: /sys/fs/cgroup/memory: permission denied. mount: /sys/fs/cgroup/devices: permission denied. mount: /sys/fs/cgroup/freezer: permission denied. mount: /sys/fs/cgroup/net_cls: permission denied. mount: /sys/fs/cgroup/perf_event: permission denied. mount: /sys/fs/cgroup/net_prio: permission denied. mount: /sys/fs/cgroup/hugetlb: permission denied. mount: /sys/fs/cgroup/pids: permission denied. mount: /sys/fs/cgroup/rdma: permission denied. mount: /sys/fs/cgroup/misc: permission denied. * Starting Docker: docker
It won’t start. Does anybody know how I get rid of the /sys/fs/cgroup error message and how I get docker started? I also tried chmod 666 /var/run/docker.sock and chown $USER:$USER docker.sock or chown 0:0 docker.sock but without success. I get always the mounting error with cgroup when I start docker. Does anybody have the same issue or knows a solution to these problems? Many thanks!
Почему TeamCity не распознает свойства док-сервера с помощью образа jetbrains / агента?
У меня есть служба ECS Fargate, на которой запущен образ jetbrains / teamcity-agent. Это связано с моим хостом TeamCity, который работает на экземпляре EC2 (Windows).
Когда я проверяю, может ли агент выполнять команды докера, он показывает следующие ошибки:
Неудовлетворенные требования: docker.server.osType содержит linux docker.server.version существует
В разделе «Параметры агента» -> «Параметры конфигурации» я правильно вижу версию докера и dockerCompose.version. Есть ли параметр, который мне не хватает?
2 ответа
Если вы пытаетесь получить доступ к сокету докера в fargate, Fargate не поддерживает выполнение команд докера , есть предложенный билет для этой функции.
проблема с «docker.server.osType» не отображается обычно означает, что команда docker, запущенная из агента, не может подключиться к запущенному демону docker. Обычно это происходит из-за отсутствия разрешений, поскольку докер по умолчанию разрешает соединения только от root и пользователей группы Docker.
Я столкнулся с аналогичными проблемами, и я решил их исправить, добавив пользователя «build agent» в группу «docker» и перезапустив / перезагрузив сервер.
Где build agent user ==> Означает пользователя, с которым работают ваши службы TeamCity.
Команда для добавления пользователя в группу
Команда для перезагрузки сервера:
Это решило проблему для меня, мне просто пришлось заменить chmod на usermod , чтобы добавить моего пользователя в группу docker : sudo usermod -a -G docker
Requirement Conditions
Returns true if the specified property does not exist.
env.TEAMCITY_GIT_PATH does not exist
Returns true if the specified property exists and equals the given value.
You can leave the «value» field empty to check whether the specified property exists but is empty.
docker.server.osType equals Linux
Returns true if a value of the specified property differs from the given value, or if this property does not exist.
You can leave the «value» field empty to check whether the specified property exists and is not empty (has a value).
system.teamcity.buildType.id does not equal Tests
Return true if a value of the target numeric property meets the corresponding condition.
build.number is more than 256
teamcity.agent.hardware.cpuCount is less than 10
- version is more than
- version is not more than
- version is less than
- version is not less than
Compare software versions with the given value. Supports multiple value formats, including dot ( . ) delimiters, leading zeroes, common suffixes like «beta», «EAP». If the version number contains alphabetic characters, they are compared as well, for instance, 1.1e < 1.1g.
maven version is more than 3.0
Returns true if a value of the specified property includes the given value.
teamcity.serverUrl contains localhost
Returns true if a value of the specified property does not include the given value, or if this property does not exist.
system.agent.name does not contain _local
Returns true if a value of the specified property starts (ends) with the given value.
teamcity.agent.jvm.os.name starts with Mac
teamcity.agent.work.dir ends with /work
Returns true if the specified property matches (does not match) the given regular expression pattern.
Use matches .*(,|^)foo(,|$).* to match all occurrences of foo , foo,bar , bar,foo , and bar,foo,xxx .
Teamcity — Unmet requirements: docker.server.osType contains windows
Is this something I need to manually setup? Docker plugin is installed and enabled by default in this build of Teamcity.
please provide more info. 1. about you configuration, 2. have you installed Docker Support plugin? 3. did you enable this plugin in your build configuration?
I’m not sure what you meant by configuration. Do you mean my build step where I’m using Docker? I am trying to run yarn install in node:latest image. Specified in Run step within Docker container: node:latest. Docker image platform is set to Windows. Pull image explicitly is checked.
1 Answer 1
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).
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 run 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
- In the builder server \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.
Почему TeamCity не распознает свойства сервера докеров с помощью образа jetbrains/agent?
У меня есть служба ECS Fargate, на которой запущен образ jetbrains/teamcity-agent. Это связано с моим хостом TeamCity, который работает на экземпляре EC2 (Windows). Когда я проверяю, может ли агент выполнять команды docker, он показывает следующие ошибки: Неудовлетворенные требования: docker.server.osType содержит linux docker.server.version существует В разделе «Параметры агента» -> «Параметры конфигурации» я правильно вижу версию докера и dockerCompose.version. Есть ли настройка, которую мне не хватает?
Ответы (2)
Если вы пытаетесь получить доступ к сокету docker в fargate, Fargate не поддерживает выполнение команд docker, существует предложенный билет для этой функции.
проблема с тем, что docker.server.osType не отображается, обычно означает, что команда docker, запускаемая из агента, не может подключиться к запущенному демону docker. Обычно это происходит из-за отсутствия разрешений, так как docker по умолчанию разрешает подключения только от root и пользователей группы docker.
Я столкнулся с подобными проблемами, и я исправил их, добавив пользователя агента сборки в группу докеров и перезапустив/перезагрузив сервер. Где build agent user ==› Означает пользователя, с которым работают ваши службы TeamCity. Команда для добавления пользователя в группу