Showing posts with label Docker. Show all posts
Showing posts with label Docker. Show all posts

Thursday, December 2, 2021

OpenStack AIO Single Node CentOS 8 With Zun Services (Victoria)

 


    OpenStack merupakan platform yang mengontrol dan memanajemen sumber daya komputasi, penyimpanan dan jaringan pada datacenter dengan berbasis cloud yang dikelola dan di sediakan dengan menggunakan layanan API dan mekanisme otentikasi. Dalam mengelolanya, OpenStack memberikan layanan dashboard yang memberikan kemampuan untuk mengontrol dan menyediakan sumber daya kepada pengguna berbasis website. Selain menyediakan layanan berupa infrastruktur, OpenStack memiliki komponen tambahan berupa layanan orkestrasi dan manajemen kesalahan untuk memastikan ketersediaan yang tinggi bagi aplikasi penggunanya. (OpenStack, 2020).

    Zun merupakan sebuah service yang menyediakan API OpenStack untuk meluncurkan dan mengelola kontainer yang didukung oleh teknologi kontainer yang berbeda. Berbeda dari Magnum, Zun adalah untuk pengguna yang ingin memperlakukan kontainer sebagai sumber daya yang dikelola OpenStack. Kontainer yang dikelola oleh Zun seharusnya terintegrasi dengan baik dengan sumber daya OpenStack lainnya, seperti jaringan Neutron dan volume Cinder. Pengguna disediakan API yang disederhanakan untuk mengelola kontainer tanpa perlu mengeksplorasi kompleksitas teknologi kontainer yang berbeda.
Komponen Openstack (Openstack Document).

Pada artikel ini saya akan memberikan guide dari installasi AIO Single Node yang sebelumnya sudah pernah saya implementasikan untuk tugas akhir saya. berikut adalah langkah-langkahnya:


Preparation

Pastikan Tekoneksi Internet dan install dependensi yang di perlukan

$ ping -c3 google.com

$ sudo dnf install nano

$ sudo dnf install python3-devel libffi-devel gcc openssl-devel python3-libselinux

Install dependencies

$ sudo dnf install epel-release

$ sudo dnf install python3-pip

$ sudo pip3 install -U pip

$ sudo dnf install ansible

Install Kolla

$ sudo pip3 install kolla-ansible --ignore-installed PyYAML

$ sudo mkdir -p /etc/kolla

$ sudo chown $USER:$USER /etc/kolla

