docker_utils.go 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package main
  2. import (
  3. "fmt"
  4. "os/exec"
  5. "strings"
  6. )
  7. func deleteContainer(container string) error {
  8. container = strings.Replace(container, "\n", " ", -1)
  9. container = strings.Trim(container, " ")
  10. rmArgs := fmt.Sprintf("rm %v", container)
  11. rmSplitArgs := strings.Split(rmArgs, " ")
  12. rmCmd := exec.Command(dockerBinary, rmSplitArgs...)
  13. exitCode, err := runCommand(rmCmd)
  14. // set error manually if not set
  15. if exitCode != 0 && err == nil {
  16. err = fmt.Errorf("failed to remove container: `docker rm` exit is non-zero")
  17. }
  18. return err
  19. }
  20. func getAllContainers() (string, error) {
  21. getContainersCmd := exec.Command(dockerBinary, "ps", "-q", "-a")
  22. out, exitCode, err := runCommandWithOutput(getContainersCmd)
  23. if exitCode != 0 && err == nil {
  24. err = fmt.Errorf("failed to get a list of containers: %v\n", out)
  25. }
  26. return out, err
  27. }
  28. func deleteAllContainers() error {
  29. containers, err := getAllContainers()
  30. if err != nil {
  31. fmt.Println(containers)
  32. return err
  33. }
  34. if err = deleteContainer(containers); err != nil {
  35. return err
  36. }
  37. return nil
  38. }
  39. func deleteImages(images string) error {
  40. rmiCmd := exec.Command(dockerBinary, "rmi", images)
  41. exitCode, err := runCommand(rmiCmd)
  42. // set error manually if not set
  43. if exitCode != 0 && err == nil {
  44. err = fmt.Errorf("failed to remove image: `docker rmi` exit is non-zero")
  45. }
  46. return err
  47. }