====== 在 Alpine Linux 3 底下安裝 docker + docker-compose ====== * 採用 alpine-standard-3.16.2-x86_64.iso 在 PVE 內建立 VM * 預計安裝與配置: * CPU:2vcore / RAM:4GB / Disk:32GB ===== Alpine 安裝後首次設定 ===== * 使用 root 直接登入(不須密碼)後執行 setup-alpine * keyboard layout : none * hostname : alpine-vm * eth0 : * ip : 192.168.11.231 * netmask : 255.255.255.0 * gateway : 192.168.11.1 * DNS domain name : * DNS nameserver : 8.8.8.8 * root New Password : ****** * timezone : Asia/Taipei * Proxy : none * mirror : 1 * Setup a user : no * ssh server : openssh * Allow root ssh login : yes * ssh key : none * disk : sda * to use it : lvm * to use it : sys * Erase disk and continue : y * reboot ===== 安裝與設定 docker docker-compoes ===== * 設定 /etc/apk/repositories : http://dl-cdn.alpinelinux.org/alpine/v3.19/main http://dl-cdn.alpinelinux.org/alpine/v3.19/community : * 安裝 docker docker-compose apk update apk upgrade --available && sync apk add docker docker-cli-compose * 設定開機啟動與啟動 docker 服務 rc-service docker start rc-update add docker ===== 其他處理議題 ===== * 非 root 使用 docker 的權限設定 * 參考 - https://superuser.com/questions/1395473/usermod-equivalent-for-alpine-linux * Exp. jonathan 可以執行 docker 權限 su - root addgroup jonathan docker * 在 PVE7 的 LXC 內無法啟動 docker 服務 * 參考 - https://forum.proxmox.com/threads/run-docker-inside-lxc.112004/ - https://forum.proxmox.com/threads/docker-failed-to-register-layer-applylayer-exit-status-1-stdout-stderr-unlinkat-var-log-apt-invalid-argument.119954/ * 需要在 /etc/pve/lxc/ID.conf 內增加 lxc.apparmor.profile: unconfined lxc.cap.drop: 這樣才能啟動 docker 服務 * 需要在 /etc/docker/daemon.json 內設定 "storage-driver": "vfs" 才能將拉下來的 docker images 寫入 * 如果擔心 docker log 長太大也可以在 /etc/docker/daemon.json 內設定自動分割與刪除 Exp. log size 最大 10m, 保留最近 3 份 { "storage-driver": "vfs", "log-opts": {"max-size": "10m", "max-file": "3"} } ===== 參考網址 ===== * https://www.how2shout.com/linux/how-to-install-docker-engine-on-alpine-linux/ * https://collabnix.com/how-to-install-the-latest-version-of-docker-compose-on-alpine-linuxin-2022/ * https://stackoverflow.com/questions/42510002/docker-how-to-clear-the-logs-properly-for-a-docker-container {{tag>alpine docker docker-compose}}