docker_helpers.bash 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. ## functions to help deal with docker
  2. # Removes container $1
  3. function docker_clean {
  4. docker kill $1 &>/dev/null ||:
  5. sleep .25s
  6. docker rm -vf $1 &>/dev/null ||:
  7. sleep .25s
  8. }
  9. # get the ip of docker container $1
  10. function docker_ip {
  11. docker inspect --format '{{ .NetworkSettings.IPAddress }}' $1
  12. }
  13. # get the running state of container $1
  14. # → true/false
  15. # fails if the container does not exist
  16. function docker_running_state {
  17. docker inspect -f {{.State.Running}} $1
  18. }
  19. # get the docker container $1 PID
  20. function docker_pid {
  21. docker inspect --format {{.State.Pid}} $1
  22. }
  23. # asserts logs from container $1 contains $2
  24. function docker_assert_log {
  25. local -r container=$1
  26. shift
  27. run docker logs $container
  28. assert_output -p "$*"
  29. }
  30. # wait for container $2 to contain a given text in its log
  31. # $1 container
  32. # $2 timeout in second
  33. # $* text to wait for
  34. function docker_wait_for_log {
  35. local -r container=$1
  36. shift
  37. local -ir timeout_sec=$1
  38. shift
  39. retry $(( $timeout_sec * 2 )) .5s docker_assert_log $container "$*"
  40. }
  41. # Create a docker container named $1 which exposes the docker host unix
  42. # socket over tcp on port 2375.
  43. #
  44. # $1 container name
  45. function docker_tcp {
  46. local container_name="$1"
  47. docker_clean $container_name
  48. docker run -d \
  49. --name $container_name \
  50. --expose 2375 \
  51. -v /var/run/docker.sock:/var/run/docker.sock \
  52. rancher/socat-docker
  53. docker -H tcp://$(docker_ip $container_name):2375 version
  54. }