Apa itu docker?
Docker adalah sebuah platform sumber terbuka (open-source) yang digunakan untuk mengembangkan, mengirimkan, dan menjalankan aplikasi menggunakan kontainer. Kontainer memungkinkan developer untuk mengemas aplikasi beserta semua bagian yang dibutuhkan (perpustakaan, dependensi, dan pengaturan) menjadi satu unit terisolasi.
Docker Cheat Sheet for Beginners and Advanced Users
Lembar contekan ini menyediakan referensi cepat untuk perintah-perintah Docker yang umum, yang mencakup instalasi, operasi dasar, manajemen siklus hidup kontainer, konfigurasi, manajemen volume, jaringan, pencatatan log, debugging, dan manajemen image. Lembar ini mencakup perintah untuk pemula dan pengguna tingkat lanjut.
Install Docker di ubuntu 18.04
sudo apt update
sudo apt-get install curl apt-transport-https ca-certificates 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 update
sudo apt install docker-cecurl -sSL https://get.docker.com/ | shsudo usermod -aG docker $USERInstall Docker di kali linux 2020.2
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -echo 'deb [arch=amd64] https://download.docker.com/linux/debian buster stable' | sudo tee /etc/apt/sources.list.d/docker.listsudo apt-get updatesudo apt-get install docker-cesudo usermod -aG docker $USERDocker Basic
Melihat versi docker
docker versionMenampilan informasi tentang docker
docker infoMelihat docker image
docker image lsdocker imagesMelihat history image
docker history <nama image/tag>docker history alpine:3.18.4Download docker image di Docker Hub
docker pull <nama image>:<tag>docker pull alpine:3.18.4Melihat daftar container berjalan
docker psdocker container lsMelihat semua daftar container (Termasuk yang berhenti)
docker ps -adocker container ls -aMembuat dan menjalankan container baru dari image
docker run <options> --name <nama container> <nama image:tag>docker run -it --name myServer alpine:3.18.4docker run -d --name myNginx -p 80:80 nginx:alpine3.18-slimDocker Container Lifecycle
Menjalankan container
docker start <nama container/container id>docker start myNginxMenghentikan container
docker stop <nama container/container id>docker stop myNginxMenghentikan container (Gracefully)
docker stop <nama container/ container id>docker stop myNginxMenghentikan container dengan paksa (Forcefully)
docker kill <nama container/container id>docker kill myNginxRestart container
docker restart <nama container/ container id>docker restart myNginxMenghapus container
docker rm <nama container/container id>docker rm myNginxDocker Configurasi
Melakukan port forwarding
docker run -d --name <nama container> --publish <port host>:<port container> <image>:<tag>docker run -d --name myNginx --publish 80:80 nginx:alpine3.18-slimMelihat port: yang digunakan oleh container
docker port <nama container/container id>docker port myNginxMelihat detail config container
docker inspect <nama container/container id>docker inspect myNginxMelihat IP address container
docker inspect --format '{{ .NetworkSettings.IPAddress }}' <nama container/container id>docker inspect --format '{{ .NetworkSettings.IPAddress }}' myNginxMelihat process yang berjalan di dalam container
docker top <nama container/container id>docker top myNginxContainer resource limit
docker run -d --name <nama_container> --memory 512m --cpus 0.5 <image>:<tag>docker run -d --name myNginx --memory 512m --cpus 0.5 nginx:mainline.alpine3.18-slimMenambahkan enviroment variable
docker run -d --name <nama_container> --env <image>:<tag>docker run -d --name myMongo --publish 27017:27017 --env MONGO_INITDB_ROOT_USERNAME=username --env MONGO_INITDB_ROOT_PASSWORD=password mongo:latestDocker Volume
Melihat daftar volume
docker volume lsMembuat volume
docker volume create <nama volume>Menghapus volume
docker volume rm <nama volume>Menghubungkan volume ke container
membuat volume baru
docker volume create mongodatadocker run -d --name <nama_container> --mount "type=volume,source=nama_volume,target=containerpath" <image>:<tag>docker run -d --name myMongo --publish 27017:27017 --mount "type=volume,source=mongodata,destination=/data/db" --env MONGO_INITDB_ROOT_USERNAME=username --env MONGO_INITDB_ROOT_PASSWORD=password mongo:latestdocker run -d --name myNginx -p 80:80 -v $(pwd)/html:/usr/share/nginx/html nginx:latestMelakukan mounting bind
docker run -d --name <nama_container> --mount "type=bind,source=hostpath,target=containerpath" <image>:<tag>docker run -d --name myMongo --publish 27017:27017 --mount "type=bind,source=/home/hard/Documents/docker/mongodata,destination=/data/db" --env MONGO_INITDB_ROOT_USERNAME=username --env MONGO_INITDB_ROOT_PASSWORD=password mongo:latestBackup volume
docker run -d --name <nama_container> --mount "type=bind,source=pathhost,destination=pathhostbackup" --mount "type=volume,source=name_volume,destination=path_volume" <image>:<tag>langkah-langkah pencadangan volume: buat volume dengan nama volumemongo
docker volume create volumemongobuat container imgae nginx dengan nama nginxbackup
docker run -d --name nginxbackup --mount "type=bind,source=/home/hard/docker/backupmongo,destination=/backup" --mount "type=volume,source=mongodata,destination=/data" nginx:latestjalankan container
docker container start nginxbackupmasuk ke dalam container
docker container exec -it nginxbackup /bin/bashmelakukan backup
tar cvf /backup/backup.tar.gz /dataexample satu baris execute:
docker run --rm --name ubuntu --mount "type=bind,source=/home/hard/docker/backupmongo,destination=/backup" --mount "type=volume,source=mongodata,destination=/data" ubuntu:latest tar cvf /backup/backup2.tar.gz /dataRestore volume
docker container run --rm --name ubunturestore --mount "type=bind,source=pathhost,destination=pathhostbackup" --mount "type=volume,source=name_volume,destination=path_volume" ubuntu:latest bash -c "cd /data && tar xvf /backup/backup.tar.gz --strip 1"example:
docker volume create mongorestoredocker container run --rm --name ubunturestore --mount "type=bind,source=/home/hard/docker/backupmongo,destination=/backup" --mount "type=volume,source=mongorestore,destination=/data" ubuntu:latest bash -c "cd /data && tar xvf /backup/backup.tar.gz --strip 1"Docker Network
Melihat network
docker network lsMembuat network
docker network create --driver <driver> <nama network>Menghapus network
docker network rm <nama network>Menghubungkan container ke network
membuat network baru
docker network create --driver bridge mongonetworkdocker run -d --name <nama_container> --network <nama network> image:tagdocker run -d --name mongodb --network mongonetwork --env MONGO_INITDB_ROOT_USERNAME=username --env MONGO_INITDB_ROOT_PASSWORD=password mongo:4.4.18docker run -d --name mongoexpress --publish 8081:8081 --network mongonetwork --env ME_CONFIG_MONGODB_URL="mongodb://username:password@mongodb:27017" mongo-express:latestMenghapus container network
docker network disconnect <nama_network> <nama_container>docker network disconnect mongonetwork myMongountuk menghubungkan kembali:
docker network connect <nama_network> <nama_container>docker network connect mongonetwork myMongoInspect
untuk melihat detail dari image, container, volume, dan network
docker image inspect <nama_image>docker container inspect <nama_container>docker volume inspect <nama_volume>docker network inspect <nama_network>Logs dan Debugging
Melihat log container
docker logs <nama container/container id>docker logs myNginxjika ingin melihat secara realtime
docker logs -f nama_container/container_iddocker logs -f myNginxMelihat realtime penggunaan resource
docker stats <nama container/container id>docker stats myNginxMasuk ke dalam container yg berjalan (interactive shell)
docker exec -it <nama container/container id> bash or sh or etcdocker exec -it myNginx shDocker Cleanup
Perintah Prune
menghapus semua container yang tidak digunakan
docker container pruneuntuk menghapus semua image yang tidak digunakan
docker image pruneuntuk menghapus semua volume yang tidak digunakan
docker volume pruneuntuk menghapus semua network yang tidak digunakan
docker network pruneuntuk menghapus semua yang tidak digunakan kecuali volume
docker system prunePush Image ke Docker Hub
docker loginmelihat status login
cat ~/.docker/config.jsonmenambahkan tag
docker image tag <nama_image> <username_dockerhub>/<nama_image>:<tag>docker image tag nginx hardhard/nginxpush image ke docker hub
docker image push <username_dockerhub>/<nama_image>:<tag>docker image push hardhard/nginxmenambahkan tag baru
docker image tag <username_dockerhub>/<nama_image_lama>:<tag_lama> <username_dockerhub>/<nama_image_baru>:<tag_baru>docker image tag hardhard/nginx:latest hardhard/nginx:testingDocker Swarm
Inisialisasi Docker Swarm
docker swarm initjika terjadi error seperti ini:
Error response from daemon: could not choose an IP address to advertise since this system has multiple addresses on interface enp0s3...maka jalankan perintah ini:
docker swarm init --advertise-addr <ip_address>Docker Dockerfile
Docker Service
Membuat Service
docker service create --name <nama_service> --replicas <jumlah_replicas> --publish <port_host>:<port_container> <nama_image>:<tag>docker service create alpine ping 8.8.8.8Melihat list service
docker service lsMelakukan update service (scale up/down)
docker service update <id_container> --replicas <jumlah_replicas>docker service update nginx --replicas 5Docker build
docker build -t <nama_image> <path_dockerfile>untuk display output
docker build -t <nama_image> <path_dockerfile> --progress=plaintanpa cache
docker build -t <nama_image> <path_dockerfile> --no-cachedocker build -t hard:latest /home/hard/docker/dockerfile --no-cacheContoh Dockerfile
FROM alpine:latest
RUN mkdir coba
RUN echo "Hello World" > coba/hello.txt
RUN cat coba/hello.txt
ADD coba/hello.txt coba/hello.txt
CMD cat coba/hello.txtFROM adalah perintah untuk mendefinisikan image yang akan digunakan ADD adalah perintah untuk memasukan file ke dalam image RUN adalah perintah untuk menjalankan perintah di dalam image CMD adalah perintah untuk menjalankan perintah di dalam container
Image docker: untuk mirror Android
Untuk lebih lengkapnya bisa cek disini :
https://hub.docker.com/r/pierlo1/scrcpy
kebetulan di laptop saya menggunakan amd jadi saya menulisnya begini pierlo1/scrcpy:amd
sesuaikan dengan laptop amd, intel, / nvidia.
docker run --rm -i -t --privileged \
-v /dev/bus/usb:/dev/bus/usb \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
pierlo1/scrcpy:amdImage docker: web server
sudo docker run -dit --name hard-web -p 8080:80 -v /home/user/website/:/usr/local/apache2/htdocs/ httpd:2.4cek :
sudo docker psEdit file :
sudo vi /home/user/website/docker.html<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Learn Docker at hard.com</title>
</head>
<body>
<h1>Learn Docker With Us</h1>
</body>
</html>Untuk Stop docker :
sudo docker stop hard-webUntuk remove :
sudo docker rm hard-webUntuk remove container
sudo docker image remove httpd:2.4