Gambar demo Docker yang akan kita gunakan melayani halaman web dengan beberapa properti dasar seperti nama host, alamat IP, dan port Show
2. 2. Menjalankan Banyak Kontainer dan Menyebabkan KesalahanUntuk menyebabkan error, kita perlu menjalankan dua instance yang akan menggunakan nama yang sama, baeldung_nginx Perlu dipertimbangkan mengapa kita membutuhkan nama untuk sebuah wadah. Nama bisa menjadi cara praktis untuk menambah arti pada daftar container yang sedang berjalan. Terlebih lagi, nama tersebut dapat digunakan sebagai referensi di jaringan Docker Mari kita mulai wadah pertama
Kami menjalankan penampung dalam mode terpisah, yang berarti penampung akan berjalan di latar belakang. Kami memublikasikan port 80 penampung ke port yang sama di mesin host. Terakhir, kami telah menentukan nama khusus kami untuk wadah – baeldung_nginx Sekarang, jika kita membuka http. //localhost di browser kita, kita akan melihat sesuatu yang mirip dengan ini _Sekarang mari kita coba menjalankan wadah kedua. Kami akan menetapkan port 81 untuk instance kedua karena port host 80 sudah diambil oleh container pertama
Sayangnya, ini tidak berhasil. Kami mendapatkan kesalahan
3. Menjelaskan Akar Penyebab KesalahanSetiap wadah Docker memiliki nama unik yang ditetapkan untuknya. Jika kita tidak menggunakan argumen nama opsional dalam perintah docker run, Docker akan memberikan nama acak Dalam kasus kami, kami ingin menetapkan nama yang sama, baeldung_nginx, ke dua penampung yang berbeda. Kita harus mencatat bahwa meskipun kita menggunakan image Docker yang sama, setiap perintah docker run membuat container baru Karena penampung kedua tidak dapat menggunakan nama yang sudah digunakan, kami mendapatkan kesalahan 4. Bagaimana memperbaikinya4. 1. Memulai ulang KontainerSolusi ini berlaku untuk kasus di mana wadah Docker bernama baeldung_nginx sudah ada di sistem, dan itu adalah status yang benar. Dalam hal ini, kami tidak ingin memiliki dua instance berbeda dengan nama yang sama. Sebaliknya, kami ingin memulai ulang penampung yang sudah ada. Untuk memulai ulang container yang ada, kita harus menggunakan docker start sebagai ganti < . docker run command. docker run membuat wadah baru dari suatu gambar. Kita dapat membuat klon dari gambar yang sama sebanyak mungkin. Di sisi lain, docker start meluncurkan container yang sebelumnya dihentikan. Jadi, kita mungkin tidak mencoba memulai wadah baru sebanyak memulai ulang wadah yang sudah ada, dalam hal ini adalah solusinya. Namun, terkadang kami ingin meluncurkan pengganti container yang ada dengan image baru 4. 2. Menghapus Kontainer yang AdaKetika kami yakin bahwa kami ingin penampung baru kami mengambil alih nama, dan kami telah menghentikan penampung lain dengan nama ini, kami cukup menghapus penampung sebelumnya dengan nama tersebut
Sayangnya, perintah ini tidak selalu berhasil. Misalnya, wadah lain mungkin memerlukan wadah kami untuk bekerja dengan benar. Jika itu masalahnya dan kami masih ingin menghapus wadah kami, kami dapat menggunakan bendera paksa di perintah hapus _Setelah penampung sebelumnya dihapus, kami bebas meluncurkan penampung baru dengan nama pilihan kami 4. 3. Menggunakan Nama Berbeda untuk KontainerBagaimana jika kita ingin menjalankan dua instance dari image yang sama? . Yang harus kita lakukan adalah menggunakan dua nama serta port yang berbeda Docker adalah salah satu platform yang lebih populer untuk mengembangkan dan menerapkan aplikasi dalam wadah. Kontainer adalah lingkungan terisolasi yang menampung aplikasi beserta semua paket perangkat lunak yang dibutuhkannya. Dengan Docker, Anda dapat menjalankan atau menskalakan aplikasi Anda di lingkungan apa pun MySQL adalah salah satu database relasional paling populer yang kompatibel dengan SQL. Menjalankan MySQL di dalam container Docker memungkinkan Anda memisahkan database dari kode Anda. Anda juga dapat menggunakan container orkestra seperti Kubernetes untuk menskalakan MySQL secara independen dari instance server API Anda Menggunakan wadah memberi Anda manfaat konsistensi. Setelah selesai membangun sistem, Anda dapat menerapkan wadah ke cloud tanpa menginstal dan mengonfigurasi MySQL secara manual di perangkat keras bare-metal Dalam artikel ini, Anda akan mempelajari cara Dockerize database Anda, apa yang perlu Anda ketahui terlebih dahulu, dan mengapa Anda harus mencobanya Merencanakan Penerapan AndaSaat menggunakan Docker dengan MySQL menyederhanakan banyak aspek penerapan Anda, seperti menginstal server dan membuat database, ada beberapa masalah teknis. Yang paling signifikan adalah penyimpanan data. Docker terutama dirancang di sekitar wadah tanpa kewarganegaraan, sementara database MySQL secara inheren bersifat stateful Anda perlu menggunakan volume Docker saat menerapkan wadah MySQL. Volume menyediakan mekanisme untuk mempertahankan file setelah wadah berhenti. Anda akan kehilangan basis data jika memulai ulang wadah MySQL yang tidak menggunakan volume Volume menyimpan data di luar wadah tunggal apa pun. Setelah wadah MySQL Anda berhenti, file yang disimpan dalam volume terpasang akan tetap dapat diakses di host Anda. Anda dapat memasang kembali volume ke wadah baru, menghindari kehilangan data setelah Anda mengganti instans MySQL dengan versi citra baru Gunakan Kasus untuk MySQL di DockerDockerized MySQL bekerja dengan baik dalam lingkungan pengembangan dan pementasan di mana Anda ingin dengan cepat memunculkan instance database yang terisolasi. Jauh lebih cepat dan mudah untuk memulai database di Docker daripada mengonfigurasi instalasi MySQL konvensional di mesin virtual penuh Meskipun Anda dapat menjalankan MySQL secara lokal di host Anda, hal ini menjadi terbatas saat Anda mengerjakan beberapa aplikasi secara bersamaan. Menggunakan wadah menawarkan pemisahan lengkap dari setiap data sistem dan kemampuan untuk menyediakan konfigurasi server MySQL yang unik untuk masing-masing Ada beberapa skenario di mana memilih Dockerize database Anda mungkin kurang berdampak. Menuntut lingkungan produksi mungkin lebih baik dengan server MySQL khusus. Overhead kinerja Docker sederhana tetapi dapat menumpuk di beban kerja intensif I/O seperti yang ada di database tulis-berat. Server produksi bare-metal juga membuat instans Anda dapat diakses oleh orang-orang dalam peran pemeliharaan database yang tidak terbiasa dengan Docker Meskipun demikian, Docker sangat mampu mendukung penerapan database MySQL, dari lingkungan pengembangan lokal hingga produksi. Menggunakannya untuk seluruh siklus Anda menjamin konsistensi. Jika instans produksi Anda menggunakan image Docker yang sama dengan pengembangan, Anda dapat yakin bahwa sistem live Anda akan berperilaku seperti yang dapat diprediksi. Inilah cara menjalankan server MySQL dalam wadah Docker Memulai Wadah MySQL AndaMySQL memiliki gambar Docker resmi yang tersedia di Docker Hub. Identifikasi terlebih dahulu tag gambar yang harus Anda gunakan. MySQL versi 5. 6, 5. 7, dan 8. 0 tersedia Tag _3 menunjuk ke rilis terbaru, saat ini 8. 0. Hindari menggunakan tag ini, karena itu berarti Anda mungkin secara tidak sengaja menerima peningkatan versi MySQL utama di masa mendatang. Merujuk secara khusus versi yang Anda inginkan memungkinkan pendekatan pembaruan yang lebih terkontrolMemulai wadah MySQL untuk pertama kali akan secara otomatis membuat 4 pengguna awal. Anda harus memberikan kata sandi untuk pengguna ini atau meminta MySQL untuk membuatnya. Berikut adalah contoh menjalankan wadah MySQL dasar dengan kata sandi root yang ditentukan Memulai wadah MySQL dan menarik gambar DockerPerintah ini memulai wadah dengan MySQL 8. Kata sandi untuk _4 pengguna diatur secara manual. Bendera 6 berarti kontainer akan berjalan di latar belakang hingga dihentikan, terlepas dari sesi terminal Anda. Anda dapat melihat log startup penampung dengan 7. Ketika "siap untuk koneksi" muncul, database MySQL Anda dapat diaksesLog bootstrap MySQL awalParameter _8 menginstruksikan Docker untuk selalu memulai ulang container. Ini berarti database MySQL Anda akan berjalan tanpa intervensi setelah mesin host melakukan boot ulang atau pembaruan daemon Docker. Kebijakan _9 yang digunakan di sini tidak akan memulai penampung jika Anda menghentikannya secara manual dengan 0Flag 1 Docker memungkinkan penerusan porta ke dalam container sehingga Anda dapat mengakses database Anda di 2. Ini adalah port default MySQL; . Gunakan klien MySQL favorit Anda untuk terhubung melalui port ini dengan 4 dan kata sandi pilihan Anda sebagai kredensial penggunaTanpa mengaktifkan port forwarding, Anda hanya dapat mengakses database Anda dari dalam container. Anda dapat melakukan ini kapan saja dengan menggunakan 4 untuk memasukkan cangkang ke dalam wadah
Perintah ini menjalankan _5 di dalam wadah 6. Bendera _7 berarti aliran input terminal Anda akan diteruskan ke wadah sebagai TTY interaktifMeluncurkan shell MySQL di dalam wadah DockerData Bertahan Dengan VolumeMeskipun penampung yang dibuat di atas adalah server MySQL yang berfungsi penuh, Anda perlu mengatur volume agar data Anda tidak hilang saat penampung berhenti. Gambar MySQL Docker dikonfigurasi untuk menyimpan semua datanya di direktori 8. Memasang volume ke direktori ini akan mengaktifkan penyimpanan data persisten yang bertahan lebih lama dari instance kontainer tunggal mana punHentikan dan hapus penampung Anda sebelumnya untuk menghindari konflik penamaan
Kemudian mulai wadah baru dengan konfigurasi yang telah direvisi
Menggunakan perintah ini untuk memulai wadah MySQL Anda akan membuat volume Docker baru bernama 6. Itu akan dipasang ke wadah di 8, tempat MySQL menyimpan file datanya. Setiap data yang ditulis ke direktori ini sekarang akan disimpan secara transparan di volume yang dikelola Docker di host AndaUlangi langkah-langkah untuk menghentikan dan menghapus penampung Anda Menghentikan dan menghapus wadah DockerUlangi perintah _1 dengan argumen yang sama. Karena 6 bernama volume sudah ada, wadah baru akan menyimpan data yang dibuat oleh yang lama. Jika Anda ingin menghancurkan volume, gunakan 3Menggunakan Jaringan KontainerPada contoh di atas, port forwarding digunakan untuk mengekspos server MySQL di jaringan host Anda. Jika Anda hanya akan terhubung ke MySQL dari dalam wadah Docker lain, seperti server API Anda, pendekatan yang lebih baik adalah membuat jaringan Docker khusus. Ini meningkatkan keamanan dengan membatasi eksposur database Anda Pertama buat jaringan Docker untuk aplikasi Anda
Tentukan jaringan ini saat memulai penampung MySQL Anda
Hubungkan wadah lain ke jaringan yang sama
Container API dan MySQL Anda sekarang berbagi jaringan. Anda dapat terhubung ke MySQL dari penampung API dengan mereferensikan nama host penampung MySQL. Ini cocok dengan nama penampung secara default. Di sini aplikasi Anda harus terhubung ke port 3306 pada host 6Konfigurasi MySQLGambar MySQL resmi mendukung beberapa variabel lingkungan yang dapat Anda gunakan untuk mengonfigurasi status awal wadah Anda. Anda sudah melihatnya, 5. Gunakan bendera _6 dengan 1 untuk menyetel masing-masing variabel ini. Mereka hanya dihormati saat pertama kali wadah dimulai, saat direktori data MySQL kosong
Menggunakan variabel lingkungan ini berarti nilainya akan terlihat oleh siapa saja yang dapat 7 penampung Anda. Pendekatan yang lebih aman adalah menggunakan rahasia atau volume Docker untuk menyuntikkan nilai sebagai fileMySQL menghasilkan kata sandi root acakGambar MySQL mendukung varian tambahan dari masing-masing variabel di atas. Akhiri nama variabel dengan 8 agar nilainya ditafsirkan sebagai jalur ke file yang berisi nilai sebenarnya. Contoh ini menyetel kata sandi pengguna _4 dengan aman dengan cara yang tidak dapat diperiksa dari luar penampung
Kata sandi ditulis ke file yang dipasang ke wadah menggunakan volume Docker. MySQL menginstruksikan bahwa kata sandi bersumber dari file yang dipasang melalui variabel lingkungan 0. Siapa pun yang melihat variabel lingkungan penampung akan melihat jalur file alih-alih kata sandi teks biasaMembuat Gambar KustomAkan sangat membantu untuk membuat gambar Docker Anda sendiri jika aplikasi Anda memerlukan konfigurasi MySQL khusus. Menambahkan lapisan ekstra di atas gambar dasar MySQL resmi memberi Anda gambar yang siap digunakan di mana Anda dapat menghilangkan injeksi manual dari file konfigurasi MySQL Berikut adalah contoh _1 yang mengubah beberapa pengaturan MySQL
Gambar MySQL memuat file konfigurasi yang disimpan di direktori 2. File hanya akan dibaca saat server MySQL dimulai, yaitu saat Anda memulai wadah Docker Anda. Untuk memasukkan konfigurasi Anda ke dalam wadah Anda, gunakan volume Docker lain untuk mengikat mount file Anda, atau gunakan Dockerfile untuk memanggang perubahan Anda menjadi gambar baru 0Bangun citra Anda 1Membangun gambar Docker MySQL khususSekarang Anda dapat menjalankan gambar Anda untuk memulai instance MySQL yang secara otomatis menggunakan file konfigurasi Anda 2Karena gambar khusus Anda didasarkan pada versi Docker Hub resmi, Anda dapat menggunakan semua variabel lingkungan yang ada yang dijelaskan di atas KesimpulanMenjalankan MySQL dalam container Docker memberikan konsistensi dan isolasi lintas lingkungan untuk penerapan database Anda. Anda dapat menggunakan gambar MySQL resmi apa adanya atau membuat gambar khusus Setelah Anda siap untuk beralih ke produksi, Anda dapat menggunakan kembali alur kerja pengembangan untuk mengaktifkan database Anda. Otomatiskan proses dengan meluncurkan wadah Anda di dalam pipa CI/CD Anda, di mana alat seperti Earthly dapat menawarkan build berulang dan wawasan tentang kegagalan apa pun. Earthly menawarkan daemon Docker sesuai permintaan dan reproduktifitas tinggi untuk membantu Anda mengotomatiskan build dengan lebih cepat Saat Anda di sini Earthly adalah kerangka kerja CI/CD yang mudah James Walker James Walker adalah pendiri Heron Web, sebuah studio pengembangan perangkat lunak berbasis di Inggris yang menyediakan solusi khusus untuk UKM. Dia berpengalaman dalam memberikan perangkat lunak khusus menggunakan alur kerja rekayasa yang dibangun di sekitar metodologi DevOps modern. James juga seorang penulis teknis lepas dan telah banyak menulis tentang siklus hidup pengembangan perangkat lunak, tren industri saat ini, serta konsep dan teknologi DevOps Bagaimana Anda menjalankan kembali wadah?Prosedur Hentikan/Mulai Ulang Kontainer . Untuk memverifikasi apakah wadah telah berhenti, jalankan perintah docker ps -a. Status wadah yang dihentikan akan ditampilkan sebagai Keluar. buruh pelabuhan ps -a Start a Docker container in a stopped state docker start Alat apa yang Anda perlukan untuk menarik dan menjalankan wadah buruh pelabuhan MySQL?Langkah 4. Setelah memulai penampung, Anda perlu terhubung ke MySQL dari localhost dengan menggunakan alat GUI seperti MySQL Workbench atau baris perintah.
Bagaimana cara menghapus wadah yang ada?Prosedur untuk menghapus container Docker pengumpul data . Run the following command to remove Docker container: docker stop Opsional. Jalankan perintah berikut untuk menghapus wadah dengan paksa. docker rm -f < Container_ID> Apa perintah untuk menghapus semua kontainer yang berjalan dan berhenti?Gunakan perintah docker container prune untuk menghapus semua container yang terhenti, atau lihat perintah docker system prune untuk menghapus container yang tidak digunakan selain . |