docker remote windows

This commit is contained in:
Dobromir Popov
2025-09-08 08:59:24 +03:00
parent a545714b34
commit c7a9a5c3a5
7 changed files with 831 additions and 2 deletions

View File

@@ -36,6 +36,196 @@ If you're using VS Code, the project now includes pre-configured tasks for easy
- ✅ Integrated terminal output in VS Code
- ✅ One-click building from the IDE
## 🐳 Remote Docker Access Options
You don't need to SSH as root every time! Here are several ways to use Docker remotely from another machine:
### Option 1: VS Code Docker Extension (Easiest - Recommended)
```bash
# On the build machine (where Docker is running) - Quick setup:
cd /mnt/shared/DEV/repos/d-popov.com/mines/rin/miner
./setup-remote-docker.sh
# Or manually:
sudo systemctl enable docker
sudo systemctl start docker
sudo usermod -aG docker $USER # Add user to docker group
```
**In VS Code on your local machine:**
1. Install "Docker" extension by Microsoft
2. Install "Remote-SSH" extension for SSH tunneling
3. Connect to build machine: `Ctrl+Shift+P` → "Remote-SSH: Connect to Host"
4. Use VS Code Docker extension to manage containers remotely
### Option 2: Docker Remote API (Advanced)
```bash
# On the build machine - enable Docker API over TCP:
sudo mkdir -p /etc/systemd/system/docker.service.d
sudo tee /etc/systemd/system/docker.service.d/override.conf > /dev/null <<EOF
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2376
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
# Secure with TLS (recommended for production):
sudo dockerd --tlsverify --tlscacert=ca.pem --tlscert=server-cert.pem --tlskey=server-key.pem -H=0.0.0.0:2376
```
**On your local machine:**
```bash
# Set Docker context to remote host
docker context create remote-build --docker "host=tcp://BUILD_MACHINE_IP:2376"
docker context use remote-build
# Now all docker commands work remotely
docker ps
docker run --rm cpuminer-windows-builder echo "Hello from remote!"
```
### Option 3: SSH Port Forwarding (Simple & Secure)
```bash
# On your local machine - forward Docker socket:
ssh -L localhost:2375:/var/run/docker.sock user@build-machine
# Or use SSH config (~/.ssh/config):
Host build-machine
HostName your-build-machine-ip
User your-username
LocalForward 2375 /var/run/docker.sock
```
**Then on your local machine:**
```bash
# Set DOCKER_HOST environment variable
export DOCKER_HOST=tcp://localhost:2375
# All docker commands now work through SSH tunnel
docker ps
docker run --rm cpuminer-windows-builder echo "Remote build ready!"
```
### Option 4: Docker Contexts (Clean Management)
```bash
# Create named context for your build machine
docker context create build-server --docker "host=ssh://user@build-machine"
# Switch between contexts easily
docker context use build-server
docker ps # Shows containers on build machine
docker context use default # Switch back to local
docker ps # Shows local containers
```
### Option 5: VS Code Dev Containers (Full Remote Development)
Create `.devcontainer/devcontainer.json`:
```json
{
"name": "RinHash Build Environment",
"dockerFile": "Dockerfile",
"context": "..",
"remoteUser": "vscode",
"mounts": [
"source=/var/run/docker.sock,target=/var/run/docker.sock,type=bind"
],
"extensions": [
"ms-vscode.vscode-docker",
"ms-vscode-remote.remote-ssh"
],
"postCreateCommand": "sudo usermod -aG docker vscode"
}
```
### Option 6: Docker Desktop Remote Connection (Windows 11)
**For Windows 11 users with Docker Desktop:**
#### Windows Setup:
1. **Install Docker Desktop for Windows:**
- Download from: https://www.docker.com/products/docker-desktop
- Enable WSL 2 integration during installation
2. **Enable Docker Remote API:**
- Open Docker Desktop → Settings → General
- Enable "Expose daemon on tcp://localhost:2375 without TLS"
3. **Install OpenSSH Client:**
- Windows 11 has OpenSSH built-in
- Enable in: Settings → Apps → Optional features → OpenSSH Client
#### Windows SSH Port Forwarding:
```cmd
REM Command Prompt:
ssh -L localhost:2375:/var/run/docker.sock user@build-machine-ip
REM PowerShell:
ssh -L localhost:2375:/var/run/docker.sock user@build-machine-ip
```
#### Windows Environment Setup:
```cmd
REM Command Prompt:
set DOCKER_HOST=tcp://localhost:2375
REM PowerShell:
$env:DOCKER_HOST = "tcp://localhost:2375"
```
#### Windows Docker Contexts:
```cmd
REM Create context for remote Linux machine:
docker context create build-server --docker "host=ssh://user@build-machine-ip"
REM Switch to remote context:
docker context use build-server
REM Test remote connection:
docker run --rm cpuminer-windows-builder echo "Windows remote Docker working!"
```
### 🔒 Security Recommendations
**For Production Use:**
- ✅ Use SSH tunneling instead of exposing Docker API directly
- ✅ Enable Docker TLS verification
- ✅ Use VPN for additional security layer
- ✅ Limit Docker API access to specific IP ranges
- ✅ Regularly rotate SSH keys and certificates
**Quick Start (Most Secure):**
**For Windows 11:**
```powershell
# On build machine - automated setup:
cd /mnt/shared/DEV/repos/d-popov.com/mines/rin/miner
./setup-remote-docker.sh
# On your Windows 11 machine - run setup script:
.\setup-remote-docker-windows.bat
# Or use PowerShell script:
.\setup-remote-docker-windows.ps1
```
**For Linux/Mac:**
```bash
# On build machine - automated setup:
cd /mnt/shared/DEV/repos/d-popov.com/mines/rin/miner
./setup-remote-docker.sh
# On your local machine:
ssh -L localhost:2375:/var/run/docker.sock user@build-machine
export DOCKER_HOST=tcp://localhost:2375
docker run --rm cpuminer-windows-builder echo "Ready for remote builds!"
```
📖 **Detailed Instructions:**
- **Windows 11:** See [REMOTE_DOCKER_README.md](REMOTE_DOCKER_README.md) for comprehensive setup guide
- **All Platforms:** Check [BUILD_GUIDE.md](BUILD_GUIDE.md) for additional remote access options
### 1. Build GPU Library (ROCm/HIP)
```bash
cd /mnt/shared/DEV/repos/d-popov.com/mines/rin/miner/gpu/RinHash-hip