Apakah Anda ingin menjalankan Jenkins di Docker tetapi tidak yakin apakah akan menggunakan volume atau menyimpan data dalam wadah? Jika Jenkins dalam wadah, bagaimana Anda membuat cadangan data? Apakah Anda perlu mencadangkan seluruh wadah? Bisakah informasi bertahan di luar wadah, dan bagaimana caranya? Menggunakan Docker Compose dengan volume dapat membantu Anda memastikan bahwa data Jenkins Anda aman meskipun wadah Docker rusak.
Selain mencadangkan data, menggunakan volume Docker memungkinkan Anda juga berbagi data Jenkins di antara beberapa wadah.
Teruskan membaca karena, dalam artikel ini, Anda akan mempelajari cara menjalankan Jenkins menggunakan Docker dan Docker Compose. Anda akan mempelajari cara menemukan dan berpotensi mencadangkan data Jenkins di dalam dan di luar wadah Docker.
Persyaratan
Akan ada banyak contoh pembelajaran dalam artikel ini. Jika Anda ingin mengikuti, Anda memerlukan:
- Komputer dengan Docker dan Tulisan Docker diinstal. Demo dalam artikel ini dilakukan di Ubuntu Server 20.04 . Anda dapat menggunakan Docker di Windows atau macOS jika Anda mau.
Artikel ini tidak membahas cara menginstal dan mengatur Docker dan Docker Compose. Anda dapat merujuk ke dokumentasi Docker resmi. Blog ATA juga memiliki banyak artikel yang berhubungan dengan Docker yang mungkin juga ingin Anda baca.
Menjalankan Jenkins di Docker
Untuk menjalankan instance Jenkins di Docker, Anda harus terlebih dahulu menarik image dari repositori. Dalam contoh ini, gambar Jenkins diambil dari Docker Hub . Anda memiliki opsi untuk mengunduh gambar terlebih dahulu sebelum membuat wadah. Atau Anda juga dapat menjalankan wadah dan membiarkan Docker mengunduh gambar dengan cepat.
Perintah di bawah ini akan menjalankan wadah Jenkins menggunakan docker run
memerintah. --name [NAME]
opsi adalah tempat Anda menetapkan nama untuk wadah Docker. Jika nama container tidak ditentukan, Docker memberikan nama acak ke container.
-p [host-port:container-port]
option berarti mengekspos port atau port di dalam wadah ke komputer host Anda. Pada kode di bawah ini, port 8080 dan 50000 diekspos ke host Docker menggunakan nomor port yang sama.
Terakhir, jenkins/jenkins:lts
artinya container yang akan dijalankan akan menggunakan jenkins:lts Gambar buruh pelabuhan dari repositori Jenkins . Anda dapat mengubah nilai nama dan port host nomor jika diperlukan, tetapi jangan ubah wadah nomor port.
Silakan salin kode di bawah ini dan jalankan di terminal Anda.
docker run --name my-jenkins-1 -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts
Setelah menjalankan perintah di atas, Docker mulai membuat wadah baru. Setelah wadah Jenkins berjalan, catat kata sandi admin awal yang ditampilkan di terminal. Kata sandi admin diperlukan selama penyiapan awal Jenkins.
Menyelesaikan Penyiapan Awal Jenkins
Setelah wadah Jenkins memasuki status berjalan, Anda sekarang dapat mengakses halaman admin Jenkins. Jika Anda ingat dari perintah yang Anda gunakan untuk membuat container, nomor portnya adalah 8080. Jadi untuk mengakses instance Jenkins, navigasikan ke HTTP://localhost:8080 .
Seperti yang Anda lihat di bawah, Buka Kunci Jenkins halaman mengharuskan Anda memasukkan kata sandi admin awal. Anda harus menyalin kata sandi admin awal sebelumnya. Masukkan kata sandi di Kata sandi administrator kotak dan klik Lanjutkan .
Di Sesuaikan Jenkins halaman, Anda akan memiliki opsi untuk Menginstal plugin yang disarankan . Plugin yang disarankan ini adalah plugin yang biasanya dipasang oleh komunitas Jenkins. Jika Anda memiliki kumpulan plugin yang telah dipilih sebelumnya untuk dipasang, pilih Pilih plugin untuk dipasang pilihan.
Untuk mempermudah, Instal plugin yang disarankan adalah opsi yang dipilih untuk contoh ini.
Plugin akan diinstal, dan Anda hanya bisa menunggu sampai instalasi selesai. Seperti yang Anda lihat di bawah, ada empat belas (14) plugin yang disarankan sedang diinstal. Jumlah plugin yang direkomendasikan dapat bertambah atau berkurang seiring waktu. Saat Anda menginstal instance Jenkins, plugin yang disarankan mungkin sudah berbeda.
Segera setelah penginstalan plugin selesai, Anda akan melihat Buat Pengguna Admin Pertama halaman. Halaman ini adalah tempat Anda akan membuat akun administrator Jenkins pertama. Isi semua kotak sesuai kebutuhan dan klik Simpan dan Lanjutkan. Pastikan untuk mengingat kredensial administrator yang baru saja Anda buat.
Pada Konfigurasi Instance halaman adalah tempat Anda dapat mengubah URL halaman admin Jenkins. Nilai URL biasanya adalah URL aktual yang akan diakses oleh pengguna Jenkins. Untuk contoh ini, biarkan nilai default http://localhost:8080 dan klik Simpan dan Selesai .
Pada halaman penyiapan terakhir, Anda akan melihat konfirmasi bahwa penyiapan Jenkins telah selesai. Klik Mulai gunakan Jenkins .
Saat Anda melihat Selamat datang di Jenkins halaman, seperti yang ditunjukkan di bawah ini, maka Anda telah menyelesaikan instalasi Jenkins. Pada titik ini, Anda dapat mulai mengonfigurasi Jenkins dan membuat item atau proyek baru.
Menemukan Data Jenkins dalam Penampung
Di bagian sebelumnya, Anda membuat wadah Docker untuk menjalankan instance Jenkins. Wadah Docker, seperti semua hal lain di komputer, dapat rusak. Jika penampung menjadi tidak tersedia karena suatu alasan, maka data Jenkins juga hilang.
Untuk lebih memahami penempatan data Jenkins, kode di bawah ini menggunakan docker exec
perintah untuk membuat daftar isi /var/jenkins_home . Nama container Docker dalam contoh ini adalah my-jenkins-1.
docker exec my-jenkins-1 ls -l /var/jenkins_home
Anda dapat melihat di bawah hasil menjalankan perintah di atas. Isi /var/jenkins_home direktori terdaftar. /var/jenkins_home direktori berisi pengaturan, pengguna, plugin, dan item penting lainnya.
Mencadangkan Data Jenkins dari Penampung ke Host
Pada titik ini, Anda telah mengonfirmasi bahwa data Jenkins ditemukan di dalam wadah. Anda harus menyalin data Jenkins dari wadah ke Host. Dan setelah data Jenkins keluar dari wadah, Anda dapat mengambil cadangannya.
Ini adalah hal yang baik bahwa Docker memiliki dukungan bawaan untuk menyalin file antara wadah Docker dan host Docker. Menggunakan perintah docker cp <container id>:/path/in/container /path/in/host
Contoh di bawah ini menggunakan docker cp
perintah untuk menyalin data wadah my-jenkins-1 ke lokasi host Docker. Perhatikan bahwa container bahkan tidak perlu dijalankan untuk menjalankan perintah ini dengan sukses.
docker cp my-jenkins-1:/var/jenkins_home ~/jenkins_backup
Demo di bawah ini menunjukkan perintah di atas beraksi. Seperti yang Anda lihat, direktori tujuan secara otomatis dibuat oleh perintah.
Sekarang setelah Anda mengekstrak data Jenkins dari wadah, Anda mungkin dapat mengompres dan mengarsipkan seluruh folder. Anda mungkin perlu melakukan tugas yang sama setiap kali membuat perubahan pada Jenkins.
Menjalankan Jenkins di Docker dengan Volume Mount
Untuk membuat data Jenkins Anda persisten dan konsisten di luar wadah Docker, Anda harus menggunakan volume Docker .
Seperti yang dijelaskan di bagian sebelumnya, file konfigurasi Jenkins terletak di dalam container Docker di /var/jenkins_home . Untuk memastikan bahwa file Jenkins disimpan di luar wadah, Anda dapat menggunakan -v
opsi dengan docker run
perintah.
Kode di bawah ini akan membuat wadah Docker baru dengan nama my-jenkins-2 . Port 8080 dan 50000 akan diekspos ke host. Selain itu, /var/jenkins_home direktori di dalam wadah Docker akan dipasang sebagai volume di host sebagai jenkins_home.
docker run --name my-jenkins-2 -p 8080:8080 -p 50000:50000 -v jenkins_home:/var/jenkins_home jenkins/jenkins:lts
Setelah menjalankan perintah di atas, wadah Docker baru harus dibuat dan masuk ke status berjalan. Anda dapat mengonfirmasi bahwa container sedang berjalan menggunakan perintah docker ps.
Mencantumkan semua container yang sedang berjalan
Menemukan Data Jenkins di Host Docker
Jadi, di mana folder data Jenkins sekarang? Berdasarkan perintah yang Anda gunakan untuk membuat wadah my-jenkins-2, volume yang dipasang adalah jenkins_home . Untuk mengetahui di mana dalam sistem file adalah jenkins_home lokasi dapat ditemukan, gunakan docker volume
perintah.
Perintah di bawah ini akan menampilkan detail jenkins_home volume pada host Docker.
docker volume inspect jenkins_home
Tangkapan layar di bawah menunjukkan informasi tentang jenkins_home volume sebagai hasil menjalankan perintah di atas.
Sekarang setelah Anda tahu di mana menemukan data Jenkins, Anda dapat mengonfirmasi dengan menjelajahi lokasi titik pemasangan. Dalam contoh ini, jenkins_home titik pemasangan volume ada di /var/lib/docker/volumes/jenkins_home/_data .
Sekarang setelah data Jenkins tetap ada di luar wadah, Anda dapat membuat cadangan direktori untuk diamankan. Selain itu, meskipun penampung Jenkins dihapus, data akan tetap berada di host Docker.
Menjalankan Jenkins menggunakan Docker Compose dengan Volume
Cara lain untuk menjalankan Jenkins adalah dengan menggunakan docker-compose
memerintah. Dengan Tulisan Docker , Anda dapat menerapkan satu atau beberapa instance Jenkins, jika diperlukan. Tetapi sebelum melakukannya, Anda perlu membuat file Tulis Docker untuk setiap contoh.
Membuat File Penulisan Docker
Secara default, docker-compose
perintah membaca file dengan nama docker-compose.yml atau docker-compose.yaml di direktori kerja yang sama tempat Anda mengeluarkan perintah.
Menggunakan editor teks pilihan Anda yang tersedia, buka file kosong baru. Kemudian, salin kode YAML di bawah ini, tempel di editor Anda, lalu simpan docker-compose.yml berkas.
# docker-compose.yml
version: '3.7'
services:
jenkins:
image: jenkins/jenkins:lts
privileged: true
user: root
ports:
- 8083:8080
- 50003:50000
container_name: my-jenkins-3
volumes:
- ~/jenkins_data:/var/jenkins_home
- /var/run/docker.sock:/var/run/docker.sock
Artikel ini tidak membahas anatomi file Docker Compose. Anda dapat berkonsultasi dengan dokumentasi referensi penulisan file resmi untuk memahami lebih lanjut apa arti setiap pengaturan dalam file penulisan.
Namun, dalam contoh ini, Anda dapat menguraikan pengaturan terpenting di kedua file Docker Compose seperti yang tercantum di bawah ini.
- gambar :Ini adalah gambar dasar yang digunakan untuk membuat instance container Docker.
- port :Ini adalah tempat untuk menentukan pemetaan port antara host Docker dan container.
- volume :Ini adalah volume yang dipetakan antara host Docker dan container.
- nama_wadah :Ini adalah nama yang ingin Anda tetapkan ke wadah yang Anda buat. Dalam contoh ini, nama wadahnya adalah my-jenkins-3 .
Memulai Jenkins Container menggunakan Docker Compose
Sekarang setelah Anda menyimpan dua file Docker Compose, Anda sekarang dapat menggunakannya untuk memulai dua instance container Jenkins Docker.
Untuk memulai my-jenkins-3 wadah, gunakan perintah di bawah ini. Perhatikan bahwa perintah di bawah ini mengasumsikan bahwa docker-compose.yml file berada di direktori yang sama tempat Anda menjalankan perintah.
# Start the my-jenkins-3 container
docker-compose up -d
# Get the initial admin password
docker exec my-jenkins-3 cat /var/jenkins_home/secrets/initialAdminPassword
# Confirm the my-jenkins-3 container is running
docker ps
jenkins-3 saya container kemudian memulai dan memasuki status berjalan, seperti yang Anda lihat di bawah.
Arahkan URL http://localhost:8083 menggunakan browser Anda untuk mengakses Jenkins dan selesaikan penyiapan awal.
Setelah Anda menyelesaikan penyiapan Jenkins awal untuk my-jenkins-3 container, Anda dapat mengonfirmasi bahwa folder ~/jenkins_data telah diisi dengan file data Jenkins.
Karena file data Jenkins tetap ada di Host Docker, meskipun my-jenkins-3 wadah buruh pelabuhan dihapus, konfigurasi akan bertahan. Untuk menguji lebih lanjut kegigihan konfigurasi Jenkins, hentikan my-jenkins-3 container menggunakan perintah di bawah ini.
docker-compose down
Perhatikan bahwa menggunakan downer-compose down
perintah secara otomatis menghapus wadah itu sendiri.
Sekarang, mulai my-jenkins-3 up lagi menggunakan perintah di bawah ini.
docker-compose up -d
Dan saat Anda mengakses antarmuka web Jenkins, halaman pertama yang akan Anda lihat adalah halaman login, bukan halaman pengaturan awal. Anda akan menemukan bahwa konfigurasi Jenkins yang sama dipertahankan, termasuk kredensial login Anda.
Ringkasan
Dalam artikel ini, Anda mempelajari cara menjalankan Jenkins menggunakan Docker dengan berbagai cara. Anda telah belajar cara menjalankan Jenkins di Docker dengan dan tanpa volume terpasang. Dan Anda telah mempelajari cara mencadangkan data Jenkins dari dalam container ke host.
Anda juga mempelajari cara menjalankan instance Jenkins menggunakan Docker Compose dengan volume yang dipetakan ke host Docker. File data Jenkins kemudian disimpan di host Docker, membuat setelan Jenkins tetap dan konsisten meskipun wadah Docker dihapus.
Menggunakan Docker dan Docker Compose dengan volume memberi Anda fleksibilitas untuk mencadangkan dan akhirnya menggunakan kembali data Jenkins. Metode menjalankan Jenkins di Docker mana yang menurut Anda akan lebih banyak digunakan?
Bacaan Lebih Lanjut
- Menyebarkan Kontainer Pertama Anda dengan Docker untuk Windows
- Cara Membuat (dan Mengelola) Volume Docker di Windows
- Cara Menginstal Ubuntu 20.04 [Langkah-demi-Langkah]