something more workable with the portainer container (persistent data and start at boot if not stopped)
yum update -y
curl -fsSL https://get.docker.com/ | sh
the service docker must be tricked with shorewall
cp /lib/systemd/system/docker.service /etc/systemd/system/docker.service
vim /etc/systemd/system/docker.service
then change
-After=network.target firewalld.service
+After=network.target shorewall.service
and to bind the 0.0.0.0 IP to your real IP, like this you will be able to reach the tcp port of your container directly in portainer (set the IP of your server)
-ExecStart=/usr/bin/dockerd
+ExecStart=/usr/bin/dockerd --ip=xxx.xxx.xxx.xxx
then update the docker service
systemctl daemon-reload
systemctl enable docker
systemctl start docker
create default entries
mkdir /etc/e-smith/db/configuration/defaults/docker
echo 'service' > /etc/e-smith/db/configuration/defaults/docker/type
echo 'enabled' > /etc/e-smith/db/configuration/defaults/docker/status
/etc/e-smith/events/actions/initialize-default-databases
config setprop firewall Docker enabled
signal-event firewall-adjust
create and launch the portainer docker
mkdir /var/lib/portainer
docker run -d -p 9000:9000 --restart unless-stopped --name portainer-container -v /var/lib/portainer:/data -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer
a good article to read : https://media-glass.es/portainer-the-ui-for-docker-d067f6335f23
to update portainer, you need to update the image, then remove the container and create it again. Since the data is persistent on the host, you will found all your settings.
- update all your images
docker images | awk '/^REPOSITORY|\<none\>/ {next} {print $1}' | xargs -n 1 docker pull
- stop portainer
docker kill portainer-container
- remove portainer
docker rm portainer-container
- create again portainer
docker run -d -p 9000:9000 --restart unless-stopped --name portainer-container -v /var/lib/portainer:/data -v "/var/run/docker.sock:/var/run/docker.sock" portainer/portainer