Хочешь не хочешь, но учиться приобщаться к чему-то другому не привычному от того что используешь постоянно приходится, ну по крайней мере мне. Мне что-то начала заходить задействовать 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
Создаю административный аккаунт:
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.)
и нажимаю 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.
и для входа нужно перезапустить Ваш экземпляр (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
)
Делаю Logoff
, и после уже URL
адрес изменяется на http://IP&DNS:9000/#1/auth
или в моем случае http://172.33.33.102:9000/#!/auth
Username: admin
Password: 712mbddr@217
и нажимаю 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.