Хочешь не хочешь, но учиться приобщаться к чему-то другому не привычному от того что используешь постоянно приходится, ну по крайней мере мне. Мне что-то начала заходить задействовать Docker и все что с ним связано, ставлю задачки самому себе и потихоньку их решаю. Сегодня речь пойдет на тему, как развертывается Webинтерфейс Docker контейнеров именуемый, как Portainer. Делать буду применительно к операционной системе Ubuntu 22.04 Server, от и до, т.к. преимущественно делаю себе заметки.

Шаг №1: Устанавливаем Docker в Ubuntu 22.04 Server опираясь на заметку: "Как установить Docker на Ubuntu 22.04"

Шаг №2: Устанавливаем Docker Compose в Ubuntu 22.04 Server опираясь на заметку: "Как развернуть Docker Compose в Ubuntu 22.04 Server"

Шаг №3: Устанавливаю Python3 & Python3-pip:

ekzorchik@srv-home:~$ sudo apt-get -y install python3 python3-pip
ekzorchik@srv-home:~$ sudo pip3 install --upgrade pi

Шаг №4: Если нужно управлять множеством контейнеров Docker, то есть смысл использовать Web–интерфейс – portainer:

ekzorchik@srv-home:~$ docker search portainer | head -n2
NAME                                  DESCRIPTION                                     STARS     OFFICIAL
portainer/portainer                   This Repo is now deprecated, use portainer/p…   2513
ekzorchik@srv-home:~$
ekzorchik@srv-home:~$ sudo docker run --restart always --name portainer -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer
Unable to find image 'portainer/portainer:latest' locally
latest: Pulling from portainer/portainer
772227786281: Pull complete
96fd13befc87: Pull complete
0bad1d247b5b: Pull complete
b5d1b01b1d39: Pull complete
Digest: sha256:47b064434edf437badf7337e516e07f64477485c8ecc663ddabbe824b20c672d
Status: Downloaded newer image for portainer/portainer:latest
a1ae4f71a0112e6542cb9866b613cc5094a22610c096c07c8a6d4172ee5a9c16
ekzorchik@srv-home:~$

На заметку: При поднятии сервиса Portainer получаем, именование, проброшенный порт, сервис, том. (/var/lib/docker/volumes/portainer_data/_data)

ekzorchik@srv-home:~$ sudo netstat -tulpn | grep docker
tcp        0      0 0.0.0.0:9000            0.0.0.0:*               LISTEN      26282/docker-proxy
tcp6       0      0 :::9000                 :::*                    LISTEN      26288/docker-proxy
ekzorchik@srv-home:~$

Шаг №5: После того, как установили Portainer и вижу, что порт 9000 стал прослушиваться, я могу обратиться к Web-интерфейсу на URL строку текущего сервера вида: http://IP&DNS:9000

При первом входе после развертывания Portainer on Ubuntu 22.04 Server.

Создаю административный аккаунт:

  • Username: admin
  • Password: к примеру задаю пароль, 712mbddr@217
  • Confirm password: повторяю задаваемый пароль, 712mbddr@217
  • Allow collection of anonymous statistics. You can find more information about this is our privacy policy: галочку снимаю

На заметку: обратите внимание, что длина задаваемого пароля не должна быть менее 12 символов (The password must be at least 12 characters long.)

Задая учетной записи Username:admin пароль не менее 12 символов.

и нажимаю Create user, после получаю уведомление на странице, что установка Portainer успешно завершена

New Portainer installation

Your Portainer instance timed out for security purposes. To re-enable your Portainer instance, you will need to restart Portainer.

Пароль задан, нужено перезапустить экземпляр Portainer.

и для входа нужно перезапустить Ваш экземпляр (docker container restart <CONTAINER ID>) Portainer: (обновление страницы через F5 это не то)

ekzorchik@srv-home:~$ docker container ls
CONTAINER ID   IMAGE                 COMMAND        CREATED         STATUS         PORTS                                                           NAMES
a1ae4f71a011   portainer/portainer   "/portainer"   9 minutes ago   Up 9 minutes   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer
ekzorchik@srv-home:~$
ekzorchik@srv-home:~$ docker container restart a1ae4f71a011
a1ae4f71a011
ekzorchik@srv-home:~$

или же

ekzorchik@srv-home:~$ docker container restart portainer
portainer
ekzorchik@srv-home:~$ docker ps
CONTAINER ID   IMAGE                 COMMAND        CREATED          STATUS         PORTS                                                           NAMES
a1ae4f71a011   portainer/portainer   "/portainer"   14 minutes ago   Up 4 seconds   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer
ekzorchik@srv-home:~$

или же

ekzorchik@srv-home:~$ docker container stop a1ae4f71a011
a1ae4f71a011
ekzorchik@srv-home:~$ docker container start a1ae4f71a011
a1ae4f71a011
ekzorchik@srv-home:~$

Но в чем загвоздка, все что я делаю по перезапуску контейнера не приводит ни к чему, при обновлении URL страницы http://IP&DNS:9000 и также получаю страницу где предлагается создания административного пользователя. Вот почему все время так, все через жопу.

СТОП, ради интереса попробовал указать заданный пароль выше, т.е. 712mbddr@217 и нажать Create User и меня перебросило в Web-интерфейс администрирования, выглядит он вот так: (если перейти в раздел Home)

Перезапустил экземпляр Portainer, указал заново связку Username:Password и успешно зашел.

