add docker in docker docs.

This commit is contained in:
Miroslav Šedivý
2021-07-29 22:43:37 +02:00
parent 4bd486714d
commit 8e0b69ad4a
6 changed files with 119 additions and 0 deletions
+1
View File
@@ -0,0 +1 @@
data
+7
View File
@@ -0,0 +1,7 @@
FROM docker:dind
COPY nrooms-* /
VOLUME [ "/data" ]
ENTRYPOINT [ "/nrooms-entrypoint.sh" ]
+18
View File
@@ -0,0 +1,18 @@
# dind: Docker in Docker
Neko rooms manages neko containers in docker and routes them using traefik. This is whole implementation put inside docker, that runs in docker. It is additional layer of security, but still not perfect (because dind requires `--privileged`).
This overhead of putting docker in docker can have negative impact on the usability, therefore users are encouraged to **not deploy neko-rooms using dind** method.
However, there are some usecases, when this might come in handy:
- just testing out neko-rooms
- absolutely needed additional security layer
- developing neko-rooms
## Pull images
In order to pull new images run:
```sh
docker-compose exec neko-rooms docker pull m1k1o/neko:chromium
```
+19
View File
@@ -0,0 +1,19 @@
version: "3"
services:
neko-rooms:
build: "./"
restart: "unless-stopped"
privileged: true
environment:
- "TZ=Europe/Vienna"
- "NEKO_ROOMS_EPR=59000-59049"
- "NEKO_ROOMS_NAT1TO1=10.8.0.1" # IP address of your server
- "NEKO_ROOMS_INSTANCE_URL=http://10.8.0.1:8080/" # external URL
volumes:
- ./data/storage:/data
- ./data/docker:/var/lib/docker
- ./data/certs:/certs
ports:
- 8080:80
- 59000-59049:59000-59049/udp
+4
View File
@@ -0,0 +1,4 @@
#!/bin/sh
/nrooms-start.sh &
source /usr/local/bin/dockerd-entrypoint.sh
+70
View File
@@ -0,0 +1,70 @@
#!/bin/sh
#
# wait for docker to start
#
until docker ps
do
echo "waiting for docker..."
sleep 1
done
#
# create traefik network
#
docker network create --attachable traefik
#
# (re)start traefik
#
docker stop traefik
docker rm traefik
docker run -d \
--restart unless-stopped \
--name traefik \
--network=traefik \
-p "80:80" \
-v "/var/run/docker.sock:/var/run/docker.sock:ro" \
-e "TZ=${TZ}" \
traefik:2.4 \
--providers.docker=true \
--providers.docker.watch=true \
--providers.docker.exposedbydefault=false \
--providers.docker.network=traefik \
--entrypoints.web.address=:80;
# pull some neko images...
docker pull m1k1o/neko:firefox
docker pull m1k1o/neko:chromium
#
# (re)start neko-rooms
#
docker stop nrooms
docker rm nrooms
docker run -t \
--restart unless-stopped \
--name nrooms \
--network=traefik \
-v "/var/run/docker.sock:/var/run/docker.sock" \
-v "/data:/data" \
-e "TZ=${TZ}" \
-e "NEKO_ROOMS_EPR=${NEKO_ROOMS_EPR}" \
-e "NEKO_ROOMS_NAT1TO1=${NEKO_ROOMS_NAT1TO1}" \
-e "NEKO_ROOMS_INSTANCE_URL=${NEKO_ROOMS_INSTANCE_URL}" \
-e "NEKO_ROOMS_TRAEFIK_DOMAIN=*" \
-e "NEKO_ROOMS_TRAEFIK_ENTRYPOINT=web" \
-e "NEKO_ROOMS_TRAEFIK_NETWORK=traefik" \
-e "NEKO_ROOMS_STORAGE_ENABLED=true" \
-e "NEKO_ROOMS_STORAGE_INTERNAL=/data" \
-e "NEKO_ROOMS_STORAGE_EXTERNAL=/data" \
-l "traefik.enable=true" \
-l "traefik.http.services.neko-rooms-frontend.loadbalancer.server.port=8080" \
-l "traefik.http.routers.neko-rooms.entrypoints=web" \
-l 'traefik.http.routers.neko-rooms.rule=HostRegexp(`{host:.+}`)' \
-l 'traefik.http.routers.neko-rooms.priority=1' \
m1k1o/neko-rooms:latest;