====== 在 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}}