Делаю Logoff, и после уже URL адрес изменяется на http://IP&DNS:9000/#1/auth или в моем случае http://172.33.33.102:9000/#!/auth

  • Username: admin
  • Password: 712mbddr@217

Выполнив Logoff, снова авторизуюсь и успешно.

и нажимаю Login, в случаем правильно указания, вход в Web-интерфейс осуществляется.

Шаг №6: Допустим Вы забыли какой пароль стоит на дефолтную учетную запись с Username:admin, что делать в этом случае?

ekzorchik@srv-home:~$ docker container ls
CONTAINER ID   IMAGE                 COMMAND        CREATED         STATUS         PORTS                                                           NAMES
3e54983c2b3d   portainer/portainer   "/portainer"   4 minutes ago   Up 4 minutes   8000/tcp, 9443/tcp, 0.0.0.0:9000->9000/tcp, :::9000->9000/tcp   portainer
ekzorchik@srv-home:~$ docker stop 3e54983c2b3d
3e54983c2b3d
ekzorchik@srv-home:~$ docker pull portainer/helper-reset-password
Using default tag: latest
latest: Pulling from portainer/helper-reset-password
6dcde7e3d378: Pull complete
fbbc1c1500f4: Pull complete
Digest: sha256:2ce11ce356218a49420e2632e1b854c2aca9657f2412edb95ac60814f83635e6
Status: Downloaded newer image for portainer/helper-reset-password:latest
docker.io/portainer/helper-reset-password:latest
ekzorchik@srv-home:~$ docker run --rm -v portainer_data:/data portainer/helper-reset-password
{"level":"info","filename":"portainer.db","time":"2024-04-09T06:59:14Z","message":"loading PortainerDB"}
2024/04/09 06:59:14 Password successfully updated for user: admin
2024/04/09 06:59:14 Use the following password to login: O.6cvD_(89el42@5o>7ajK&NCt`/R1wP
ekzorchik@srv-home:~$ docker start 3e54983c2b3d
3e54983c2b3d
ekzorchik@srv-home:~$

Открываю URL http://IP&DNS:9000 (http://172.33.33.102:9000) и успешно авторизуюсь с использованием нового пароля:

  • Username: admin
  • Password: O.6cvD_(89el42@5o>7ajK&NCt`/R1wP

и нажимаю Login.

Т.е. я остановил по ID Portainer, затем установил контейнер с именем portainer/helper-reset-password, смонтировал его с томом /data где у меня Portainer и запустил helper-reset-password тем самым успешно обновив на сгенерированный пароль. Ну по крайней мере это вижу так я, так как спросить не у кого все ли я правильно понимаю, но практика показывает, что вроде так, работает же.

Шаг №7: А можно сделать проще, удалить базу:

ekzorchik@srv-home:~$ sudo rm /var/lib/docker/volumes/portainer_data/_data/portainer.db
ekzorchik@srv-home:~$ sudo docker restart portainer
portainer
ekzorchik@srv-home:~$

и заново пройти процедуру создания/присвоения пароля на учетную запись Username:admin.

Шаг №8: Если по каким-либо причинам Вам нужно удалить из системы Ubuntu 22.04 Server развернутый Portainer, то в этом Вам поможет вот такой вот скрипт или пишите сами себе свое, а это как пример:

ekzorchik@srv-home:~$ nano uportainer.sh
#!/bin/bash
#stop portainer
docker stop $(docker ps | grep portainer | awk '{print $1}')
#remove containter portainer
docker container rm -f $(docker container ls -al | grep portainer | awk '{print $1}')
#remove image id portainer
docker rmi $(docker images | grep portainer | awk '{print $3}')
#delete the portainer data volume
docker volume rm $(docker volume ls | grep portainer | awk '{print $2}')
ekzorchik@srv-home:~$ chmod +x uportainer.sh
ekzorchik@srv-home:~$ sudo ./uportainer.sh
4aeb4c676e0c
4aeb4c676e0c
Untagged: portainer/portainer:latest
Untagged: portainer/portainer@sha256:47b064434edf437badf7337e516e07f64477485c8ecc663ddabbe824b20c672d
Deleted: sha256:5f11582196a42b895cdb9322f7a650f42a0c1ed062efc71864352f314228a187
Deleted: sha256:a2b8be7e33e4f9949429751861de81b074f5f4c6736b29381f46a6391e02643d
Deleted: sha256:e7bf90223f9cc1d7c06d141cec6e3e6e30efa4cfd0bb3e7f671c1cca033b0ead
Deleted: sha256:e0a46f5d05e1b93a7993c45aaea39729d111d7a096e02ac1656c721e39cb5222
Deleted: sha256:8c004456aeb58b75f792fa091b194c20d6ed4f0d95dd25b0150d71c5c9ab601b
portainer_data
ekzorchik@srv-home:~$

На заметку: а вот когда применил скрипт удаления, а после заново поставил, указал задаваемый пароль то после нажатия Create User я сразу же зашел в Web-интерфейс администрирования/управления контейнерами, мне кажется, что перед развертыванием Portainer нужно перезапустить сам сервис Docker и тогда все будет нормально.

Подведу итог, я себе составил пошаговую заметку на тему, как развернуть в Docker Web-интерфейс управления контейнерами в лице Portainer, пусть это будет первым кирпичиком на пути дальнейшего изучения. А пока на этом заметка завершается, с уважением автор блога Олло Александр aka ekzorchik.