【发布时间】:2022-11-24 04:18:24
【问题描述】:
我正在努力在 docker 容器中引入构建代理,并使用以下命令启动它们:
docker run -d --restart=unless-stopped --cpus="4" -m="8g" --name "${AZP_AGENT_NAME}${i}" -e AZP_URL="$AZP_URL" -e AZP_TOKEN="$AZP_TOKEN" -e AZP_AGENT_NAME="${AZP_AGENT_NAME}${i}" -e AZP_POOL="$AZP_POOL" -v /var/run/docker.sock:/var/run/docker.sock -ti dockeragent:latest --once
这允许我们在 docker 容器中运行我们的构建管道,一旦构建任务完成,容器就会重新启动(容器在完成最后一个带有参数 --once 的任务后关闭。
由于 --restart=unless-stopped 将在重新启动时保留相同的容器(和底层文件系统),因此我拥有与以前相同的容器状态(这可能是大多数用例的预期策略)。但是正如我们期望每次构建都有一个干净的容器,这不是正确的方法。
有没有办法始终从初始状态的新图像重新启动容器?
我尝试使用 --restart=unless-stopped --rm 的组合,但这让 docker 不高兴并回复 docker: Conflicting options: --restart and --rm.。我排除了要删除的容器并再次从图像中重新运行。但这可能是有道理的,因为预期的目标是再次启动同一个容器。
【问题讨论】:
标签: docker cicd azure-devops-self-hosted-agent build-agent