1+ #! /bin/bash
2+
3+ set -e
4+
5+ # Optional: Import test library
6+ source dev-container-features-test-lib
7+
8+ echo " === Azure Linux Docker CE Test ==="
9+
10+ echo " 1. Verifying OS identification..."
11+ cat /etc/os-release | grep -i azure
12+
13+ echo " 2. Checking Docker installation..."
14+ docker --version || {
15+ echo " ERROR: Docker is not installed"
16+ exit 1
17+ }
18+
19+ echo " 3. Checking if Docker binaries exist..."
20+ which dockerd || echo " dockerd not in PATH"
21+ ls -la /usr/bin/docker* || echo " No docker binaries in /usr/bin"
22+ ls -la /usr/local/bin/docker* || echo " No docker binaries in /usr/local/bin"
23+
24+ echo " 4. Checking Docker service files..."
25+ ls -la /etc/systemd/system/docker* || echo " No systemd docker files"
26+ ls -la /usr/lib/systemd/system/docker* || echo " No system docker service files"
27+
28+ echo " 6. Checking Docker daemon status..."
29+ if ! docker info > /dev/null 2>&1 ; then
30+ echo " Docker daemon not running, starting it..."
31+
32+ # Check if docker-init script exists
33+ if [ -f " /usr/local/share/docker-init.sh" ]; then
34+ echo " Starting Docker using docker-init.sh..."
35+
36+ # Clear any existing log
37+ rm -f /tmp/dockerd.log
38+
39+ # Start docker-init in background
40+ nohup /usr/local/share/docker-init.sh > /tmp/docker-init.log 2>&1 &
41+
42+ # Wait for Docker to start with better debugging
43+ echo " Waiting for Docker daemon to start..."
44+ for i in {1..30}; do
45+ if docker info > /dev/null 2>&1 ; then
46+ echo " Docker daemon started successfully"
47+ break
48+ fi
49+ echo " Waiting... ($i /30)"
50+
51+ # Show dockerd logs if available
52+ if [ -f " /tmp/dockerd.log" ]; then
53+ echo " --- Recent dockerd.log entries ---"
54+ tail -5 /tmp/dockerd.log || echo " Could not read dockerd.log"
55+ echo " --- End of dockerd.log ---"
56+ fi
57+
58+ sleep 2
59+ done
60+
61+ # Final check with detailed error reporting
62+ if ! docker info > /dev/null 2>&1 ; then
63+ echo " ERROR: Docker daemon failed to start after 60 seconds"
64+ echo " "
65+ echo " === DEBUGGING INFORMATION ==="
66+ echo " "
67+ echo " 1. Docker init log:"
68+ cat /tmp/docker-init.log 2> /dev/null || echo " No docker-init.log found"
69+ echo " "
70+ echo " 2. Docker daemon log:"
71+ cat /tmp/dockerd.log 2> /dev/null || echo " No dockerd.log found"
72+ echo " "
73+ echo " 3. Process list:"
74+ ps aux | grep -E " (docker|containerd)" | grep -v grep || echo " No docker/containerd processes found"
75+ echo " "
76+ echo " 4. Network interfaces:"
77+ ip addr show || ifconfig || echo " Could not get network info"
78+ echo " "
79+ echo " 5. Mount points:"
80+ mount | grep -E " (docker|container)" || echo " No docker-related mounts"
81+ echo " "
82+ echo " 6. SELinux status:"
83+ if command -v getenforce > /dev/null 2>&1 ; then
84+ getenforce || echo " SELinux command failed"
85+ else
86+ echo " SELinux tools not available"
87+ fi
88+ echo " "
89+ echo " 7. Available storage:"
90+ df -h /var/lib/docker 2> /dev/null || df -h / || echo " Could not check storage"
91+ echo " "
92+ echo " 8. System resources:"
93+ free -h || echo " Could not check memory"
94+ echo " "
95+ echo " === END DEBUGGING ==="
96+ exit 1
97+ fi
98+ else
99+ echo " ERROR: docker-init.sh not found at /usr/local/share/docker-init.sh"
100+ ls -la /usr/local/share/ || echo " Could not list /usr/local/share/"
101+ exit 1
102+ fi
103+ else
104+ echo " Docker daemon is already running"
105+ fi
106+
107+ echo " 7. Testing basic Docker functionality..."
108+ docker info | head -10
109+
110+ echo " 8. Testing container execution..."
111+ docker run --rm alpine echo " Basic container test successful"
112+
113+ echo " === Docker CE test completed successfully ==="
0 commit comments