Skip to content

Docker

vm vm vm vm

Pengeertian Umum

https://aws.amazon.com/id/docker/
Docker adalah platform perangkat lunak yang memungkinkan Anda membuat, menguji, dan menerapkan aplikasi dengan cepat. Docker mengemas perangkat lunak ke dalam unit standar yang disebut kontainer yang memiliki semua yang diperlukan perangkat lunak agar dapat berfungsi termasuk pustaka, alat sistem, kode, dan waktu proses. Dengan menggunakan Docker, Anda dapat dengan cepat menerapkan dan menskalakan aplikasi ke lingkungan apa pun dan yakin bahwa kode Anda akan berjalan.

https://www.niagahoster.co.id/blog/docker-tutorial/
Docker adalah aplikasi open source untuk menyatukan file-file yang dibutuhkan sebuah software sehingga menjadi menjadi satu kesatuan yang lengkap dab berfungsi. Data pengaturan dan file pendukung disebut sebagai image. Selanjutnya kumpulan image digabung dalam satu wadah yang disebut Container.

Docker merupakan solusi dari permasalahan yang kerap dialami para developer untuk mengembangkan aplikasi mereka agar bisa berjalan fleksibel di berbagai lingkungan.

Docker menjadi perhatian para developer sejak tahun 2013, diperkenalkan oleh Solomon Hykes dalam acara PyCon US. Beberapa waktu setelahnya, Docker dirilis pertama kali pada bulan Juni tahun 2014. Docker dikembangkan oleh Solomon bersama rekannya Andrea Luzzardi dan Francois-Xavier Bourlet. Pada saat itu Docker merupakan proyek internal dotCloud. Hasilnya, saat ini Docker sudah menjadi platform populer di lingkungan para developer di berbagai belahan dunia meskipun belum terlalu populer di Indonesia.

Docker sendiri merupakan sebuah perusahaan yang menyediakan layanan platform kontainer.

Kemampuan yang dimiliki Docker yaitu mampu menjalankan berbagai macam aplikasi dengan konfigurasi sistem yang berbeda-beda, meskipun masih dalam satu perangkat komputer atau server.

Fitur Docker

https://www.niagahoster.co.id/blog/docker-tutorial/
Berikut ini adalah fitur Docker yang bisa Anda gunakan sesuai dengan kebutuhan.

  • Docker Engine, digunakan untuk membangun Docker images dan membuat kontainer Docker.
  • Docker Hub, registry yang digunakan untuk berbagai macam Docker images
  • Docker Compose, digunakan untuk mendefinisikan aplikasi menggunakan banyak kontainer Docker.
  • Docker untuk Mac, memungkinkan menjalankan kontainer Docker pada Mac.
  • Docker untuk Linux, memungkinkan menjalankan kontainer Docker pada Linux.
  • Docker untuk Windows, memungkinkan menjalankan kontainer Docker pada Windows.

Cara kerja

https://aws.amazon.com/id/docker/
Docker berfungsi dengan menyediakan cara standar untuk menjalankan kode Anda. Docker adalah sistem operasi untuk kontainer. Mirip dengan cara mesin virtual memvirtualisasi (menghilangkan kebutuhan untuk secara langsung mengelola) perangkat keras server, kontainer memvirtualisasi sistem operasi server. Docker diinstal di setiap server dan memberikan perintah sederhana yang dapat Anda gunakan untuk membuat, memulai, atau menghentikan kontainer.

https://www.niagahoster.co.id/blog/docker-tutorial/
Untuk lebih memahami Docker, sebaiknya Anda mengetahui cara kerja Docker. Ada beberapa komponen yang perlu Anda ketahui:

  • Docker image, merupakan file berisi informasi dan petunjuk untuk membangun container. Image juga berfungsi untuk menggunakan dan mengirimkan informasi;
  • Container, adalah lingkungan untuk mengemas dan menjalankan aplikasi. Ini mencakup kode, runtime, system tools, dan pengaturan. Container hanya bisa mengakses resource yang telah ditentukan dalam docker image;
  • Docker client, yaitu tempat di mana pengguna dapat mengirimkan perintah seperti docker build, docker pull, dan docker run kepada Docker daeomon;
  • Docker Engine Rest API, digunakan untuk berinteraksi dengan Docker daemon. Ini bisa diakses klien melalui HTTP;
  • Docker host, menyediakan lingkungan yang lengkap untuk menjalankan aplikasi. Dia bertanggung jawab terhadap penerimaan perintah yang diberikan Docker client;
  • Docker daemon, yaitu proses pengelolaan Docker images, kontainer, network, dan storage volumes. Docker daemon menerima request dari Docker API dan akan memprosesnya;
  • Docker registry, wadah untuk menyimpan Docker image. Docker image akan memberi reaksi sesuai perintah yang diberikan. Misalnya saat diberi perintah docker push, docker image akan didorong atau dibagikan ke registri Docker Hub;
  • Docker Hub adalah layanan yang disediakan untuk menemukan dan berbagi gambar container dengan tim.

Kapan menggunakan Docker

