Manajemen Docker Container Menggunakan Portainer
Install Portainer untuk Manajemen Docker Container. Oke kali ini saya akan sharing sedikit mengenai bagaimana instalasi Portainer. Portainer adalah aplikasi yang ringan, cross-platform, dan open source untuk manajemen docker container.
Di tutorial ini saya menggunakan Ubuntu 18.04 sebagai host untuk memasang Portainer.Dan berikut hal yang harus dipersiapkan sebelum menginstall Portainer.
- Docker
- Nginx
Docker harus terinstall di sistem karena kita akan memasang Portainer melalui Docker. Sementara Nginx diperlukan sebagai reverse proxy agar nantinya kita bisa mengakses Portainer melalui subdomain dan juga lewat SSL.
Disini kita akan menggunakan Docker Community Edition.
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io
sudo usermod -aG docker $(whoami)
Install Nginx
Disini kita membutuhkan Nginx hanya sebagai reverse proxy saja jadi kita hanya perlu memasang Nginx tanpa pake LEMP Stack.
sudo apt update && sudo apt install nginx -y
Install Portainer
Yang akan kita pasang disini juga Portainer Community Edition.
Pertama, kita pull dulu image nya ke sistem.
docker pull portainer/portainer-ce
Lalu buat volume untuk menyimpan data Portainer.
docker volume create portainer_data
Lalu jalankan Portainer sebagai container.
docker run --name portainer -h portainer -d -p 8000:8000 -p 127.0.0.1:9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Port 8000 diperlukan untuk edge agent. Sementara port 9000 diperlukan untuk dashboard Portainer. Untuk dashboard, kita bind ke localhost karena kita akan mengekspos service nya menggunakan Nginx.
Oke setelah container berjalan, kita buat virtualhost baru di Nginx untuk mengekspos Portainer. Sebagai contoh disini saya ingin mengekspos Portainer di alamat portainer.linuxsec.org.
server { listen 80; server_name portainer.linuxsec.org; server_tokens off; return 301 https://$server_name$request_uri; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name portainer.linuxsec.org; server_tokens off; # HTTP Security Headers ssl_protocols TLSv1.2 TLSv1.3; # TLS 1.3 requires nginx >= 1.13.0 ssl_prefer_server_ciphers on; ssl_dhparam /etc/ssl/certs/dhparam.pem; # openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096 ssl_ciphers EECDH+AESGCM:EDH+AESGCM; ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0 ssl_session_timeout 10m; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Requires nginx >= 1.5.9 ssl_stapling on; # Requires nginx >= 1.3.7 ssl_stapling_verify on; # Requires nginx => 1.3.7 ssl_early_data off; # 0-RTT, enable if desired - Requires nginx >= 1.15.4 resolver 1.1.1.1 valid=300s; # Replace with your local resolver resolver_timeout 5s; ssl_certificate /etc/letsencrypt/live/linuxsec.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/linuxsec.org/privkey.pem; root /var/www/ibmcloud-portainer/; access_log /var/log/nginx/portainer.log; index index.html; #Portainer Nginx Proxy location / { proxy_pass http://localhost:9000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass_request_headers on; proxy_redirect off; proxy_buffering off; proxy_request_buffering off; proxy_intercept_errors on; } }Untuk SSL nya kalian bisa gunakan Let's Encrypt.
Oke, sekarang akses portainer.linuxsec.org.
Maka kalian akan disuruh membuat akun admin. Selanjutnya, untuk environment nya pilih lokal.
Dan berikut tampilan Dashboardnya.
Di Portainer ada banyak template aplikasi populer yang langsung bisa dipakai. Kalian bisa coba sendiri.
Upgrade Portainer
Untuk mengupgrade Portainer juga cukup mudah. Kita tinggal remove containernya lalu jalankan lagi dengan base image yang baru.
docker stop portainer
docker rm portainer
docker pull portainer/portainer-ce
docker run --name portainer -h portainer -d -p 8000:8000 -p 127.0.0.1:9000:9000 -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce
Selama volume portainer_data tidak dihapus, data dan konfigurasi dari versi sebelumnya masih tetap ada.
Menggunakan Docker Compose
Jika kalian memutuskan menggunakan docker compose setelah proses instalasi diatas, kalian bisa gunakan konfigurasi docker-compose berikut:
version: '2' services: portainer: image: portainer/portainer-ce container_name: portainer command: -H unix:///var/run/docker.sock restart: always ports: - 127.0.0.1:9000:9000 - 8000:8000 volumes: - /var/run/docker.sock:/var/run/docker.sock - portainer_data:/data volumes: portainer_data: external: true name: portainer_data
Troubleshooting
Jika setelah mengkonfigurasi Nginx proxy Portainer nya malah errot 502 Bad Gateway, kemungkinan besar dikarenakan container milik Portainernya berhenti. Hal itu disebabkan karena alasan keamanan, service Portainer akan dimatikan setelah lima menit tidak ada konfigurasi yang ditambahkan.
Solusinya adalah dengan menjakankan kembali Portainer dengan perintah:
docker start portainer
Lalu cek lagi di portainer.linuxsec.org. Seharusnya sekarang kalian dibawa ke halaman awal Portainer.
Oke mungkin sekian tutorial kali ini, semoga bermanfaat.
Posting Komentar untuk "Manajemen Docker Container Menggunakan Portainer"
Posting Komentar
Silahkan tinggalkan komentar jika ada masukan, pertanyaan, kritik ataupun dukungan. Namun pastikan untuk berkomentar secara sopan.