2
0

docker_helpers.bash 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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 ip of docker container $1
  14. function docker_id {
  15. docker inspect --format '{{ .ID }}' $1
  16. }
  17. # get the running state of container $1
  18. # → true/false
  19. # fails if the container does not exist
  20. function docker_running_state {
  21. docker inspect -f {{.State.Running}} $1
  22. }
  23. # get the docker container $1 PID
  24. function docker_pid {
  25. docker inspect --format {{.State.Pid}} $1
  26. }
  27. # asserts logs from container $1 contains $2
  28. function docker_assert_log {
  29. local -r container=$1
  30. shift
  31. run docker logs $container
  32. assert_output -p "$*"
  33. }
  34. # wait for a container to produce a given text in its log
  35. # $1 container
  36. # $2 timeout in second
  37. # $* text to wait for
  38. function docker_wait_for_log {
  39. local -r container=$1
  40. local -ir timeout_sec=$2
  41. shift 2
  42. retry $(( $timeout_sec * 2 )) .5s docker_assert_log $container "$*"
  43. }
  44. # Create a docker container named $1 which exposes the docker host unix
  45. # socket over tcp on port 2375.
  46. #
  47. # $1 container name
  48. function docker_tcp {
  49. local container_name="$1"
  50. docker_clean $container_name
  51. docker run -d \
  52. --label bats-type="socat" \
  53. --name $container_name \
  54. --expose 2375 \
  55. -v /var/run/docker.sock:/var/run/docker.sock \
  56. rancher/socat-docker
  57. docker run --label bats-type="docker" --link "$container_name:docker" docker:1.10 version
  58. }