https://aws.amazon.com/id/docker/
Anda dapat menggunakan kontainer Docker sebagai blok penyusun inti yang menciptakan aplikasi dan platform modern. Docker mempermudah pembuatan dan menjalankan arsitektur layanan mikro terdistribusi, menerapkan kode Anda dengan pipeline integrasi dan pengiriman berkelanjutan yang terstandardisasi, membangun sistem pemrosesan data dengan skalabilitas yang tinggi, dan membuat platform yang sepenuhnya dikelola untuk pengembang Anda.

Install : Ubuntu 20.04

apt -y install curl
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 7EA0A9C3F273FCD8
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt update
apt-cache policy docker-ce

Install : Kali Linux

install docker :

sudo apt update
sudo apt install -y docker.io
sudo systemctl enable docker --now
docker

agar tdk sudo :

sudo usermod -aG docker $USER

cek :

sudo systemctl status docker

install docker-ce :

printf "%s\n" "deb [arch=amd64] https://download.docker.com/linux/debian buster stable" | sudo tee /etc/apt/sources.list.d/docker-ce.list
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

cek status

sudo apt install -y docker-ce
sudo systemctl status docker

Membuat agar tidak perlu sudo lagi

sudo usermod -aG docker ${USER}
su - ${USER}
id -nG

Atau secara explisit menambahkan username ke group docker

sudo usermod -aG docker username

Beberapa Command

docker [option] [command] [arguments]
docker
docker docker-subcommand --help
docker info
sudo docker run hello-world
sudo docker search ubuntu
sudo docker pull ubuntu
sudo docker run ubuntu
sudo docker images

Run Docker Container

Tambahkan -it untuk interactive shell access

# docker run -it ubuntu bash
sudo docker run -it ubuntu

Managing Docker

sudo docker ps
sudo docker ps -a
sudo docker ps -l
sudo docker start 9b0db8a30ad1  (9b0db8a30ad1 adalah container-id)
sudo docker stop xenodochial_neumann
sudo docker rm youthful_roentgen

cek image :

docker images

hub.docker.com

cari image (misal mongo db)

docker pull mongo
docker pull mongo:4.1

cek container :

# yg running
docker container ls
# yg running / tdk
docker container ls --all

buat container

docker container create --name coba-docker-mongo mongo:4.1
docker container create --name coba-docker-mongo2 mongo:4.1

start container

docker container start coba-docker-mongo
docker container start coba-docker-mongo2

stop container

docker container stop coba-docker-mongo coba-docker-mongo2

menghapus container

docker container rm coba-docker-mongo coba-docker-mongo2

membuat container export port (agar container dpt diakses dr luar)

docker container create --name mongoserver1 -p 8080:27017 mongo:4.1
docker container create --name mongoserver1 -p 8081:27017 mongo:4.1
# 8080 : port utk luar
# 27017 : port dari container

menghapus image

docker image rm mongo:4.1

membuat image docker secara manual misal file golang file https://github.com/ProgrammerZamanNow/belajar-docker/blob/master/main.go

vim Dockerfile
FROM golang:1.11.4

COPY main.go /home/syahrolus/Documents/temp/main.go

CMD ["go", "run", "/home/syahrolus/Documents/temp/main.go"]
docker build --tag coba-app-golang:1.0 .
docker container create --name app1 -p 8080:8080 app-golang:1.0
docker container start app1

upload ke registry

https://hub.docker.com
create a repository
misal nama belajar-repo-docker

docker login
    username : <username>
    password : <password>
docker tag app-golang:1.0 syahrolus/app-golang:1.0
docker push syahrolus/app-golang:1.0

masuk

docker attach <id_container/nama>

langsung remove container ketika disconnect

docker run --rm <images>

Istilah

sumber : https://id.wikipedia.org/wiki/Daemon

*Daemon

Daemon (Inggris: daemon) (IPA: /'deɪmən/ atau /'dimən/[1]) adalah program komputer yang berjalan di latar belakang (berlawanan dengan program yang dapat dikontrol langsung) yang melakukan beberapa tugas tanpa intervensi dari pengguna. Daemon pada umumnya dimulai pada saat proses pengebutan sebagai proses, seperti halnya perangkat lunak lainnya. Contoh dari daemon adalah telnet daemon, yang terus berjalan di latar belakang, dan menunggu permintaan koneksi dari pengguna klien telnet. Telah menjadi konsensus untuk memberi nama suatu daemon dengan nama yang diakhiri oleh huruf "d" (diambil dari huruf pertama daemon), contohnya syslogd, daemon yang menangani log sistem; sshd, daemon yang menangani koneksi SSH), dan juga HTTPd yang merupakan daemon yang menjawab permintaan dari klien yang dilakukan melalui peramban web.

Dalam lingkungan sistem operasi mirip Unix, proses parent dari sebuah daemon adalah init (PPID=1). Daemon, pada umumnya menggunakan protokol Remote Procedure Call (RPC) untuk membuka koneksi dengan klien.

Windows
Dalam keluarga Windows, service memiliki konsep yang sama dengan daemon. Service berjalan sebagai sebuah proses, umumnya tidak berinteraksi dengan papan kunci, monitor dan tetikus, serta pada umumnya prosesnya dimulai pada saat pengebutan.

Sumber