3 # This script installs the bundle to Docker Machine instances, for the purpose
4 # of testing the latest Docker with Swarm mode enabled.
5 # Do not use in production.
7 # Requirements (on host to run this script)
9 # - Docker Machine is installed
10 # - GNU tar is installed
12 # Requirements (on Docker machine instances)
13 # - Docker can be managed via one of `systemctl`, `service`, or `/etc/init.d/docker`
23 BUNDLE="bundles/$(cat VERSION)"
26 # prefer dynbinary if exists
27 for f in dockerd docker-proxy; do
28 if [ -d $BUNDLE/dynbinary-daemon ]; then
29 echo $BUNDLE/dynbinary-daemon/$f
31 echo $BUNDLE/binary-daemon/$f
34 for f in docker-containerd docker-containerd-ctr docker-containerd-shim docker-init docker-runc; do
35 echo $BUNDLE/binary-daemon/$f
37 if [ -d $BUNDLE/dynbinary-client ]; then
38 echo $BUNDLE/dynbinary-client/docker
40 echo $BUNDLE/binary-client/docker
46 # NOTE: `docker-machine ssh $m sh -c "foo bar"` does not work
47 # (but `docker-machine ssh $m sh -c "foo\ bar"` works)
48 # Anyway we avoid using `sh -c` here for avoiding confusion
49 cat <<EOF | docker-machine ssh $m sudo sh
50 if command -v systemctl > /dev/null; then
52 elif command -v service > /dev/null; then
54 elif [ -x /etc/init.d/docker ]; then
55 /etc/init.d/docker $op
57 echo "not sure how to control the docker daemon"
65 script='dirname $(dirname $(which dockerd))'
66 echo $script | docker-machine ssh $m sh
71 echo "$m: detecting docker"
72 prefix=$(detect_prefix $m)
73 echo "$m: detected docker on $prefix"
74 echo "$m: stopping docker"
75 control_docker $m stop
76 echo "$m: installing docker"
77 # NOTE: GNU tar is required because we use --transform here
78 # TODO: compression (should not be default)
79 tar ch --transform 's/.*\///' $files | docker-machine ssh $m sudo tar Cx $prefix/bin
80 echo "$m: starting docker"
81 control_docker $m start
86 command -v docker-machine > /dev/null || errexit "docker-machine not installed"
87 ( tar --version | grep GNU > /dev/null ) || errexit "GNU tar not installed"
95 echo "Files to be installed:"
96 for f in $files; do echo $f; done
98 for m in $machines; do
99 install_to $m $files &
103 for pid in ${pids[@]}; do
104 wait $pid || { status=$?; echo "background process $pid failed with exit status $status"; }
109 errexit "Usage: $0 install MACHINES"