$ cp -r /usr/local/share/kolla-ansible/etc_examples/kolla/* /etc/kolla

$ cp /usr/local/share/kolla-ansible/ansible/inventory/* .

Tuning ansible

$ sudo nano /etc/ansible/ansible.cfg

[defaults] host_key_checking=False pipelining=True forks=100

$ sudo nano /etc/hosts

127.0.0.1 localhost ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6

{{ ip-server1 }} server1

Check ping to server

$ ansible -i all-in-one all -m ping

Generate password untuk setiap service openstack

$ kolla-genpwd #otomatis generate ke file /etc/kolla/passwords.yml

Edit deployment configuration

$ nano /etc/kolla/globals.yml ....

kolla_base_distro: "centos"
kolla_install_type: "source"
network_interface: "eth0"		#interface management
neutron_external_interface: "eth1"	#interface external
kolla_internal_vip_address: "10.33.102.245"	# IP di subnet int management yang tidak terpakai
nova_compute_virt_type: "qemu"
enable_zun: "yes"
enable_kuryr: "yes"
enable_etcd: "yes"
docker_configure_for_zun: "yes"
containerd_configure_for_zun: "yes"

....

Run kolla-ansible

$ kolla-ansible -i ./all-in-one bootstrap-servers $ kolla-ansible -i ./all-in-one prechecks $ kolla-ansible -i ./all-in-one deploy

Using Openstack

$ kolla-ansible post-deploy $ . /etc/kolla/admin-openrc.sh

$ sudo pip3 install python-openstackclient

$ sudo pip3 install python-zunclient

Check openstack cli commmand

$ openstack hypervisor list $ openstack endpoint list $ openstack service list

Screen

$ screen -R deploy

for detach:

$ ctrl+a lalu tekan d

back to session

$ screen-r deploy



Saturday, February 16, 2019

Mysql-PHP-PHPmyadmin-Apache dengan Docker Compose


Docker compose adalah sebuah tool dari docker untuk mempermudah dalam developing aplikasi dan menjalankan aplikasi secara complex. Dengan Compose kamu dapat menjalankan multi container aplikasi dalan satu file. Dan hanya menggunakan satu perintah untuk menjalankan semua aplikasi yang akan kamu develop. Dengan menggunakan YAML file untuk konfigurasi semua servis dari aplikasi. Compose bekerja di dalam semua enviroment ya itu : production, Staging, development, testting  serta pada CI workflows.

Setelah kita berkenalan sekilas dengan Docker compose kali ini kita akan membuild sebuah aplikasi yang menggunakan service dari apache sebagai web server, PHP untuk bahsa nya, phpmyadmin untuk management database dan yang terakhir dari database yaitu mysql.

Sebelum beranjak ke praktik, diharapkan kalian telah memahami cara menggunakan tools dari compose itu sendiri. dan sebenarnya apabila kalian telah memahami dan ingin langsung scriptnya, maka dapat kalian cari di Github saya.

Pertama buatlah direktori dan penempatan file sesuai dengan pemetaan berikut ini :

path:
|_ ./apache/
| |__ Dockerfile
| |________ demo.apache.conf
|_ ./php/
| |___ Dockerfile
|_ ./public_html/
| |___ index.html
|_ ./docker-compose.yml

Setelah kita membuat direktori lalu buatlah file file yang di perlukan seperti Dockerfile dan konfigurasi yang lainnya.
Selanjutnya mari kita buat Docker file pada direktori apache ./apache/Dockerfile : 
FROM httpd:2.4.33-alpine
RUN apk update; \
    apk upgrade;
# Copy apache vhost file to proxy php requests to php-fpm container
COPY demo.apache.conf /usr/local/apache2/conf/demo.apache.conf
RUN echo "Include /usr/local/apache2/conf/demo.apache.conf" \
    >> /usr/local/apache2/conf/httpd.conf

Setelah kita membuat Docker file pada direktori apache (./apache/Dockerfile) maka kita buat juga configurasi untuk apache nya (./apache/demo.apache.conf)
ServerName localhost

LoadModule deflate_module /usr/local/apache2/modules/mod_deflate.so
LoadModule proxy_module /usr/local/apache2/modules/mod_proxy.so
LoadModule proxy_fcgi_module /usr/local/apache2/modules/mod_proxy_fcgi.so

<VirtualHost *:80>
    # Proxy .php requests to port 9000 of the php-fpm container
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/$1
    DocumentRoot /var/www/html/
    <Directory /var/www/html/>
        DirectoryIndex index.php
        Options Indexes FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    # Send apache logs to stdout and stderr
    CustomLog /proc/self/fd/1 common
    ErrorLog /proc/self/fd/2 
</VirtualHost>
Lanjut ke tahap selanjutnya  pada direktori php kita buat docker file nya (./php/Dockerfile):
FROM php:7.2.7-fpm-alpine3.7
RUN apk update; \
    apk upgrade;
RUN docker-php-ext-install mysqli


Lanjut ke tahap selanjutnya  kali ini pada direktori html_public berfungsi sebagai direktori penghubung antara host ke container. dan kali ini file index ini selain berfungsi sebagai penanda bahwa apache sudah berjalan tetapi juga berfungsi sebagai mekanisme pengecekan terhadap koneksi ke database
<h1>Hello MAHBUBI!</h1>
<h4>Attempting MySQL connection from php...</h4>
<?php
$host = '172.24.0.3:3306';
$user = 'root';
$pass = 'rootpassword';
$conn = new mysqli($host, $user, $pass);

if ($conn->connect_error){die("Connection failed: " . $conn->connect_error);}
echo "Connected to MySQL successfully!"; 
?>
Setelah semua proses telah tecapai maka saat nya kita membuat inti dari Compose ya itu configurasi Compose tersebut ya itu docker-compose.yml (./docker-compose.yml)
version: "3.2"
services:
  php:
    build: './php/'
    volumes:
      - ./public_html/:/var/www/html/
  web:
    build: './apache/'
    depends_on:
      - php
      - db
    ports:
      - "8181:80"
    volumes:
      - ./public_html/:/var/www/html/
  db:
    image: mysql:5.7
    user: "root"
    restart: always
    ports:
      - 3306:3306
    environment:
      - MYSQL_ROOT_PASSWORD=rootpassword
      - MYSQL_DATABASE=dbvote

  myadmin:
    image: phpmyadmin/phpmyadmin
    ports:
        - "8282:80"
    links:
      - db:db
    restart: always
    environment:
      - MYSQL_USERNAME=root
      - MYSQL_ROOT_PASSWORD=rootpassword
    depends_on:
       - db

Setelah docker-compose.yml telah kita buat maka saatnya kita jalankan perintah docker-compose up -d agar dapat memulai semua service dan konfigurasi yang telah kita buat di belakang sehingga kita tidak perlu membuka terminal lagi.

Demikianlah Tutorial untuk menjalankan, membuat dengan menggunakan tool dari docker ya itu Compose. apabila ada script yang tidak bisa bisa kalian copy dari Github saya.
sekian dari saya terimakasih telah membaca.

Berkenalan Dengan Docker Compose


Docker compose adalah sebuah tool dari docker untuk mempermudah dalam developing aplikasi dan menjalankan aplikasi secara complex. Dengan Compose kamu dapat menjalankan multi container aplikasi dalan satu file. Dan hanya menggunakan satu perintah untuk menjalankan semua aplikasi yang akan kamu develop. Dengan menggunakan YAML file untuk konfigurasi semua servis dari aplikasi. Compose bekerja di dalam semua enviroment ya itu : production, Staging, development, testting  serta pada CI workflows.
Pada penggunaan Compose secara basic memiliki 3 tahapan proses ya itu :
1. mendefinisikian enviroment dari aplikasi ke dalam “Dockerfile”, dengan begitu  kamu dapat membuatya di mana saja.
2. mendefinisikan service apa saja yang akan di gunakan oleh aplikasimu ke dalam “docker-compose.yml” dengan begitu, akan membuat semua servis tersebut berjalan di dalam isolasi enviroment.
3. menjalankan dengan perintah “docker-compose up” dengan begitu compose akan memulai dan menjalankan aplikasimu.
Contoh dari docker-compose.yml seperti berikut ini:
version: '3'
services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - ./dir:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  ./dir: {}
Contoh sederhana tersebut menjelaskan bahwa pada compose versi 3 dengan service web menggunakan port internal 5000 dan port external container sama dengan internalnya ya itu 5000
Lalu pada bagian volume merupakan layaknya path untuk menyimpan sebuah file yang secara otomatis akan tercopy pada container tersebut.

Wednesday, September 12, 2018

Belajar Docker: Docker "Teknologi Virtualisasi Berbasis Kontainer "



Docker adalah platform terbuka untuk pengembangan, pengiriman, dan menjalankan aplikasi. Docker memungkinkan untuk memisahkan aplikasi dari infrastruktur yang ada sehingga dapat mengirimkan perangkat lunak dengan cepat. Dengan Docker, kita dapat mengelola infrastruktur  dengan cara yang sama seperti mengelola aplikasi. Dengan memanfaatkan metodologi Docker untuk pengiriman, pengujian, dan menerapkan kode dengan cepat, kita dapat secara signifikan mengurangi penundaan antara menulis kode dan menjalankannya dalam produksi.

Saturday, August 25, 2018

Docker : Konsep Dasar Docker Container




Docker adalah platform untuk pengembang dan sysadmin, untuk mengembangkan, menyebarkan, dan menjalankan aplikasi dengan kontainer. Penggunaan kontainer Linux untuk menyebarkan aplikasi disebut containerization . Penggunaan kontainer  ditujukan untuk memudahkan penggunaan aplikasi.
Containerization semakin populer karena kontainer tegolong:
  • Fleksibel: Bahkan aplikasi yang paling rumit pun dapat dikemas.
  • Ringan: Kontainer memanfaatkan dan berbagi kernel host.
  • Dapat dipertukarkan: Anda dapat menerapkan pembaruan dan peningkatan dengan cepat.
  • Portable: Anda dapat membuat secara lokal, menyebarkan ke cloud, dan jalankan di mana saja.
  • Scalable: Anda dapat menambah dan secara otomatis mendistribusikan replika kontainer.
  • Stackable: Anda dapat menumpuk layanan secara vertikal dan on-the-fly.
Image dan kontainer
·         Kontainer Dijalankan dengan menjalankan image. Sebuah image adalah paket executable yang mencakup semua yang diperlukan untuk menjalankan sebuah aplikasi - kode, runtime, perpustakaan, variabel lingkungan, dan file konfigurasi.
·         Kontainer adalah contoh runtime dari suatu image. Kalian dapat melihat daftar kontainer yang berjalan dengan perintah,, docker ps”.

Kontainer dan mesin virtual

Sebuah kontainer akan berjalan secara native di Linux dan berbagi kernel dari host dengan kontainer lain. Dalam menjalankannya, prosesnya secara terpisah, sehingga tidak mengambil lebih banyak memori daripada yang dapat dieksekusi, membuatnya lebih ringan.
Sebaliknya, mesin virtual (VM) menjalankan sistem operasi "guest” penuh dengan akses virtual ke sumber daya host melalui hypervisor. Secara umum, VM menyediakan lingkungan dengan lebih banyak sumber daya daripada yang dibutuhkan sebagian besar aplikasi.
Source : docs.docker.com