Skip to main content

Docker Issues

Symptom:
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. 
Is the docker daemon running?
Solution:Linux:
sudo systemctl start docker
sudo systemctl enable docker  # Start on boot
macOS:
  1. Open Docker Desktop from Applications
  2. Wait for the whale icon to appear in the menu bar
  3. Verify with: docker ps
Windows:
  1. Launch Docker Desktop from Start menu
  2. Wait for “Docker Desktop is running” notification
  3. Verify with: docker ps
Verification:
docker --version
docker ps  # Should not show error
Symptom:
Error starting userland proxy: listen tcp4 127.0.0.1:8050: 
bind: address already in use
Cause: Another application or previous PROTÉGÉ PD instance is using port 8050.Solution 1: Find and stop the processLinux/macOS:
# Find process using port 8050
lsof -i :8050

# Kill the process (replace PID with actual process ID)
kill -9 <PID>
Windows:
# Find process using port 8050
netstat -ano | findstr :8050

# Kill the process (replace PID with actual process ID)
taskkill /PID <PID> /F
Solution 2: Use a different port
docker run --rm \
  --mount type=bind,source=/your/path/,target=/root/. \
  --name protege -p 127.0.0.1:8051:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  protege-pd -s myseqs.fna
Then access the application at http://127.0.0.1:8051Solution 3: Stop previous PROTÉGÉ container
docker stop protege
docker rm protege  # If not using --rm flag
Symptom:
Got permission denied while trying to connect to the Docker daemon socket
Linux Solution:
# Add your user to docker group
sudo usermod -aG docker $USER

# Log out and back in, or use:
newgrp docker

# Verify
docker ps
Temporary workaround:
sudo docker run --rm \
  --mount type=bind,source=/your/path/,target=/root/. \
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  protege-pd -s myseqs.fna
Using sudo is not recommended for regular Docker usage. Fix permissions instead.

File Path and Mounting Issues

Symptom:
FileNotFoundError: [Errno 2] No such file or directory: 'myseqs.fna'
Cause: File not in mounted directory or incorrect path specified.Solution:
  1. Verify file exists:
ls -la /your/files/path/myseqs.fna
  1. Use absolute paths for mounting:
# Bad (relative path)
--mount type=bind,source=./data,target=/root/.

# Good (absolute path)
--mount type=bind,source=/home/user/data,target=/root/.
  1. Verify mount inside container:
docker run --rm \
  --mount type=bind,source=/home/user/data,target=/root/. \
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  ls -la /root/
  1. Use current directory shortcut:
cd /path/to/your/sequences
docker run --rm \
  --mount type=bind,source=$(pwd),target=/root/. \
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  protege-pd -s myseqs.fna
Symptom:
FileNotFoundError: [Errno 2] No such file or directory: 'myseqs.fna'
Windows-specific solutions:
  1. Use forward slashes in Windows paths:
# Bad
--mount type=bind,source=C:\Users\Name\data,target=/root/.

# Good
--mount type=bind,source=C:/Users/Name/data,target=/root/.
  1. Enable drive sharing in Docker Desktop:
    • Open Docker Desktop Settings
    • Go to “Resources” → “File Sharing”
    • Add the drive containing your files (e.g., C:)
    • Click “Apply & Restart”
  2. PowerShell example:
docker run --rm `
  --mount type=bind,source=C:/Users/YourName/Documents/sequences,target=/root/. `
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 `
  ddelgadillo/protege_base:v1.0.2 `
  protege-pd -s myseqs.fna
  1. WSL2 users:
# Access Windows files from WSL2
cd /mnt/c/Users/YourName/sequences
docker run --rm \
  --mount type=bind,source=$(pwd),target=/root/. \
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  protege-pd -s myseqs.fna
Symptom:
OSError: [Errno 30] Read-only file system: 'sequences.csv'
Cause: Container cannot write output files to mounted directory.Solution:
  1. Check directory permissions:
ls -ld /your/files/path/
chmod 755 /your/files/path/  # If needed
  1. Ensure mount is not read-only:
