diff options
| author | Bruce Ashfield <bruce.ashfield@gmail.com> | 2026-01-23 22:32:07 -0500 |
|---|---|---|
| committer | Bruce Ashfield <bruce.ashfield@gmail.com> | 2026-02-09 03:34:12 +0000 |
| commit | 5063d6f0e9e25a8bde17bd3b89ee3f0f88b5f85b (patch) | |
| tree | 0caa4921b9924421563fe49fc288ca13ef4b8aa2 /recipes-containers/vcontainer | |
| parent | 1d53c86794b202bb9f42eb45f476ab08208ca8d8 (diff) | |
| download | meta-virtualization-5063d6f0e9e25a8bde17bd3b89ee3f0f88b5f85b.tar.gz | |
vdkr-init: improve Docker daemon startup logging and error handling
Improve debugging capabilities when Docker daemon fails to start:
- Log dockerd output to /var/log/docker.log instead of /dev/null
- Capture docker info exit code and output for diagnostics
- Show docker info error on every 10th iteration while waiting
- Include last docker info output and docker.log tail on failure
- Extend sleep on failure from 2s to 5s for log review
Signed-off-by: Bruce Ashfield <bruce.ashfield@gmail.com>
Diffstat (limited to 'recipes-containers/vcontainer')
| -rwxr-xr-x | recipes-containers/vcontainer/files/vdkr-init.sh | 22 |
1 files changed, 17 insertions, 5 deletions
diff --git a/recipes-containers/vcontainer/files/vdkr-init.sh b/recipes-containers/vcontainer/files/vdkr-init.sh index 67465138..084a8791 100755 --- a/recipes-containers/vcontainer/files/vdkr-init.sh +++ b/recipes-containers/vcontainer/files/vdkr-init.sh | |||
| @@ -171,7 +171,7 @@ start_dockerd() { | |||
| 171 | DOCKER_OPTS="$DOCKER_OPTS --containerd=/run/containerd/containerd.sock" | 171 | DOCKER_OPTS="$DOCKER_OPTS --containerd=/run/containerd/containerd.sock" |
| 172 | fi | 172 | fi |
| 173 | 173 | ||
| 174 | /usr/bin/dockerd $DOCKER_OPTS >/dev/null 2>&1 & | 174 | /usr/bin/dockerd $DOCKER_OPTS >/var/log/docker.log 2>&1 & |
| 175 | DOCKER_PID=$! | 175 | DOCKER_PID=$! |
| 176 | log "Docker daemon started (PID: $DOCKER_PID)" | 176 | log "Docker daemon started (PID: $DOCKER_PID)" |
| 177 | 177 | ||
| @@ -185,26 +185,38 @@ start_dockerd() { | |||
| 185 | if ! kill -0 $DOCKER_PID 2>/dev/null; then | 185 | if ! kill -0 $DOCKER_PID 2>/dev/null; then |
| 186 | echo "===ERROR===" | 186 | echo "===ERROR===" |
| 187 | echo "Docker daemon died after $i iterations" | 187 | echo "Docker daemon died after $i iterations" |
| 188 | echo "Docker log:" | ||
| 188 | cat /var/log/docker.log 2>/dev/null || true | 189 | cat /var/log/docker.log 2>/dev/null || true |
| 189 | dmesg | tail -20 2>/dev/null || true | 190 | dmesg | tail -20 2>/dev/null || true |
| 190 | sleep 2 | 191 | sleep 2 |
| 191 | reboot -f | 192 | reboot -f |
| 192 | fi | 193 | fi |
| 193 | 194 | ||
| 194 | if /usr/bin/docker info >/dev/null 2>&1; then | 195 | # Try docker info and capture any error |
| 196 | DOCKER_INFO_OUT=$(/usr/bin/docker info 2>&1) | ||
| 197 | DOCKER_INFO_RC=$? | ||
| 198 | if [ $DOCKER_INFO_RC -eq 0 ]; then | ||
| 195 | log "Docker daemon is ready!" | 199 | log "Docker daemon is ready!" |
| 196 | DOCKER_READY=true | 200 | DOCKER_READY=true |
| 197 | break | 201 | break |
| 198 | fi | 202 | fi |
| 199 | 203 | ||
| 200 | log "Waiting... ($i/60)" | 204 | log "Waiting... ($i/60) - docker info rc=$DOCKER_INFO_RC" |
| 205 | # Show first line of error on every 10th iteration | ||
| 206 | if [ $((i % 10)) -eq 0 ]; then | ||
| 207 | echo "docker info error: $(echo "$DOCKER_INFO_OUT" | head -1)" | ||
| 208 | fi | ||
| 201 | sleep 2 | 209 | sleep 2 |
| 202 | done | 210 | done |
| 203 | 211 | ||
| 204 | if [ "$DOCKER_READY" != "true" ]; then | 212 | if [ "$DOCKER_READY" != "true" ]; then |
| 205 | echo "===ERROR===" | 213 | echo "===ERROR===" |
| 206 | echo "Docker failed to start" | 214 | echo "Docker failed to start after 60 attempts" |
| 207 | sleep 2 | 215 | echo "Last docker info output:" |
| 216 | echo "$DOCKER_INFO_OUT" | head -5 | ||
| 217 | echo "Docker log tail:" | ||
| 218 | tail -20 /var/log/docker.log 2>/dev/null || true | ||
| 219 | sleep 5 | ||
| 208 | reboot -f | 220 | reboot -f |
| 209 | fi | 221 | fi |
| 210 | } | 222 | } |
