A Guide to Portainer Setup in Ubuntu Linux

Jiuyu Zhang
3 min readAug 2, 2021

--

Docker containers are a great way to run independent processes.

Portainer is an extremely useful tool for managing Docker containers, be it a WordPress stack, a reverse proxy or even a custom DNS server! This guide will go through setting up Portainer on Ubuntu and all the necessary networking required to do so.

Docker containers consist of runtimes that includes everything it needs — for example, for the official WordPress image, the container includes the Apache web server, and php, which are all needed to run WordPress standalone.

Portainer offers a GUI (Graphical User Interface) through a web interface, so you can start, reboot, stop and delete containers very easily. It also offers a very easy to use SSH client into the container, all inside the browser!

Prerequisites

  • An instance running Canonical Ubuntu 18.04 LTS or later (20.04 will work)
  • SSH access into the Ubuntu instance

Installing Docker and Docker-Compose

Make sure that you’re running the latest version of Ubuntu.

sudo apt-get update && sudo apt-get upgrade

Install Docker

Now we’ll get onto the installation script, it’ll install Docker on your machine.

curl -sSL https://get.docker.com | sh

Install Docker-Compose

sudo apt-get install libffi-dev libssl-dev sudo apt install python3-dev sudo apt-get install -y python3 python3-pip

Sometimes you’ll get an error message “Package <package> has no installation candidate”, and an easy way to fix this is to reset your repository: (this will first make a backup of your old repository file then recreate a default version of it)

sudo mv /etc/apt/sources.list ~/ sudo touch /etc/apt/sources.list

Once python and python-pip has been installed, you can go ahead and install docker-compose.

sudo pip3 install docker-compose

(Optional) Add Docker System Service to Start Containers at Boot

This is a good addition, you can run the script below to enable start-up for Docker containers during system boot — this can prevent lots of downtime as the WordPress container will simply start up again in the event of a forced reboot.

sudo systemctl enable docker

Test that Docker is Installed

First, run the following script to test that your Docker installation was successful.

If it worked, it’ll display the following output:

Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. 2. The Docker daemon pulled the "hello-world" image from the Docker Hub. (arm64v8) 3. The Docker daemon created a new container from that image which runs the executable that produces the output you are currently reading. 4. The Docker daemon streamed that output to the Docker client, which sent it to your terminal. To try something more ambitious, you can run an Ubuntu container with: $ docker run -it ubuntu bash Share images, automate workflows, and more with a free Docker ID: https://hub.docker.com/ For more examples and ideas, visit: https://docs.docker.com/get-started/

Installing Portainer

Create the Portainer volume

docker volume create portainer_data

Run the Portainer container:

docker run -d -p 8000:8000 -p 9000:9000 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

You should see the output below if it was successful:

latest: Pulling from portainer/portainer d1e017099d17: Pull complete a7dca5b5a9e8: Pull complete Digest: sha256:4ae7f14330b56ffc8728e63d355bc4bc7381417fa45ba0597e5dd32682901080 Status: Downloaded newer image for portainer/portainer:latest 2fd5f4a0883a9d358ad424fd963699445be8839f3e6a2cf73d55778bcc268523

Opening Ports for Portainer

Then, open port 9000 to access your portainer instance, follow this guide if you’re on Oracle Cloud, or check out the links below for AWS and Azure.

For AWS EC2

Follow these steps to do this:

  • Open “Network & Security” — Security Group settings are on the left-hand navigation
  • Find the security group connected to your instance
  • Choose “inbound rules
  • Type the port number (in your case 8787) in “port range” then click “Add Rule”
  • Use the drop-down and add HTTP (port 80)

And it is done.

From https://intellipaat.com/community/3700/how-to-open-a-web-server-port-on-ec2-instance

For Microsoft Azure VMs

https://docs.microsoft.com/en-us/azure/virtual-machines/windows/nsg-quickstart-portal

Final Setup with Portainer

Go to http://YOUR_SERVER_IP:9000 to set up Portainer. You’ll then be prompted to set up any username and passwords for the admin account, so keep these details! Then, you can manage your containers through a web interface!

Happy coding!

Originally published at https://www.jiuyu.me on August 2, 2021.

--

--

Jiuyu Zhang

I like all things tech, the cloud holds immense potential I reckon… Check out my other blog! www.jiuyu.me