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:
 | 
						||
 | 
						||
```sh
 | 
						||
# 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:
 | 
						||
 | 
						||
```sh
 | 
						||
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:
 | 
						||
:::
 | 
						||
    ```sh
 | 
						||
    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:
 | 
						||
 | 
						||
```sh
 | 
						||
root
 | 
						||
└── docker
 | 
						||
    └── dockge    
 | 
						||
        └── compose.yml
 | 
						||
```
 | 
						||
 | 
						||
Create the stack folder:
 | 
						||
 | 
						||
```sh
 | 
						||
cd /docker
 | 
						||
sudo mkdir dockge
 | 
						||
```
 | 
						||
 | 
						||
Then create the `compose.yml` file in this folder using `vim`:
 | 
						||
 | 
						||
```sh
 | 
						||
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:
 | 
						||
 | 
						||
```sh
 | 
						||
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! |