This repository has been archived by the owner on Feb 10, 2022. It is now read-only.
/
ctl
executable file
·138 lines (118 loc) · 4.13 KB
/
ctl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
#!/bin/bash
set -e # exit immediately if a simple command exits with a non-zero status
set -u # exit when using non-initialized environment variable
# Setup common env vars and folders
source /var/vcap/packages/bosh-helpers/ctl_setup.sh 'docker'
export DOCKER_PID_FILE=${DOCKER_PID_DIR}/docker.pid
export PATH="/var/vcap/packages/docker/bin:$PATH"
case $1 in
start)
pid_guard ${DOCKER_PID_FILE} ${JOB_NAME}
# Install aufs-tools
dpkg -i /var/vcap/packages/docker/aufs-tools_20120411-3_amd64.deb
# Create docker data store
if [ ! -d ${DOCKER_STORE_DIR}/docker ]; then
mkdir -p ${DOCKER_STORE_DIR}/docker
chmod 770 ${DOCKER_STORE_DIR}/docker
fi
# Set ulimits
ulimit -n ${DOCKER_ULIMIT_NOFILE}
# Set vm.max_map_count
[ -n "${DOCKER_VM_MAX_MAP_COUNT}" ] && sysctl -w vm.max_map_count=${DOCKER_VM_MAX_MAP_COUNT}
# Mount cgroupfs hierarchy
${JOB_DIR}/bin/cgroupfs-mount
# Setup ssh env vars
${JOB_DIR}/bin/setup-user-env
# Create network bridge
if [ -n "${DOCKER_BRIDGE_NAME:-}" ]; then
set +e
ip link delete docker0
ip link delete ${DOCKER_BRIDGE_NAME}
/var/vcap/packages/docker/sbin/brctl addbr ${DOCKER_BRIDGE_NAME}
ip addr add ${DOCKER_BRIDGE_CIDR} dev ${DOCKER_BRIDGE_NAME}
ip link set dev ${DOCKER_BRIDGE_NAME} up
set -e
fi
# Enable shared_mounts
[ "${DOCKER_SHARED_MOUNTS_ENABLE}" = "true" ] && mount --make-shared /
# Start Docker daemon
exec dockerd \
${DOCKER_BRIDGE:-} \
${DOCKER_DEBUG} \
${DOCKER_DEFAULT_GATEWAY:-} \
${DOCKER_DEFAULT_GATEWAY_V6:-} \
${DOCKER_DEFAULT_ULIMITS:-} \
${DOCKER_DNS_SERVERS:-} \
${DOCKER_DNS_OPTIONS:-} \
${DOCKER_DNS_SEARCH:-} \
${DOCKER_EXEC_OPTIONS:-} \
--group vcap \
--data-root ${DOCKER_STORE_DIR}/docker \
--host unix://${DOCKER_PID_DIR}/docker.sock \
${DOCKER_ICC} \
${DOCKER_INSECURE_REGISTRIES:-} \
${DOCKER_IP:-} \
${DOCKER_IPFORWARD} \
${DOCKER_IPMASQ} \
${DOCKER_IPTABLES} \
${DOCKER_IPV6} \
${DOCKER_LABELS:-} \
${DOCKER_LIVE_RESTORE:-} \
${DOCKER_LOG_LEVEL} \
${DOCKER_LOG_DRIVER:-} \
${DOCKER_LOG_OPTIONS:-} \
${DOCKER_MTU:-} \
--pidfile ${DOCKER_PID_FILE} \
${DOCKER_REGISTRY_MIRRORS:-} \
${DOCKER_SELINUX_ENABLED} \
${DOCKER_STORAGE_DRIVER:-} \
${DOCKER_STORAGE_OPTIONS:-} \
${DOCKER_TCP:-} \
${DOCKER_TLS_VERIFY_OPTION:-} \
${DOCKER_TLS_CACERT:-} \
${DOCKER_TLS_CERT:-} \
${DOCKER_TLS_KEY:-} \
${DOCKER_USERLAND_PROXY} \
>>${DOCKER_LOG_DIR}/${OUTPUT_LABEL}.stdout.log \
2>>${DOCKER_LOG_DIR}/${OUTPUT_LABEL}.stderr.log
;;
stop)
# Stop Docker containers
echo "Stopping docker containers..."
containers="$(/var/vcap/packages/docker/bin/docker --host unix://${DOCKER_PID_DIR}/docker.sock ps -q)"
if [[ ! -z $containers ]]; then
for container in $containers
do
echo "Stopping docker container ${container}"
/var/vcap/packages/docker/bin/docker --host unix://${DOCKER_PID_DIR}/docker.sock stop ${container}
done
fi
# Stop Docker daemon
echo -n "Stopping docker daemon..."
kill_and_wait ${DOCKER_PID_FILE}
echo "DEBUG: Contents of /proc/mounts after stopping docker"
cat /proc/mounts
mounts=$(cat /proc/mounts | grep "/var/vcap/store/docker/docker/${DOCKER_STORAGE_DRIVER_VALUE}/.*" | awk '{print $2}')
for mount in $mounts; do
echo "Unmounting $mount"
umount $mount
done
if [[ -d /var/vcap/store/docker/docker/${DOCKER_STORAGE_DRIVER_VALUE} ]]; then
set +e
echo "Unmounting /var/vcap/store/docker/docker/${DOCKER_STORAGE_DRIVER_VALUE}"
umount /var/vcap/store/docker/docker/${DOCKER_STORAGE_DRIVER_VALUE}
set -e
fi
if [[ -d /var/vcap/store/docker/docker ]]; then
set +e
echo "Unmounting /var/vcap/store/docker/docker"
umount /var/vcap/store/docker/docker
set -e
fi
;;
*)
echo "Usage: $0 {start|stop}"
exit 1
;;
esac
exit 0