From d538fb055b1ba63181c779c189a5f17e796a8b4b Mon Sep 17 00:00:00 2001 From: dvn Date: Wed, 1 Aug 2018 17:24:40 +0200 Subject: docker: Add a docker quick-start directory --- docker/README.md | 130 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) create mode 100644 docker/README.md (limited to 'docker/README.md') diff --git a/docker/README.md b/docker/README.md new file mode 100644 index 000000000..4e0e6b951 --- /dev/null +++ b/docker/README.md @@ -0,0 +1,130 @@ +# gnunet-docker +A Dockerfile (and maybe later docker-compose.yml) for getting a running GNUnet docker container. + +> This README and parts of the Dockerfile were adapted from https://github.com/compiaffe/gnunet-docker + + +## Build it +This will take quite a while and will consume a bit of data. + +```bash +docker build -t gnunet . +``` + +## Start it from the newly created gnunet image +Start a container from `gnunet` image, which can access /dev/net/tun, has access to the host network. We are going to name it `gnunet1`. + +Note the `--rm` that will delete the container as soon as you stop it and `-ti` gives you an interactive terminal. + +#### Linux Users +```bash +docker run \ + --rm \ + -ti \ + --privileged \ + --name gnunet1 \ + --net=host \ + -v /dev/net/tun:/dev/net/tun \ + gnunet +``` + +#### Mac Users +```bash +docker run \ + --rm \ + -it \ + --privileged \ + --name gnunet1 \ + -e LOCAL_PORT_RANGE='40001 40200' \ + -e GNUNET_PORT=2086 \ + -p 2086:2086 \ + -p 2086:2086/udp \ + -p40001-40200:40001-40200 \ + -p40001-40200:40001-40200/udp \ + gnunet +``` + +This terminal will keep on printing to screen at the moment. So go on in a new terminal please. + +Don't worry about warnings too much... + +## Check if you are connected +Open a new terminal and connect to the container we just started: + +```bash +docker exec -it gnunet1 gnunet-peerinfo -i +``` + +If you get a list of peers, all is good. + +## Multiple containers on the same host +### Running +#### Run Container 1 +```bash +export GPORT=2086 LPORT='40001-40200' GNAME=gnunet1 +docker run \ + --rm \ + -it \ + --privileged \ + -e GNUNET_PORT=$GPORT \ + -e LOCAL_PORT_RANGE="${LPORT/-/ }" \ + -p $GPORT:$GPORT \ + -p $GPORT:$GPORT/udp \ + -p$LPORT:$LPORT \ + -p$LPORT:$LPORT/udp \ + --name $GNAME \ + gnunet +``` + +#### Run Container 2 +```bash +export GPORT=2087 LPORT='40201-40400' GNAME=gnunet2 +docker run \ + --rm \ + -it \ + --privileged \ + -e GNUNET_PORT=$GPORT \ + -e LOCAL_PORT_RANGE="${LPORT/-/ }" \ + -p $GPORT:$GPORT \ + -p $GPORT:$GPORT/udp \ + -p$LPORT:$LPORT \ + -p$LPORT:$LPORT/udp \ + --name $GNAME \ + gnunet +``` + +### Testing cadet example +#### Container 1 +```bash +$ docker exec -it gnunet1 bash +$ gnunet-peerinfo -s +I am peer `VWPN1NZA6YMM866EJ5J2NY47XG692MQ6H6WASVECF0M18A9SCMZ0'. +$ gnunet-cadet -o asdasd +``` + +#### Container 2 +```bash +$ docker exec -it gnunet2 bash +$ gnunet-cadet VWPN1NZA6YMM866EJ5J2NY47XG692MQ6H6WASVECF0M18A9SCMZ0 asdasd +``` + +### Testing file sharing example +#### Container 1 +```bash +$ docker exec -it gnunet1 bash +$ echo 'test' > test.txt +$ gnunet-publish test.txt +Publishing `/test.txt' done. +URI is `gnunet://fs/chk/1RZ7A8TAQHMF8DWAGTSZ9CSA365T60C4BC6DDS810VM78D2Q0366CRX8DGFA29EWBT9BW5Y9HYD0Z1EAKNFNJQDJ04QQSGTQ352W28R.7MYB03GYXT17Z93ZRZRVV64AH9KPWFSVDEZGVE84YHD63XZFJ36B86M48KHTZVF87SZ05HBVB44PCXE8CVWAH72VN1SKYPRK1QN2C98.5'. +``` + +#### Container 2 +```bash +$ docker exec -it gnunet2 bash +$ gnunet-download -o out.file "gnunet://fs/chk/1RZ7A8TAQHMF8DWAGTSZ9CSA365T60C4BC6DDS810VM78D2Q0366CRX8DGFA29EWBT9BW5Y9HYD0Z1EAKNFNJQDJ04QQSGTQ352W28R.7MYB03GYXT17Z93ZRZRVV64AH9KPWFSVDEZGVE84YHD63XZFJ36B86M48KHTZVF87SZ05HBVB44PCXE8CVWAH72VN1SKYPRK1QN2C98.5" +100% [============================================================] +Downloading `out.file' done (0 b/s). +$ cat out.file +test +``` + -- cgit v1.2.3