# Add read-write explicitly (though it's default)
--mount type=bind,source=/your/path/,target=/root/.,readonly=false
  1. Check Docker Desktop settings (Mac/Windows):
    • Ensure file sharing is enabled for the directory
    • Restart Docker Desktop

MUSCLE Alignment Issues

Symptom:
FileNotFoundError: [Errno 2] No such file or directory: 'muscle_lin'
Cause: MUSCLE binary not in PATH or not executable.Solution:
  1. Verify MUSCLE is installed:
docker exec -it protege which muscle_lin
# Should output: /usr/local/bin/muscle_lin
  1. Check if executable:
docker exec -it protege ls -la /usr/local/bin/muscle_lin
# Should show: -rwxr-xr-x
  1. Manually install if missing:
docker exec -it protege bash
cd /usr/local/bin
wget https://github.com/ddelgadillod/ProtegePD/raw/main/muscle/muscle_lin
chmod +x muscle_lin
exit
  1. Rebuild image if persistent:
docker pull ddelgadillo/protege_base:v1.0.2
Symptom:
Killed
or
MemoryError
Cause: Insufficient memory allocated to Docker.Solution:
  1. Increase Docker memory (Docker Desktop):
    • Open Docker Desktop Settings
    • Go to “Resources” → “Advanced”
    • Increase Memory to at least 4GB (8GB for large datasets)
    • Click “Apply & Restart”
  2. Increase CPUs for faster processing:
--cpus 8  # Instead of 4
  1. Filter sequences before alignment:
    • Reduce redundancy in input sequences
    • Remove sequences with excessive gaps
    • Use representative sequences for large datasets
  2. Monitor resource usage:
docker stats protege
MUSCLE memory usage scales with sequence count and length. For >500 sequences, consider 8GB+ RAM.
Symptom:
Bio.Data.CodonTable.TranslationError: Codon 'ATN' is invalid
Cause: Input sequences contain:
  • Non-standard nucleotides (N, R, Y, etc.)
  • Incorrect reading frame
  • Sequence length not divisible by 3
Solution:
  1. Validate FASTA file:
# Check for non-ATGC characters
grep -v ">" myseqs.fna | grep -o "[^ATGC]" | sort -u
  1. Verify sequence lengths:
# All should be divisible by 3 for coding sequences
grep -v ">" myseqs.fna | awk '{print length($0)}'
  1. Clean sequences:
    • Remove ambiguous nucleotides
    • Ensure sequences are in-frame
    • Verify sequences are protein-coding genes
PROTÉGÉ PD expects protein-coding genes in nucleotide format. Ensure your sequences are correctly annotated coding sequences (CDS).

Web Interface Issues

Symptom:
  • “This site can’t be reached”
  • “Unable to connect”
  • “Connection refused”
Solution:
  1. Verify container is running:
docker ps
# Should show 'protege' container
  1. Check if port is mapped:
docker port protege
# Should show: 8050/tcp -> 127.0.0.1:8050
  1. Check container logs:
docker logs protege
# Should show: "Running on http://0.0.0.0:8050/"
  1. Wait for server startup:
    • Initial alignment can take 1-5 minutes
    • Watch logs: docker logs -f protege
    • Look for “Dash is running on http://0.0.0.0:8050/
  2. Try different browser:
    • Chrome: http://127.0.0.1:8050
    • Firefox: http://127.0.0.1:8050
    • Safari: http://127.0.0.1:8050
  3. Check firewall:
# Linux
sudo ufw allow 8050

# macOS
# System Preferences → Security & Privacy → Firewall → Allow Docker
Symptom:
  • White screen
  • “Application Error”
  • Browser tab becomes unresponsive
Solution:
  1. Check browser console (F12):
    • Look for JavaScript errors
    • Check Network tab for failed requests
  2. Restart container:
