Jenkins管道脚本删除所有docker容器-Windows :(

时间:2020-01-31 23:34:05

标签: docker jenkins jenkins-pipeline

下面是我在jenkins管道脚本中用于删除所有容器的代码行.....所以我可以用新版本替换容器

bat 'docker rm $(docker ps -a -q) -f'

但是我得到了错误

unknown shorthand flag: 'a' in -a

命令docker rm $(docker ps -a -q) -f在Powershell中可以正常工作……但是当使用bat从詹金斯调用时,它会失败

2 个答案:

答案 0 :(得分:0)

请尝试docker rm -f $(docker ps -aq)

sh """
  docker rm -f $(docker ps -aq)
  """

更新:

stage('Remove Containers') {
      sh 'docker rm -f $(docker ps -aq)'
    }

答案 1 :(得分:0)

使用“ bat”运行意味着它是Windows命令,因此Windows不知道这是什么:

$(docker ps -a -q)

完全是因为这是Linux(bash / sh)语法!

您应该将其替换为以下内容:

bat '''
  FOR /F "tokens=* USEBACKQ" %%F IN (`docker ps -a -q`) DO (
   SET var=%%F
  )
 docker rm -f %var% 
'''

或者任何将第一个docker命令的输出放入变量中并用于删除容器的Windows技巧。

相关问题