Preface
Usually when we set up Docker, whether we usecommand will also automatically pull the Llama 3.2 model file when Ollama finds it is not available locally, which is actually similar tocommands ordocker composecommands, they are all completed in the terminal using commands. Although we can still use commands to view various Docker statuses, overall it is not very intuitive.
Although there are corresponding Docker Desktops that can be installed under Windows, Mac, and Linux, unless they are usually used as desktop terminals, having to use a remote desktop connection first just to use the GUI interface for management is quite inconvenient. Therefore, what we need is a graphical interface that can be managed directly using a browser, which brings us to what this article introduces: 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 multiple 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 container networks, volumes, environment variables, and other settings, and view container logs, statistics, etc. In addition, Portainer also provides some practical functions, such as container templates, custom dashboards, event monitoring, Web terminals, etc.
Deploying 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 \
-v /run/docker.sock:/var/run/docker.sock:ro \
-v /docker/portainer/data:/data \
--workdir=/ --runtime=runc \
portainer/portainer-ce:latest
-p 9000:9000
Interface Introduction
Maps port 9000 of the host machine to port 9000 of the container. You can adjust this according to your 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, allowing Portainer to communicate with the host's Docker daemon, thereby enabling the management of other containers.

--workdir=/ --runtime=runc \

Specify working directory and runtime

Use http://Host_IP:9000 to log in to Portainer. For the first login, you need to create an administrator account:
After creation, enter the system, and the interface is as follows:

Portainer can manage multiple environments. Through "Add Environments" on the right side of the image above, you can manage Docker on other machines or manage Swarm and K8s clusters. This time we are only doing local management, 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 image above to enter the dashboard:
In Stacks are the container collections I created using the docker compose command:

I have 2 in here because I only used the docker compose command twice, one is the SafeLine WAF, and the other is Umami traffic monitoring.

Images contains all downloaded images, and Networks contains all created networks. I won't go into detail about these two. Then comes the most important Containers interface:
Compared with Docker Desktop, the biggest advantage of Portainer is what you can do after clicking into a specific Docker container. For example, I click to enter the first one, bind9:
Configure public network access
If you want to publish to the public network, you need to choose the most suitable publishing method based on your actual environment and the reverse proxy you use. You can refer to several of my previous articles:
1、Docker Series: Building Your Own Reverse Proxy Based on NPM Using Docker
2、Linux Panel Series: Configuring Reverse Proxy and Publishing Using Non-443 Ports
3、Home Data Center Series: Getting Cloudflare for Free via Domestic ICP-Filed Cloud Hosts to Achieve Fast Access to Domestic Sites from Abroad
4、Home Data Center Series: Getting Cloudflare for Free via Home Broadband Without Public IP to Achieve Fast Website Building (Universal)
Among them, the 1st and 2nd methods are suitable for environments with a public IP but without a legal 443 port (home broadband, non-filed cloud hosts), where non-standard ports need to be added after the URL (if using Cloudflare to build a website, no port needs to be added, but you need to customize the origin server port, which you can refer to:Home Data Center Series: Solving the Problem of Having a Public IP but No Legal 80 or 443 Ports for Website Building via Cloudflare's Origin Rules). The 3rd method is suitable for cloud hosts with ICP filing, and the 4th method is suitable for all environments (including environments without a public IP), which is also my recommended method (regardless of whether your environment has a public IP, because this method does not require running HTTPS traffic directly on the public network).