Setup Alpine Linux VM under Proxmox with Docker
Sample Values and Versions Used:
- Proxmox Name:
pve1 - Proxmox VM install storage:
vm_ct - Alpine Version:
3.23.2 - Alpine VM ID:
888 - Alpine Server Name:
srv-docker-01
1. Download ISO to Proxmox
Get Alpine Docker ISO to Proxmox (assuming pve1 with ISO Images enabled on local)
- Navigate to (Alpine Linux Downloads)[https://www.alpinelinux.org/downloads/]
- Right-Click and copy link Standard x86_64 image (for Proxmox install)
- (Standard 3.23.2)[https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-standard-3.23.2-x86_64.iso]
- In Proxmox, navigate by clicking through
pve1|local|ISO Images:- Click
Download from URL. - Paste
https://dl-cdn.alpinelinux.org/alpine/v3.23/releases/x86_64/alpine-standard-3.23.2-x86_64.isointo URL box. - Click
Query URL. - Click
Download.
- Click
2. Create VM with Alpine Linux
- Right-Click
pve1and chooseCreate VM.- General
- VM ID: 888
- Name: srv-docker-01
- Click
Next.
- OS
- Click
Next.
- Click
- System
- Select
Qemu Agent - Click
Next.
- Select
- Disks
- Storage: vm_ct
- Disk size (GiB): 256 GB (Min 4GB) # Might want to use 256 GB if hosting something like IMMICH container
- Click
Next.
- CPU
- Cores: 2
- Click
Next.
- Memory
- Memory (MiB): 4096 (Min 1GB)
- Click
Next.
- Network
- Bridge: vmbr0 (default).
- Click
Next.
- Confirm
- Click
Finish.
- Click
- General
3. Start Alpine VM and setup server
3.1 Setup Alpine
root # Default login - no password
setup-alpine # Start setup
Options: - keyb : us - variant : us - hostname: srv-docker-01 - network : (eth0) - ip addr : (dhcp) - manual : (n) - new pass: * - retype : * - tz : (utc) - proxy : (none) - mirrors : 1 - setup u : (no) - ssh svr : (openssh) - rootssh : (yes) - sshkey : (none) - disks : sda - diskuse : sys - erase : y
reboot
3.2 Optional: Create Static route for srv-docker-01 using required IP and MAC
ifconfig eth0 | grep -i "HWaddr" # Retrieve MAC as HWaddr
3.3 Unlock Community Repo
3.4 Optional: Update and Install packages (bash, sudo, vim, py3-pip)
``` bash title="Upgrade available packages apk upgrade --available
3.5 Install QEMU agent for Proxmox
- QEMU provides ability to report IP to Proxmox
#!/bin/sh
qemu-ga -d -p /dev/vport1p1 # port can be retrieved via 'ls /dev | grep vport'
4. Install Docker
apk add docker docker-cli-compose
rc-update add docker boot # Add docker service to start on boot
service docker start # Start docker service
id docker # show uid, gid, groups
getent group | grep docker # show docker group
cat /etc/passwd | grep docker # show docker user
4.1 Add docker user to sudoers
4.2 Optional in case of error: permission denied while trying to connect to the docker API at unix:///var/run/docker.sock
4.3 Create SSH key for docker (log in as docker)
su - docker # run as docker
cd # change to home folder
ssh-keygen -t ed25519 -C "docker@srv-docker-01" -f /home/docker/.ssh/id_ed25519 -N "" # gen key
4.4 Optional: add existing public key for docker user
5. Misc Client Config settings
syntax on
set background=dark
set number
colorscheme desert
set nocompatible
set showmode
export PS1="\[\033[0;33m\][\$(date +%Y-%m-%d)][\t]\[\033[0;36m\] [\u\[\033[0;37m\]@\[\033[0;36m\]\h]:\[\033[0;32m\]\w\[\033[0m\] \n$ "
alias ls='ls -la --color=auto'
#alias dps='docker ps --format "{{.ID}}\t{{.Names}} \t{{.Status}}\t\t{{.Ports}}"'
alias dps="docker ps -a --format 'table {{.ID}}\t{{.Names}}\t{{.Image}}\t{{.Status}}'"
alias dc='docker compose'
alias dcu='docker compose up -d'
alias dcl='docker compose logs -f'
alias dcd='docker compose down'
# dircolors --print-database
LS_COLORS=$LS_COLORS:'di=1;35:' ; export LS_COLORS
[alias]
st = status
lg = log --pretty=format:'%C(red bold)%h%C(reset) - [%C(green bold)%ci%C(reset) %C(magenta bold)%an%C(reset)] %C(yellow bold)%d%Creset %C(white bold)%s%C(reset)'