103Portainer - amagerard/Docker GitHub Wiki
Docker/Home
RedHat/Docker.
| 1- Docker | 2- Firewall | 3- Portainer | 4- Drupal | 5- Joomla | 
|---|---|---|---|---|
| 6-Wordpress | 7-Xwiki | 8- Mediawiki | ||
| Casaos | Zimaos | 
3.Portainer.
3.1 Portainer.
As it is written on the official website https://www.portainer.io/ Portainer is effortless container management for Docker.
But it's not free.
Home & Student license cost $149/year.
Fortunately there is a free community version  Portainer CE.
https://docs.portainer.io/start/install-ce/server/docker
3.2 Check these ports are unused.
You can only install a container if its port is free.
Portainer uses ports 8000, 9000 and 9443.
To see the used ports.
netstat -plnt
tcp        0      0 0.0.0.0:8082            0.0.0.0:*             LISTEN      1669/docker-proxy  
tcp        0      0 0.0.0.0:8081            0.0.0.0:*             LISTEN      1679/docker-proxy  
tcp        0      0 0.0.0.0:33772           0.0.0.0:*             LISTEN      1642/docker-proxy  
tcp        0      0 0.0.0.0:33771           0.0.0.0:*             LISTEN      1663/docker-proxy  
In this example, these ports 8081, 8082, 33771 and 33772 are used.
3.3 Portainer installation.
This procedure is based on this example.
Docker server ip :192.168.60.55/24
Your username: teacher
Your home directory:/home/teacher
docker volume create portainer_data
Search for the latest version of Portainer-ce.
https://hub.docker.com/r/portainer/portainer-ce/tags
At 1 December 2024 this is version 2.21.0.
2.21 is the first Long Term Support, or "LTS", release of Portainer.
docker run -d -p 8000:8000 -p 9000:9000 -p 9443:9443 --name portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce:2.21.0
3.4 Open Portainer with your browser.
Add this rule to the firewall.
ufw allow in from any to any port 9000
http://192.168.60.55:9000
username: admin
The password must be at least 12 characters long.
Create user.
Get Started
Clic on local Environments.
At the left, you have :
- Containers.
- Images.
- Networks.
- Volumes.
3.5 How to use Portainer.
The administration of containers with Docker is command line.
All command lines start with Docker ....
I use the Portainer application only for:
- Start, stop, edit, remove a container.
- Remove Images.
- Create or remove networks.
- Create or remove volumes.
3.6 Naming convention.
This is my naming agreement.
If I have several containers, it's very difficult for me to navigate.
3.6.1 Containers' name.
The name will be of the form cnt_ [app] _ [type] _ [number]
Example:
Drupal needs the drupal and mariadb container.
App gives dpl (3 Characters)  for Drupal.
Type gives wb for HTML and db for database.
Number is instance 1 for drupal.
cnt_dpl_wb_1 is container 1 for Drupal html.
cnt_dpl_db_1 is container 1 for Drupal database.
The 2 containers number 1 are together.
3.6.2 Networks'name.
The default network is bridge.
The issue  is that all containers will be on the same network.
I chose to create a network for each container that will be together.
The name will be of the form net _ [app] _ [number]
Example:
Drupal needs a network.
App gives dpl (3 characters) for Drupal.
Number is instance 1 for Drupal.
net_dpl_1 is the network for Drupal.
3.6.3 Volumes'name.
The volume is the place where is stored:
- html
- database
By default the volumes are created on:
/var/lib/docker/volumes
The name will be of the form vol_ [app] _ [type] _ [number]
Example:
Drupal needs the drupal and mariadb volume.
App gives dpl (3 characters) for Drupal.
Type gives wb for html and db for database.
Number is instance 1 for drupal.
vol_dpl_wb_1 is container 1 for Drupal html.
vol_dpl_db_1 is container 1 for Drupal database.
The 2 containers number 1 are together.
3.7 Container logs.
Open Portainer.
In  my example,Docker IP server  is 192.168.60.55.
http:192.168.60.55:9000
Click on local Environments.
At the left, you have :
- Containers.
- Images.
- Networks.
- Volumes.
Select Container.
Choose your container.
Example : cnt_wps_wb_1
You have "Quick Actions"  with 5 items.
- logs
 It's for me.
- inspect
 For advanced users.
- stats
 For stats lovers.
- exec Console
 Don't use.
- Attach console
 Don't use.
The logs, give you messages when everything is going wrong or when everything is going well.
Example:
- for a web type container, you have when everything goes well.
Command line: 'apache2 -D FOREGROUND'  
- for a db type container, you have when everything goes well.
socket: '/run/mysqld/mysqld.sock'  port: 3306  mariadb.org binary distribution