translation by you can also view the original English article Kontainer Docker sedang meningkat sebagai penerapan terbaik untuk menjalankan dan mengelola sistem cloud-native terdistribusi. Kontainer adalah instansi dari image Docker. Ternyata ada banyak untuk perlu diketahui dan dipahami tentang image. Dalam tutorial dua bagian ini, saya akan membahas image Docker secara mendalam. Pada bagian satu saya telah membahas prinsip dasar, pertimbangan desain, dan memeriksa internal dari image. Pada bagian ini, saya membahas membangun image Anda sendiri, pemecahan masalah, dan bekerja dengan repositori image. Ketika Anda berada di sisi lain, Anda akan memiliki pemahaman yang kuat tentang apa itu image Docker yang sebenarnya dan bagaimana menggunakannya secara efektif dalam aplikasi dan sistem Anda sendiri. Membangun Image Ada dua cara untuk membangun image. Anda dapat memodifikasi kontainer yang ada dan kemudian melakukannya sebagai image baru, atau Anda dapat menulis Dockerfile dan membangun image. Kita akan melakukan keduanya dan menjelaskan pro dan kontra. Membangun Manual Dengan membangun manual, Anda memperlakukan kontainer Anda seperti komputer biasa. Anda menginstal paket, Anda menulis file, dan ketika itu semua dikatakan dan dilakukan, Anda melakukan commit dan berakhir dengan image baru yang Anda gunakan sebagai template untuk membuat lebih banyak kontainer identik atau bahkan dasar untuk image lain. Mari kita mulai dengan image alpine, yang merupakan image yang sangat kecil dan sederhana berbasis Alpine Linux. Kita dapat menjalankannya dalam modus interaktif untuk masuk ke sebuah shell. Tujuan kami adalah untuk menambahkan sebuah file bernama "yeah" yang berisi teks "it works!" ke direktori root dan kemudian membuat image baru darinya yang disebut "yeah-alpine". Kita mulai. Bagus, kami sudah dalam dir root. Mari kita lihat apa yang ada di sana. 1 > docker run -it alpine /bin/sh 2 / ls 3 bin dev etc home lib linuxrc media mnt proc root run sbin srv sys tmp usr var Editor apa tersedia? Tidak ada vim, tidak ada nano? 1 / vim 2 /bin/sh vim not found 3 / nano 4 /bin/sh nano not found Oh, baiklah. Kami hanya ingin membuat file 1 / echo "it works!" > yeah 2 / cat yeah 3 it works! 4 Saya keluar dari shell interaktif, dan saya bisa melihat kontainer yang bernama "vibrant_spenc" dengan docker ps -all. Flag -all penting karena kontainer sudah tidak berjalan lagi. 1 > docker ps -all 2 CONTAINER ID IMAGE COMMAND CREATED STATUS NAMES 3 c8faeb05de5f alpine "/bin/sh" 6 minutes ago Exited vibrant_spence Di sini, saya membuat image baru dari kontainer "vibrate_spence". Saya menambahkan pesan commit "mine, mine, mine" untuk pengukuran yang baik. 1 > docker commit -m "mine, mine, mine" vibrant_spence yeah-alpine 2 sha256e3c98cd21f4d85a1428...e220da99995fd8bf6b49aa Mari kita periksa. Yep, ada image baru, dan dalam history-nya, Anda dapat melihat lapisan baru dengan komentar "mine, mine, mine". 1 > docker images 2 REPOSITORY TAG IMAGE ID SIZE 3 yeah-alpine latest e3c98cd21f4d MB 4 python latest 775dae9b960e 687 MB 5 d4w/nsenter latest 9e4f13a0901e kB 6 ubuntu-with-ssh latest 87391dca396d 221 MB 7 ubuntu latest bd3d4369aebc 127 MB 8 hello-world latest c54a2cc56cbb kB 9 alpine latest 4e38e38c8ce0 MB 10 nsqio/nsq latest 2a82c70fe5e3 MB 11 12 > docker history yeah-alpine 13 IMAGE CREATED SIZE COMMENT 14 e3c98cd21f4d 40 seconds ago 66 B mine, mine, mine 15 4e38e38c8ce0 7 months ago MB Sekarang untuk ujian yang sebenarnya. Mari kita menghapus kontainernya dan membuat kontainer baru dari image. Hasil yang diharapkan adalah bahwa file "yeah" akan hadir dalam kontainer baru. 1 > docker rm vibrant_spence 2 vibrant_spence 3 4 > docker run -it yeah-alpine /bin/sh 5 / cat yeah 6 it works! 7 / Apa yang bisa saya katakan? Ya, itu berhasil! Menggunakan Dockerfile Menciptakan image dari memodifikasi kontainer itu keren, tapi ada tidak ada akuntabilitas. Sulit untuk melacak perubahan dan mengetahui manakah modifikasi tertentu. Cara disiplin untuk membuat image adalah membangun mereka menggunakan Dockerfile. Dockerfile adalah file teks yang mirip dengan skrip shell, tapi mendukung beberapa perintah. Setiap perintah yang memodifikasi sistem file membuat lapisan baru. Pada bagian satu kita membahas pentingnya membagi image Anda menjadi lapisan dengan benar. Dockerfile adalah topik yang besar dengan dirinya. Di sini, saya akan hanya menunjukkan beberapa perintah untuk membuat image yang lain, "oh-yeah-alpine", berdasarkan Dockerfile. Selain menciptakan file "yeah" yang terkenal, mari kita juga menginstal vim. Distribusi Linux alpine menggunakan sistem manajemen paket yang disebut "apk". Berikut adalah Dockerfile-nya 1 FROM alpine 2 3 Copy the "yeah" file from the host 4 COPY yeah /yeah 5 6 Update and install vim using apk 7 RUN apk update && apk add vim 8 9 CMD cat /yeah Image dasarnya alpine. Itu menyalin file "yeah" dari direktori host yang sama di mana Dockerfile berada jalur konteks membangun. Kemudian, dia menjalankan apk update dan menginstal vim. Akhirnya, dia menetapkan perintah yang dijalankan ketika kontainer berjalan. Dalam kasus ini dia akan mencetak ke layar isi file "yeah". Oke. Sekarang kita tahu apa yang kita hadapi, mari kita membangun ini. Pilihan "-t" mengatur repositori. Saya tidak menentukan tag, sehingga akan menggunakan default "latest". 1 > docker build -t oh-yeah-alpine . 2 Sending build context to Docker daemon kB 3 Step 1/4 FROM alpine 4 -> 4e38e38c8ce0 5 Step 2/4 COPY yeah /yeah 6 -> 1b2a228cc2a5 7 Removing intermediate container a6221f725845 8 Step 3/4 RUN apk update && apk add vim 9 -> Running in e2c0524bd792 10 fetch 11 fetch 12 [ 13 [ 14 OK 5977 distinct packages available 15 1/5 Installing 16 2/5 Installing ncurses-terminfo-base 17 3/5 Installing ncurses-terminfo 18 4/5 Installing ncurses-libs 19 5/5 Installing vim 20 Executing 21 OK 37 MiB in 16 packages 22 -> 7fa4cba6d14f 23 Removing intermediate container e2c0524bd792 24 Step 4/4 CMD cat /yeah 25 -> Running in 351b4f1c1eb1 26 -> e124405f28f4 27 Removing intermediate container 351b4f1c1eb1 28 Successfully built e124405f28f4 Terlihat baik. Mari kita pastikan image yang sudah dibuat 1 > docker images grep oh-yeah 2 3 oh-yeah-alpine latest e124405f28f4 About a minute ago MB Perhatikan bagaimana menginstal vim dan dependensinya membengkakkan ukuran kontainer dari basis image alpine basis menjadi 30,5MB yang masif! Hal ini semua sangat bagus. Tapi apakah itu bekerja? 1 > docker run oh-yeah-alpine 2 it works! Oh ya, ia bekerja! Apabila Anda masih penasaran, mari kita pergi ke dalam kontainer dan memeriksa file "yeah" dengan vim kami yang baru saja diinstal. 1 > docker run -it oh-yeah-alpine /bin/sh 2 / vim yeah 3 4 it works! 5 ~ 6 ~ 7 . 8 . 9 . 10 ~ 11 "yeah" 1L, 10C Konteks Membangun dan file .dockerignore Saya tidak memberitahu Anda, tapi awalnya ketika saya mencoba untuk membangun image oh-yeah-alpine, itu hanya tergantung selama beberapa menit. Masalahnya adalah bahwa saya hanya meletakkan Dockerfile di direktori home saya. Ketika Docker membangun sebuah image, itu pertama kali membungkus seluruh direktori di mana Dockerfile berada termasuk sub-direktori dan membuatnya tersedia untuk perintah COPY di Dockerfile. Docker tidak mencoba untuk menjadi pintar dan menganalisis perintah COPY Anda. Dia hanya membungkus segala sesuatu. Perhatikan bahwa membangun konten tidak akan berakhir dalam image Anda, tapi itu akan memperlambat perintah membangun Anda jika konteks membangun Anda tidak perlu besar. Dalam hal ini, saya hanya menyalin Dockerfile dan "yeah" ke sub-direktori dan menjalankan perintah docker build di sub-direktori itu. Tetapi kadang-kadang Anda memiliki pohon direktori rumit yang Anda ingin menyalin file dan sub-direktori tertentu dan mengabaikan lainnya. Masukkan ke file .dockerignore. File ini memungkinkan Anda mengontrol persis apa yang terjadi ke dalam konteks membangun. Trik favorit saya adalah pertama mengecualikan segala sesuatu dan kemudian mulai memasukkan sedikit dan potongan-potongan yang saya butuhkan. Sebagai contoh, dalam kasus ini saya bisa membuat file .dockerignore berikut dan menyimpan file Docker dan "yeah" dalam direktori home saya 1 Exclude EVERYTHING first 2 * 3 4 Now selectively include stuff 5 !yeah Ada tidak perlu memasukkan "Dockerfile" itu sendiri atau file ".dockerignore" dalam konteks membangun. Menyalin vs Mounting Menyalin file ke dalam image adalah sesuatu yang kadang-kadang Anda butuhkan, tetapi dalam kasus lain, Anda mungkin ingin kontainer Anda menjadi lebih dinamis dan bekerja dengan file pada host. Ini adalah dimana volume dan mount mulai bekerja. Mount direktori host adalah permainan bola yang berbeda. Data ini dimiliki oleh host dan bukan oleh kontainer. Data dapat dimodifikasi ketika kontainer berhenti. Kontainer yang sama dapat dimulai dengan direktori host berbeda yang di-mount. Men-tag Image Men-tag image ini sangat penting jika Anda mengembangkan sistem berbasis microservices dan Anda menghasilkan banyak image yang kadang-kadang harus dikaitkan dengan satu sama lain. Anda dapat menambahkan tag sebanyak yang Anda inginkan ke image. Anda telah melihat tag default "latest". Kadang-kadang, masuk akal untuk menambahkan tag lain, seperti "tested", " atau git commit yang sesuai dengan image. Anda dapat men-tag image saat membangun atau setelahnya. Berikut adalah cara untuk menambahkan tag ke image yang sudah ada. Perhatikan bahwa sementara ini disebut tag, Anda juga dapat menetapkan repositori baru. 1 > docker tag oh-yeah-alpine oh-yeah-alpinecool-tag 2 > docker tag oh-yeah-alpine oh-yeah-alpine-2 3 4 > docker images grep oh-yeah 5 oh-yeah-alpine-2 latest e124405f28f4 MB 6 oh-yeah-alpine cool-tag e124405f28f4 MB 7 oh-yeah-alpine latest e124405f28f4 MB Anda juga dapat untag dengan menghapus image berdasarkan nama tag-nya. Ini sedikit menakutkan karena jika Anda menghapus tag terakhir karena ketidaksengajaan, Anda akan kehilangan image. Tapi jika Anda membangun image dari Dockerfile, Anda dapat hanya membangun ulang image. 1 > docker rmi oh-yeah-alpine-2 2 Untagged oh-yeah-alpine-2latest 3 4 > docker rmi oh-yeah-alpinecool-tag 5 Untagged oh-yeah-alpinecool-tag Jika saya mencoba untuk menghapus image yang di-tag yang terakhir tersisa, saya mendapatkan error karena digunakan oleh sebuah kontainer. 1 > docker rmi oh-yeah-alpine 2 3 Error response from daemon conflict unable to remove repository 4 reference "oh-yeah-alpine" must force - 5 container a1443a7ca9d2 is using its referenced image e124405f28f4 Tetapi jika saya menghapus kontainer... 1 > docker rmi oh-yeah-alpine 2 Untagged oh-yeah-alpinelatest 3 Deleted sha256e124405f28f48e...441d774d9413139e22386c4820df 4 Deleted sha2567fa4cba6d14fdf...d8940e6c50d30a157483de06fc59 5 Deleted sha256283d461dadfa6c...dbff864c6557af23bc5aff9d66de 6 Deleted sha2561b2a228cc2a5b4...23c80a41a41da4ff92fcac95101e 7 Deleted sha256fe5fe2290c63a0...8af394bb4bf15841661f71c71e9a 8 9 > docker images grep oh-yeah Yap. Itu hilang. Tapi jangan khawatir. Kita dapat membangunnya kembali 1 > docker build -t oh-yeah-alpine . 2 3 > docker images grep oh-yeah 4 oh-yeah-alpine latest 1e831ce8afe1 1 minutes ago MB Yay, dia telah kembali. Dockerfile untuk kemenangan! Bekerja dengan Registry Image Image sangat mirip dalam beberapa hal ke repositori git. Mereka juga dibangun dari set teratur commit. Anda dapat menganggap dua image yang menggunakan basis image yang sama sebagai cabang walaupun tidak ada penggabungan atau rebasing di Docker. Registry image adalah setara dengan layanan hosting git pusat seperti GitHub. Tebak apa nama resmi registry image Docker? Ya benar, Docker Hub. Mem-pull Image Ketika Anda menjalankan sebuah image, jika tidak ada, Docker akan mencoba untuk menarik salah satunya dari registry image yang sudah Anda konfigurasi. Secara default mengarah ke Docker Hub, tapi Anda dapat mengendalikannya dalam file "~/.docker/ Anda. Jika Anda menggunakan registri yang berbeda, Anda dapat mengikuti petunjuk mereka, yang biasanya melibatkan log in menggunakan kredensial mereka. Mari kita menghapus image "hello-world" dan menariknya lagi menggunakan perintah docker pull. 1 > dockere images grep hello-world 2 hello-world latest c54a2cc56cbb 7 months ago kB 3 4 > docker rmi hello-world 5 hello-world Itu sudah hilang. Mari kita sekarang melakukan pull. 1 > docker pull hello-world 2 Using default tag latest 3 latest Pulling from library/hello-world 4 78445dd45222 Pull complete 5 Digest sha256c5515758d4c5e1e...07e6f927b07d05f6d12a1ac8d7 6 Status Downloaded newer image for hello-worldlatest 7 8 > dockere images grep hello-world 9 hello-world latest 48b5124b2768 2 weeks ago kB Hello-world terakhir telah digantikan oleh versi yang lebih baru. Mem-publish Image Mem-push image agak membutuhkan usaha. Pertama Anda perlu membuat akun di Docker Hub atau registri lainnya. Selanjutnya, Anda log in. Kemudian Anda perlu untuk men-tag image yang ingin Anda push menurut nama akun Anda "g1g1" dalam kasus saya. 1 > docker login -u g1g1 -p 2 Login Succeeded 3 4 > docker tag hello-world g1g1/hello-world 5 6 > docker images grep hello 7 8 g1g1/hello-world latest 48b5124b2768 2 weeks ago kB 9 hello-world latest 48b5124b2768 2 weeks ago kB Sekarang, saya dapat mem-push image yang di-tag g1g1/hello-world. 1 > docker push g1g1/hello-world 2 The push refers to a repository [ 3 98c944e98de8 Mounted from library/hello-world 4 latest digest sha256c5515758d4c5e...f6d12a1ac8d7 size 524 Kesimpulan Image Docker adalah template untuk kontainer Anda. Mereka dirancang untuk menjadi efisien dan menawarkan penggunaan ulang maksimal dengan menggunakan driver penyimpanan sistem file berlapis. Docker menyediakan banyak alat untuk daftar, memeriksa, pembangunan dan penandaan image. Anda dapat pull dan push image ke registri image seperti Docker Hub untuk dengan mudah mengelola dan berbagi image.
Home» » Membuat Rumah Kontainer Sendiri Membuat Rumah Kontainer Sendiri. January 18, 2020 No comments: Akibat Modal Minim Ibu Ini Nekat Bangun Rumah Dari Kontainer Rumah Kontainer Ide Hunian Masa Kini Untuk Kaum Urban Fabelio Com Rumah Kontainer Definisi Tata Cara Dan 5 Inspirasi Desain Terkini
Jan 18, 2023 Faradilla A. 2menit Dibaca Mencari panduan untuk belajar Docker? Anda sudah membaca artikel yang tepat! Docker adalah software yang menjadi solusi bagi para programmer untuk menyediakan kode yang bisa dijalankan di lingkungan pengembangan maupun produksi. Di artikel ini, kami akan membahas cara membuat Docker container di Virtual Private Server serta beberapa tips dan command yang digunakan. Kalau Anda tertarik mempelajarinya, yuk, baca sampai selesai! Apa Itu Container Docker? Dalam penggunaan Docker, Container adalah sebuah lingkungan khusus yang dibuat untuk instance Docker image. Menjalankan sebuah Image akan menghasilkan satu Docker container. Image menyediakan template yang bisa digunakan dalam pembuatan container. Image mungkin berisi informasi yang dibutuhkan untuk membuat container, dan bisa disimpan di komputer atau secara remote. Cara Membuat Container Docker Sebelum mulai mengikuti panduan belajar Docker ini, Anda perlu mengakses hosting VPS dengan SSH. Kalau menjumpai masalah, silakan baca tutorial PuTTY kami yang akan membantu Anda. Untuk menampilkan semua Docker image yang ada di sistem Anda, gunakan command berikut sudo docker images Kalau ingin menampilkan informasi tambahan, masukkan command berikut ke command line sudo docker images -help Pada contoh ini, kami belum memiliki Docker Image satu pun, jadi kami akan melakukan pull image lebih dulu. Buka Docker Hub, yang berisi ratusan Docker Image. Di sini kami akan mengambil image Ubuntu. Anda bisa mengklik setiap image untuk mengetahui detailnya masing-masing. Anda bisa melakukan pull image dengan command berikut docker pull Ganti dengan ratusan image yang bisa Anda temukan di Docker Hub seperti CentOS, MySQL, mariaDB, Python, dll. Untuk mencantumkan hanya angka ID Image yang tersedia di dalam sistem, gunakan opsi -q. sudo docker images -q Kemudian, -f adalah filter flag. Kalau Anda ingin menampilkan semua image yang tidak berkaitan dangling, yaitu yang ditag atau dirujuk oleh container lain, gunakan command berikut sudo docker images -f “dangling=false” Setelah tahu cara pull dan menemukan image untuk membuat container Docker, mari mulai cara membuat Docker container. Berikutnya, kami akan mencoba menjalankan image, yang berarti membuat container dari image tersebut. Kami akan mencoba menjalankan image Ubuntu tadi. Gunakan command berikut untuk membuat container Docker docker run Untuk menjalankan image Ubuntu, gunakan command berikut docker run ubuntu Sekarang, container sudah dibuat, tapi belum berjalan. Untuk mengaktifkan container, jalankan command berikut docker run -name MyContainer -it ubuntu bash Dari kode di atas, -name MyContainer merupakan nama yang kita inginkan untuk proses yang sedang berjalan, sedangkan -it ubuntu bash akan menamai container yang dijalankan. Buka jendela terminal lainnya, gunakan SSH untuk terhubung ke server, dan jalankan command ini sudo docker ps -a Hasilnya, kita bisa melihat bahwa container yang diberi nama MyContainer sekarang sudah berjalan. Untuk menghentikan container, jalankan command berikut sudo docker stop MyContainer Kalau ingin melihat proses teratas container, gunakan command berikut docker top Dengan nama yang tadi digunakan dalam contoh ini, kodenya akan menjadi seperti berikut sudo docker top MyContainer Untuk melihat statistik container, misalnya penggunaan CPU, penggunaan memori, dan lainnya, ketik command docker stats Terakhir, untuk melakukan kill Docker container, jalankan command berikut sudo docker kill MyContainer Selesai! Anda sudah selesai mempelajari cara membuat Docker Container dan menggunakannya. Kesimpulan Docker merupakan tool yang sangat berguna bagi developer. Fungsinya untuk mengetes, meluncurkan deploy, dan mengembangkan aplikasi tanpa masalah menjadi terobosan yang sangat membantu mempercepat alur kerja workflow. Di tutorial ini, Anda telah mempelajari cara membuat container Docker beserta sejumlah command yang diperlukan untuk menjalankan semua operasi terkait Docker container. Kalau ingin belajar Docker lebih lanjut, silakan baca tutorial kami lainnya, atau Anda juga bisa membaca panduan resmi Docker. Terima kasih sudah membaca! Faradilla, yang lebih akrab disapa Ninda, adalah Content Manager di Hostinger. Ia suka mengikuti tren seputar teknologi, digital marketing, dan belajar bahasa. Melalui tutorial Hostinger ini, Ninda ingin berbagi informasi dan membantu pembaca menyelesaikan masalah yang dialami.4k79pRg.