174 lines
4.9 KiB
Markdown
174 lines
4.9 KiB
Markdown
---
|
||
navigation: true
|
||
title: Docker
|
||
main:
|
||
fluid: false
|
||
---
|
||
:ellipsis{left=0px width=40rem top=10rem blur=140px}
|
||
# Docker
|
||
|
||
Docker, to install deployable services in seconds and manage them with just a few commands or clicks.
|
||
|
||
::alert{type="info"}
|
||
🎯 __Goals:__
|
||
- Install [Docker](https://www.docker.com/)
|
||
- Install [Dockge](https://github.com/louislam/dockge) to manage stacks
|
||
- Install [Watchtower](https://github.com/containrrr/watchtower) to update containers
|
||
::
|
||
|
||

|
||
|
||
## Install Docker
|
||
---
|
||
Add the Docker repositories and GPG key:
|
||
|
||
```shell
|
||
# Add Docker's official GPG key:
|
||
sudo apt-get update
|
||
sudo apt-get install ca-certificates curl
|
||
sudo install -m 0755 -d /etc/apt/keyrings
|
||
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
|
||
sudo chmod a+r /etc/apt/keyrings/docker.asc
|
||
|
||
# Add the repository to Apt sources:
|
||
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
|
||
sudo apt-get update
|
||
```
|
||
|
||
Install the packages:
|
||
|
||
```shell
|
||
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
|
||
```
|
||
|
||
That's it!
|
||
|
||
**More options:** [Install Docker for Debian 12](https://docs.docker.com/engine/install/debian/)
|
||
|
||
::alert{type="info" icon="exclamation-circle"}
|
||
:::list{type="info"}
|
||
- From here on, we assume the stacks are installed in the `/docker` folder, created using the command:
|
||
:::
|
||
```shell
|
||
sudo mkdir /docker
|
||
::
|
||
|
||
## Install [Dockge](https://github.com/louislam/dockge) to manage and deploy containers
|
||
---
|
||
[Dockge](https://github.com/louislam/dockge) is a web tool to create, configure, launch, and manage Docker containers. It's a simple, intuitive interface that’s lighter and easier for beginners than using the CLI or Portainer.
|
||
|
||

|
||
|
||
### Configuration
|
||
|
||
File structure we will create:
|
||
|
||
```console
|
||
root
|
||
└── docker
|
||
└── dockge
|
||
└── compose.yml
|
||
```
|
||
|
||
Create the stack folder:
|
||
|
||
```shell
|
||
cd /docker
|
||
sudo mkdir dockge
|
||
```
|
||
|
||
Then create the `compose.yml` file in this folder using `vim`:
|
||
|
||
```shell
|
||
cd /docker/dockge
|
||
sudo vi compose.yml
|
||
```
|
||
Press `i` to enter insert mode and paste the following:
|
||
|
||
```yaml
|
||
---
|
||
services:
|
||
dockge:
|
||
image: louislam/dockge:1
|
||
restart: unless-stopped
|
||
container_name: dockge
|
||
ports:
|
||
- 3555:5001 # LAN-accessible port will be 3555
|
||
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
- /docker/dockge/data:/app/data
|
||
- /docker:/docker
|
||
environment:
|
||
- DOCKGE_STACKS_DIR=/docker
|
||
```
|
||
|
||
Press `Esc` and type `:x` to save and exit.
|
||
|
||
To launch the container:
|
||
|
||
```shell
|
||
cd /docker/dockge
|
||
sudo docker compose up -d
|
||
```
|
||
|
||
Then go to `http://yourserverip:3555` in your browser to access the login page.
|
||
|
||
More info on [Dockge and how to use it](https://github.com/louislam/dockge)
|
||
|
||
And there you go — Docker and a tool to easily manage your containers are ready!
|
||
|
||
## [Watchtower](https://github.com/containrrr/watchtower?tab=readme-ov-file), to auto-update containers
|
||
---
|
||
Watchtower is a container that checks for updates and pulls new images automatically, just by adding a label in your containers’ `compose.yml` files.
|
||
|
||
### Configuration
|
||
|
||
- Open Dockge in your browser
|
||
- Click `compose`
|
||
- Name the stack `watchtower`
|
||
- Paste the config below into the default config area in Dockge
|
||
|
||
```yaml
|
||
---
|
||
services:
|
||
watchtower:
|
||
container_name: watchtower
|
||
image: containrrr/watchtower:latest
|
||
restart: unless-stopped
|
||
env_file:
|
||
- .env
|
||
environment:
|
||
- TZ=Europe/Paris
|
||
- WATCHTOWER_SCHEDULE=${SCHEDULE}
|
||
- WATCHTOWER_LABEL_ENABLE=true
|
||
- WATCHTOWER_CLEANUP=true
|
||
- WATCHTOWER_REMOVE_VOLUMES=true
|
||
# Discord notifications - uncomment if used
|
||
#- WATCHTOWER_NOTIFICATIONS=slack
|
||
#- WATCHTOWER_NOTIFICATION_SLACK_IDENTIFIER=Watchtower
|
||
#- WATCHTOWER_NOTIFICATION_SLACK_HOOK_URL=${WH_URL}
|
||
volumes:
|
||
- /var/run/docker.sock:/var/run/docker.sock
|
||
```
|
||
|
||
Then fill in the `.env` section in Dockge with the following:
|
||
|
||
```properties
|
||
SCHEDULE=
|
||
WH_URL=
|
||
```
|
||
|
||
| Property | Value | Examples |
|
||
|----------------|--------------------------------------------------------------------|----------------------------------------------|
|
||
| `SCHEDULE` | Cron format | `0 0 6 * * *` (every day at 6 AM) |
|
||
| `WH_URL` | Your Discord webhook URL - append `/slack` at the end | `https://yourdiscordserver/webhook/slack` |
|
||
|
||
To have Watchtower monitor your other containers, add this to their `compose.yml`:
|
||
|
||
```yaml
|
||
labels:
|
||
- com.centurylinklabs.watchtower.enable=true
|
||
```
|
||
|
||
Then restart the modified stacks. And that's it — you now have a solid base to start deploying the services you want! |