Preface
Usually when we build docker, whether we usedocker run
Command ordocker-compose
Commands are all completed in the terminal using commands. When you need to check the status of various dockers, although you can still use commands to complete it, it is generally not very intuitive.
Although there are corresponding Docker Desktops that can be installed under Windows, Mac, and Linux, unless you usually use it as a desktop terminal, it is quite inconvenient to have to use a remote desktop connection in order to use the GUI interface management. So what we need is a graphical interface that can be managed directly with a browser, which is what this article will introduce: portainer.
Portainer is an open source container management platform that provides an intuitive and easy-to-use web interface to help users manage Docker container clusters, images, volumes and other resources. Portainer supports a variety of Docker environments, including local Docker, Swarm mode, Kubernetes, etc., and supports multi-tenancy, RBAC permission management and other functions. Using Portainer, you can easily create, start, stop, and delete containers, manage the container's network, volume, environment variables and other settings, view container logs, statistics, etc. In addition, Portainer also provides some practical functions, such as container templates, custom dashboards, event monitoring, web terminals, etc.
Deploy portainer
The command is as follows:
docker run --name=portainer -d --restart=always \ -p 9000:9000 \ -v /run/docker.sock:/var/run/docker.sock:ro \ -v /docker/portainer/data: /data \ --workdir=/ --runtime=runc \ portainer/portainer-ce:latest
Parameter explanation:
-p 9000:9000
Map the host's port 9000 to the container's port 9000. You can adjust this according to the actual situation.
-v /run/docker.sock:/var/run/docker.sock:ro
/run/docker.sock is the Unix domain socket that the Docker daemon listens to by default. This parameter maps the host's docker.sock into portainer. Portainer can communicate with the host's Docker daemon through it to manage other containers.
--workdir=/ --runtime=runc \
Specifying the working directory and runtime
Interface Introduction
Use http://host IP:9000 to log in to portainer. You need to create an administrator account for the first login:
After creation, enter the system and the interface is as follows:
Portainer can manage multiple environments. You can manage docker on other machines or manage swarm and k8s clusters through "Add Environments" on the right side of the above picture. This time we only manage locally, so click "Get Started" on the left to enter the local page:
Click "Live connect" in the red box on the right side of the picture above to enter the dashboard:
Stacks is a collection of containers I created using the docker compose command:
I have 2 of them here because I only used the docker compose command twice, one is Changting Lei Chi's waf, and the other is umami traffic monitoring.
Images contains all downloaded images, Netowrks contains all created networks, I will not go into detail about these two, and then the most important Containers interface is:
Compared with Docker Desktop, the biggest advantage of Portainer is what you can do after clicking into a specific Docker. For example, I click into the first bind9:
Then continue to click "Duplicate/Edit" in the red box above, and you can modify the parameters of the container. There are two main parts:
Network ports configuration, you can add, delete or modify mapped ports:
Advanced container settings, you can directly modify the environment parameters:
After the modification is completed, click the button in the red box in the above picture to redeploy the container (in fact, it means deleting the container and then creating a new container with the parameters you configured).
Actually, how useful is this feature? Actually, it is not very useful. Even without this feature, you can manually delete the container and re-run docker run with new parameters. However, if it is not convenient to manage through ssh and only the web is available, this feature will be useful.
Configuring public network access
If you want to publish to the public Internet, you need to choose the most suitable publishing method according to the actual environment and the reverse proxy you use. You can refer to my previous articles:
1,Docker series uses Docker to build its own reverse proxy based on NPM
2,Linux panel series configure reverse proxy and use non-443 port for publishing
3.Home data center series uses domestic cloud hosting to get free cloudflare to achieve fast access to domestic sites from abroad
4.Home Data Center Series: Use cloudflare to build a website quickly with no public IP in your home broadband (general purpose)
The first and second methods are suitable for environments with public IP but no legal 443 port (home broadband, unregistered cloud host). You need to add a non-standard port after the URL (if you use cloudflare to build a website, you don't need to add a port, but you need to customize the source station port. You can refer to:Home data center series uses cloudflare's Origin Rules to solve the problem of having a public IP but no legal ports 80 and 443 when building a websiteThe third method is suitable for cloud hosts with a record, and the fourth method is suitable for all environments (including environments without public IP), which is also the method I recommend (regardless of whether your environment has a public IP or not, because this method does not require running https traffic directly on the public network).