A.Cara Install Docker
1.Cara Install Docker di Linux
untuk yang kita install ini berbasis Fedora,centos atau almalinux
yum install -y yum-utils
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
systemctl start docker
untuk mengecek docker sudah berjalan bisa coba jalan perintah
docker --version Docker version 26.1.1, build 4cf5afa
2.Cara Install Docker di Windows
pertama silahkan download dahulu software docker pada situs resmi docker https://www.docker.com/products/docker-desktop/
Double-click Docker Desktop Installer.exe dan lanjurkan proses install nya
setelah selesai
dan setelah berjalan anda bisa lewat versi GUI atau untuk CLI bisa memakai CMD
atau bisa lewat cmd
B.Perintah-Perintah Dasar pada Docker
1.docker version untuk melihat versi docker
docker version
2. docker info uuenutk melihat detaul version dan path dan keseluruhan instalasi docker
docker info
C:\Users\gamal>docker info Client: Version: 26.1.1 Context: default Debug Mode: false Plugins: buildx: Docker Buildx (Docker Inc.) Version: v0.14.0-desktop.1 Path: C:\Program Files\Docker\cli-plugins\docker-buildx.exe compose: Docker Compose (Docker Inc.) Version: v2.27.0-desktop.2 Path: C:\Program Files\Docker\cli-plugins\docker-compose.exe debug: Get a shell into any image or container (Docker Inc.) Version: 0.0.29 Path: C:\Program Files\Docker\cli-plugins\docker-debug.exe dev: Docker Dev Environments (Docker Inc.) Version: v0.1.2 Path: C:\Program Files\Docker\cli-plugins\docker-dev.exe extension: Manages Docker extensions (Docker Inc.) Version: v0.2.23 Path: C:\Program Files\Docker\cli-plugins\docker-extension.exe feedback: Provide feedback, right in your terminal! (Docker Inc.) Version: v1.0.4 Path: C:\Program Files\Docker\cli-plugins\docker-feedback.exe init: Creates Docker-related starter files for your project (Docker Inc.) Version: v1.1.0 Path: C:\Program Files\Docker\cli-plugins\docker-init.exe sbom: View the packaged-based Software Bill Of Materials (SBOM) for an image (Anchore Inc.) Version: 0.6.0 Path: C:\Program Files\Docker\cli-plugins\docker-sbom.exe scout: Docker Scout (Docker Inc.) Version: v1.8.0 Path: C:\Program Files\Docker\cli-plugins\docker-scout.exe Server: Containers: 33 Running: 30 Paused: 0 Stopped: 3 Images: 10 Server Version: 26.1.1 Storage Driver: overlay2 Backing Filesystem: extfs Supports d_type: true Using metacopy: false Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog Swarm: inactive Runtimes: runc io.containerd.runc.v2 Default Runtime: runc Init Binary: docker-init containerd version: e377cd56a71523140ca6ae87e30244719194a521 runc version: v1.1.12-0-g51d5e94 init version: de40ad0 Security Options: seccomp Profile: unconfined Kernel Version: 5.15.146.1-microsoft-standard-WSL2 Operating System: Docker Desktop OSType: linux Architecture: x86_64 CPUs: 4 Total Memory: 3.729GiB Name: docker-desktop ID: f5cdea5b-1eba-441e-ae3f-202368e3ee52 Docker Root Dir: /var/lib/docker Debug Mode: false HTTP Proxy: http.docker.internal:3128 HTTPS Proxy: http.docker.internal:3128 No Proxy: hubproxy.docker.internal Labels: com.docker.desktop.address=npipe://\\.\pipe\docker_cli Experimental: false Insecure Registries: hubproxy.docker.internal:5555 127.0.0.0/8 Live Restore Enabled: false
Images & Container
1. Melihat Images yang sudah terinstall di docker
$ docker images
contoh kasus
C:\Users\gamal>docker images REPOSITORY TAG IMAGE ID CREATED SIZE docker/desktop-kubernetes kubernetes-v1.29.2-cni-v1.4.0-critools-v1.29.0-cri-dockerd-v0.3.11-1-debian 15340d8e9882 3 months ago 439MB registry.k8s.io/kube-apiserver v1.29.2 8a9000f98a52 4 months ago 127MB registry.k8s.io/kube-scheduler v1.29.2 6fc5e6b7218c 4 months ago 59.5MB registry.k8s.io/kube-proxy v1.29.2 9344fce2372f 4 months ago 82.3MB registry.k8s.io/kube-controller-manager v1.29.2 138fb5a3a2e3 4 months ago 122MB registry.k8s.io/etcd 3.5.10-0 a0eed15eed44 7 months ago 148MB registry.k8s.io/coredns/coredns v1.11.1 cbb01a7bd410 10 months ago 59.8MB docker/desktop-vpnkit-controller dc331cb22850be0cdd97c84a9cfecaf44a1afb6e 556098075b3d 13 months ago 36.2MB registry.k8s.io/pause 3.9 e6f181688397 20 months ago 744kB docker/desktop-storage-provisioner v2.0 99f89471f470 3 years ago 41.9MB
2. Download Images.
untuk perintah ini download latest atau versi terakhir
docker pull ubuntu
untuk mendownload sesuai versi yang kita ingin kan
$ docker pull ubuntu:20.04
3. Melihat Docker Container yang sedang running.
$ docker container ls
C:\Users\gamal>docker container ls CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 507144b04bb8 6fc5e6b7218c "kube-scheduler --au…" 4 hours ago Up 4 hours k8s_kube-scheduler_kube-scheduler-docker-desktop_kube-system_a2aef464e32c9d92c9c87ecd4c049741_13 7d435ba67e67 99f89471f470 "/storage-provisione…" 28 hours ago Up 28 hours k8s_storage-provisioner_storage-provisioner_kube-system_e19fba89-d10b-4cbe-9dc9-ba7d5a78ca38_8 ac016341ff49 cbb01a7bd410 "/coredns -conf /etc…" 13 days ago Up 13 days k8s_coredns_coredns-76f75df574-fwrjd_kube-system_e2fb4f4e-ae8b-41cf-9472-94495891daa3_1 d604a1d690b9 138fb5a3a2e3 "kube-controller-man…" 13 days ago Up 13 days k8s_kube-controller-manager_kube-controller-manager-docker-desktop_kube-system_815abf9efdec70808b2f2e38e47476ca_2 2e210cf8a69d 556098075b3d "/kube-vpnkit-forwar…" 13 days ago Up 13 days k8s_vpnkit-controller_vpnkit-controller_kube-system_2ed6a841-d7e1-445b-8780-617f36de88cd_1 17fcc24abfc4 cbb01a7bd410 "/coredns -conf /etc…" 13 days ago Up 13 days k8s_coredns_coredns-76f75df574-5c8zg_kube-system_f5762e85-d66c-4ee4-bbfd-6b9e251d7c16_1 09793978cbac 9344fce2372f "/usr/local/bin/kube…" 13 days ago Up 13 days k8s_kube-proxy_kube-proxy-9dzww_kube-system_23df63a8-bfc5-4592-a532-d92bee7fe5ba_1
4. Melihat semua list Docker Container.
$ docker container ls -a
C:\Users\gamal>docker container ls -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 507144b04bb8 6fc5e6b7218c "kube-scheduler --au…" 4 hours ago Up 4 hours k8s_kube-scheduler_kube-scheduler-docker-desktop_kube-system_a2aef464e32c9d92c9c87ecd4c049741_13 7d435ba67e67 99f89471f470 "/storage-provisione…" 28 hours ago Up 28 hours k8s_storage-provisioner_storage-provisioner_kube-system_e19fba89-d10b-4cbe-9dc9-ba7d5a78ca38_8 ac016341ff49 cbb01a7bd410 "/coredns -conf /etc…" 13 days ago Up 13 days k8s_coredns_coredns-76f75df574-fwrjd_kube-system_e2fb4f4e-ae8b-41cf-9472-94495891daa3_1 d604a1d690b9 138fb5a3a2e3 "kube-controller-man…" 13 days ago Up 13 days k8s_kube-controller-manager_kube-controller-manager-docker-desktop_kube-system_815abf9efdec70808b2f2e38e47476ca_2 2e210cf8a69d 556098075b3d "/kube-vpnkit-forwar…" 13 days ago Up 13 days k8s_vpnkit-controller_vpnkit-controller_kube-system_2ed6a841-d7e1-445b-8780-617f36de88cd_1 17fcc24abfc4 cbb01a7bd410 "/coredns -conf /etc…" 13 days ago Up 13 days k8s_coredns_coredns-76f75df574-5c8zg_kube-system_f5762e85-d66c-4ee4-bbfd-6b9e251d7c16_1 09793978cbac 9344fce2372f "/usr/local/bin/kube…" 13 days ago Up 13 days k8s_kube-proxy_kube-proxy-9dzww_kube-system_23df63a8-bfc5-4592-a532-d92bee7fe5ba_1 b7a20402b5ae registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_coredns-76f75df574-fwrjd_kube-system_e2fb4f4e-ae8b-41cf-9472-94495891daa3_1 2c2aeeab4cc9 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_vpnkit-controller_kube-system_2ed6a841-d7e1-445b-8780-617f36de88cd_1 0f40ac28e225 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_storage-provisioner_kube-system_e19fba89-d10b-4cbe-9dc9-ba7d5a78ca38_1 da55af166cec registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_coredns-76f75df574-5c8zg_kube-system_f5762e85-d66c-4ee4-bbfd-6b9e251d7c16_1 d23f044f0486 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_kube-proxy-9dzww_kube-system_23df63a8-bfc5-4592-a532-d92bee7fe5ba_1 922b2379d085 8a9000f98a52 "kube-apiserver --ad…" 13 days ago Up 13 days k8s_kube-apiserver_kube-apiserver-docker-desktop_kube-system_91838c84176e55a239acd0e97bb0c8cf_1 4051d16c26fe a0eed15eed44 "etcd --advertise-cl…" 13 days ago Up 13 days k8s_etcd_etcd-docker-desktop_kube-system_a7259c8a6f480a66649ce97631b20e6f_1 ee5691b19bb2 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_etcd-docker-desktop_kube-system_a7259c8a6f480a66649ce97631b20e6f_1 8d809be75ce8 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_kube-controller-manager-docker-desktop_kube-system_815abf9efdec70808b2f2e38e47476ca_1 3d505a7a30f5 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_kube-scheduler-docker-desktop_kube-system_a2aef464e32c9d92c9c87ecd4c049741_1 cfcc559d77b9 registry.k8s.io/pause:3.9 "/pause" 13 days ago Up 13 days k8s_POD_kube-apiserver-docker-desktop_kube-system_91838c84176e55a239acd0e97bb0c8cf_1
5. Membuat Docker Container.
$ docker container create --name mongodb1 mongo:4.0
6. Start Container.
$ docker container start mongodb1
7. Mencari Images.
$ docker search mysql
8. Stop Container.
$ docker container stop mongodb1
9. Menghapus Container.
$ docker container rm mongodb1
10. Membuat Container yang dapat diakses dari host. Dengan kata lain, membuka port pada Container sehingga service yang dijalankan dapat diakses dari luar.
$ docker container create --name mongodb2 -p 1234:27017 mongo
11. Menjalankan Images secara langsung. Sehingga, container akan otomatis terbentuk dari Image tersebut.
$ docker run -itd mongo
12. Menjalankan Image secara langsung dan otomatis membuat container. Dan juga membuka port untuk container tersebut. Contohnya pada Image mysql/mysql-server.
$ docker run -d --name mysqlserver1 -p 1234:3306 mysql/mysql-server
13. Masuk ke dalam Container.
$ docker exec -it mongodb2 bash
Nanti mungkin anda akan menemui beberapa sedikit masalah, seperti Image yang tidak bisa di start dengan perintah:
$ docker container start namacontainer
walaupun Container tersebut sudah dibuat sebelumnya. Tetapi Image tersebut akan jalan ketika langsung dijalankan dari Image-nya, contohnya seperti mysql atau mysql/mysql-server.
Jadi ada langkah tertentu untuk menjalankan Image tertentu. Seperti mysql/mysql-server, anda bisa melihat dokumentasi resminya. Container mysql dapat di jalankan dengan perintah:
$ docker run -itd --name mysqlserver1 -p 1234:3306 mysql/mysql-server
Ketika dilihat pada running Container, maka Container tersebut langsung berjalan.
Jadi perintah tersebut akan membuat container otomatis dari image mysql/mysql-server. Jika image mysql/mysql-server tidak ada di repository local, maka dia akan download image dari registry.
$ docker ps
atau
$ docker container ls
14. Membuat Volume
$ docker volume create data1 $ docker volume create data2
Untuk melihat volume yang sudah dibuat pada docker, ketikkan perintah:
$ docker volume ls
Untuk membuat container dengan mencantumkan volume yang ada dapat menggunakan opsi -v.
$ docker run -itd --name mysqlserver1 -v data1:/var/lib/mysql -p 1234:3306 mysql
Perintah tersebut akan me-mount volume data1 ke direktori /var/lib/mysql/ pada container mysqlserver1.
15. Melakukan Commit Container
$ docker commit container1 image1
Perintah tersebut akan membuat image dengan nama image1 dari container yang sedang running yaitu container1. Jadi kondisi container1 yang sekarang akan disimpan dalam image1.
Jika terjadi perubahan pada container1, maka ketika nanti membuat container baru dari image1 maka perubahan tersebut akan tetap ada.