docker stop protege
docker run --rm \
  --mount type=bind,source=/your/path/,target=/root/. \
  --name protege -p 127.0.0.1:8050:8050 --cpus 4 \
  ddelgadillo/protege_base:v1.0.2 \
  protege-pd -s myseqs.fna
  1. Clear browser cache:
    • Chrome: Ctrl+Shift+Delete → Clear cache
    • Firefox: Ctrl+Shift+Delete → Clear cache
  2. Reduce dataset complexity:
    • Try with fewer sequences first
    • Increase consensus threshold: -c 95
  3. Check container resources:
docker stats protege
# Watch for memory/CPU spikes
Symptom:
  • Empty graphs
  • Missing data points
  • Layout issues
Solution:
  1. Wait for data processing:
    • Plots appear after alignment completes
    • Check console output for “CONTROL 5”, “CONTROL 6”, etc.
  2. Verify consensus calculation:
docker logs protege | grep "Consensus"
# Should show consensus positions
  1. Check for degeneracy filtering:
    • Application filters primers with 0 degeneracies
    • If no primers shown, try lower consensus: -c 80
  2. Browser compatibility:
    • Use modern browsers (Chrome 90+, Firefox 88+, Safari 14+)
    • Enable JavaScript
    • Disable ad blockers that might interfere
  3. Check CSV output:
ls -la /your/files/path/protege_consensus.csv
# Verify file was created and has content

Installation and Update Issues

Symptom:
Error response from daemon: Get https://registry-1.docker.io/v2/: 
net/http: TLS handshake timeout
Solution:
  1. Check internet connection:
ping registry-1.docker.io
  1. Restart Docker daemon:
# Linux
sudo systemctl restart docker

# Mac/Windows: Restart Docker Desktop
  1. Use Docker mirror (China/slow connections):
# Add to /etc/docker/daemon.json
{
  "registry-mirrors": ["https://mirror.gcr.io"]
}
  1. Pull with retry:
docker pull ddelgadillo/protege_base:v1.0.2 || \
docker pull ddelgadillo/protege_base:v1.0.2
Symptom:
ImportError: cannot import name 'X' from 'module'
ModuleNotFoundError: No module named 'dash'
Cause: Outdated image or corrupted installation.Solution:
  1. Pull latest image:
docker pull ddelgadillo/protege_base:v1.0.2
  1. Remove old images:
docker images | grep protege
docker rmi <IMAGE_ID>  # Remove old versions
  1. Verify Python packages:
docker run --rm ddelgadillo/protege_base:v1.0.2 pip3 list
# Check for: biopython 1.83, dash 2.14.2, pandas 2.2.0
  1. Rebuild from source:
git clone https://github.com/ddelgadillod/ProtegePD.git
cd ProtegePD
docker build -t protege-local:latest .

Output and Results Issues

Symptom:
  • Missing protege_consensus.csv
  • Missing sequences.csv
  • Missing alSequences.csv
Solution:
  1. Check container logs for errors:
docker logs protege | tail -50
  1. Verify write permissions:
ls -ld /your/files/path/
chmod 755 /your/files/path/
  1. Check if alignment completed:
docker logs protege | grep "Alignment length"
# Should show alignment statistics
  1. Run with verbose flag:
protege-pd -s myseqs.fna -v
  1. List files in container:
docker exec -it protege ls -la /root/
Symptom:
Empty plots after processing completes
Cause: Consensus threshold too strict or sequences too divergent.Solution:
  1. Lower consensus threshold:
protege-pd -s myseqs.fna -c 80  # Default is 90
  1. Adjust codon length:
protege-pd -s myseqs.fna -d 6  # Default is 7
  1. Check sequence diversity:
    • Too divergent: Consider using only closely related species
    • Too similar: Primers will have low specificity
  2. Review consensus CSV:
less protege_consensus.csv
# Check degeneracies column
Ideal primer degeneracy: 1-1024. Higher values indicate excessive sequence variation at that position.

Getting Additional Help

If your issue is not covered here:
  1. Check container logs:
    docker logs protege > protege_debug.log
    
  2. Gather system information:
    docker --version
    docker info
    uname -a  # Linux/Mac
    
  3. Report the issue:

Build docs developers (and LLMs) love