Docker
Install docker
This is a simple guide on how to install docker on a raspberry pi
[Make sure you have sudo access to the PI!!]
To install docker itself i recommend using the
documentation from docker the documentation has a convenience script seen bellow
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh
Then you need to allow your user to use docker commands without sudo
sudo usermod -aG docker $USER
Then you can either reboot or reload you server with the command bellow
newgrp docker
Example containers and configuration
In my favorite way to do docker compose files is a structure like this
/docker/[Projectname]/compose.yml
so we create the docker directory, allow the user to read and write in the directory and also creating a symbolic link to the directory in the home directory
sudo mkdir /docker
sudo chown $USER:$USER /docker
sudo ln -s /docker
Breakdown of the commands
- `sudo mkdir /docker`: Creates a new directory called `docker` in the root directory. (Root directory is `/`)
- `sudo chown $USER:$USER /docker`: Changes the ownership of the `/docker` directory to the current user, allowing read and write access.
- `sudo ln -s /docker`: Creates a symbolic link to the `/docker` directory in the current user's home directory, making it easier to access.
Other important commands
- `docker compose up -d`: Starts the Docker containers defined in the `compose.yml` file in detached mode, allowing them to run in the background. The `-d` flag stands for "detached mode".
- `docker compose down`: Stops and removes the containers defined in the `compose.yml` file, cleaning up resources.
Creating a pihole installation
> This is just a exerpt from the pihole documentation
folowing the structure we make a new directory in /docker
mkdir /docker/pihole
cd /docker/pihole
nano compose.yml
then copy the pihole example compose file from below
# More info at https://github.com/pi-hole/docker-pi-hole/ and https://docs.pi-hole.net/
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
# DNS ports
- "53:53/tcp"
- "53:53/udp"
# WEB GUI
- "80:80/tcp"
- "443:443/tcp"
# DHCP
- "67:67/udp"
environment:
TZ: 'Europe/Oslo'
FTLCONF_webserver_api_password: '(change me)'
FTLCONF_dns_listeningMode: 'all'
volumes:
- './etc-pihole:/etc/pihole'
cap_add:
- NET_ADMIN
- SYS_TIME
- SYS_NICE
restart: unless-stopped
Save and exit and now we are ready to start pihole with this will create a configuration directory
docker compose up -d
Creating a Minecraft Server
> This is just a exerpt from the itzg docker minecraft server documentation
folowing the structure we make a new directory in /docker
mkdir /docker/minecraft
cd /docker/minecraft
nano compose.yml
then copy the pihole example compose file from below
services:
mc:
image: itzg/minecraft-server
tty: true
stdin_open: true
ports:
- "25565:25565"
environment:
EULA: "TRUE"
volumes:
# attach the relative directory 'data' to the container's /data path
- ./data:/data
Save and exit and now we are ready to start pihole with this will create a configuration directory
docker compose up -d
And then you can access your minecraft server with the ip specified by the command
ip a
Specificaly this ip address