summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--roles/lxc-docker-alpine/files/1-cgroup-docker.start20
-rw-r--r--roles/lxc-docker-alpine/main.yml34
2 files changed, 54 insertions, 0 deletions
diff --git a/roles/lxc-docker-alpine/files/1-cgroup-docker.start b/roles/lxc-docker-alpine/files/1-cgroup-docker.start
new file mode 100644
index 0000000..15c2172
--- /dev/null
+++ b/roles/lxc-docker-alpine/files/1-cgroup-docker.start
@@ -0,0 +1,20 @@
+# https://forum.proxmox.com/threads/docker-daemon-running-in-alpine-container-solved.58999/
+
+# remove dirs for failed mounts
+rmdir /sys/fs/cgroup/cpu && rmdir /sys/fs/cgroup/cpuacct && rmdir /sys/fs/cgroup/net_cls && rmdir /sys/fs/cgroup/net_prio
+
+# mount missing cgroups (Ubuntu style)
+mkdir "/sys/fs/cgroup/cpu,cpuacct"
+mount -n -t cgroup -o "nodev,noexec,nosuid,cpu,cpuacct" "cpu,cpuacct" "/sys/fs/cgroup/cpu,cpuacct"
+ln -s "cpu,cpuacct" /sys/fs/cgroup/cpu
+ln -s "cpu,cpuacct" /sys/fs/cgroup/cpuacct
+
+mkdir "/sys/fs/cgroup/net_cls,net_prio"
+mount -n -t cgroup -o "nodev,noexec,nosuid,net_cls,net_prio" "net_cls,net_prio" "/sys/fs/cgroup/net_cls,net_prio"
+ln -s "net_cls,net_prio" /sys/fs/cgroup/net_cls
+ln -s "net_cls,net_prio" /sys/fs/cgroup/net_prio
+
+# mount systemd cgroup (Alpine mounts openrc, but Docker requires systemd...)
+# (based on hint at https://k9s.hatenablog.jp/entry/2019/06/16/075741)
+mkdir /sys/fs/cgroup/systemd
+mount -n -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd
diff --git a/roles/lxc-docker-alpine/main.yml b/roles/lxc-docker-alpine/main.yml
new file mode 100644
index 0000000..0032397
--- /dev/null
+++ b/roles/lxc-docker-alpine/main.yml
@@ -0,0 +1,34 @@
+---
+# Target: alpine3.10
+# Host: debian arch
+- name: Install Docker on Alpine LXC Container (Debian Host)
+ hosts: lxc_docker_alpine
+ tasks:
+ - name: Installing Docker
+ apk:
+ state: present
+ update_cache: yes
+ name:
+ - docker
+ - docker-py
+ - name: Ensuring Docker has been started
+ service:
+ name: docker
+ state: started
+ enabled: yes
+ - name: Copying cgroups mount script to local.d
+ copy:
+ src: 1-cgroup-docker.start
+ dest: /etc/local.d/1-cgroup-docker.start
+ mode: '0700'
+ - name: Ensuring local service has been started
+ service:
+ name: local
+ state: started
+ enabled: yes
+ - name: Running hello world test
+ shell: docker run hello-world && touch /tmp/.docker-success
+ register: output
+ args:
+ creates: /tmp/.docker-success
+ - debug: var=output \ No newline at end of file