Mulai menggunakan kontainer jarak jauh Docker di WSL 2
Panduan langkah demi langkah ini akan membantu Anda mulai mengembangkan dengan kontainer jarak jauh dengan menyiapkan Docker Desktop untuk Windows dengan WSL 2 (Subsistem Windows untuk Linux, versi 2).
Docker Desktop untuk Windows menyediakan lingkungan pengembangan untuk membangun, mengirim, dan menjalankan aplikasi yang di-docker. Dengan mengaktifkan mesin berbasis WSL 2, Anda dapat menjalankan kontainer Linux dan Windows di Docker Desktop pada komputer yang sama. (Docker Desktop gratis untuk penggunaan pribadi dan bisnis kecil, untuk info tentang harga Pro, Tim, atau Bisnis, lihat FAQ situs Docker).
Catatan
Sebaiknya gunakan Docker Desktop karena integrasinya dengan Windows dan Subsistem Windows untuk Linux. Namun, sementara Docker Desktop mendukung menjalankan kontainer Linux dan Windows, Anda tidak dapat menjalankan keduanya secara bersamaan. Untuk menjalankan kontainer Linux dan Windows secara bersamaan, Anda harus menginstal dan menjalankan instans Docker terpisah di WSL. Jika Anda perlu menjalankan kontainer simultan atau hanya lebih suka menginstal mesin kontainer langsung di distribusi Linux Anda, ikuti instruksi penginstalan Linux untuk layanan kontainer tersebut, seperti Instal Mesin Docker di Ubuntu atau Instal Podman untuk menjalankan kontainer Linux.
Gambaran umum kontainer Docker
Docker adalah alat yang digunakan untuk membuat, menyebarkan, dan menjalankan aplikasi menggunakan kontainer. Kontainer memungkinkan pengembang untuk mengemas aplikasi dengan semua bagian yang dibutuhkan (pustaka, kerangka kerja, dependensi, dll) dan mengirimkan semuanya sebagai satu paket. Menggunakan kontainer memastikan bahwa aplikasi akan berjalan sama terlepas dari pengaturan yang disesuaikan atau pustaka yang diinstal sebelumnya pada komputer yang menjalankannya yang dapat berbeda dari komputer yang digunakan untuk menulis dan menguji kode aplikasi. Ini memungkinkan pengembang untuk fokus pada penulisan kode tanpa khawatir tentang sistem yang kodenya akan dijalankan.
Kontainer Docker mirip dengan komputer virtual, tetapi tidak membuat seluruh sistem operasi virtual. Sebagai gantinya, Docker memungkinkan aplikasi untuk menggunakan kernel Linux yang sama dengan sistem yang dijalankannya. Ini memungkinkan paket aplikasi hanya memerlukan bagian yang belum ada di komputer host, mengurangi ukuran paket dan meningkatkan performa.
Ketersediaan berkelanjutan, menggunakan kontainer Docker dengan alat seperti Kubernetes, adalah alasan lain untuk popularitas kontainer. Ini memungkinkan beberapa versi kontainer aplikasi Anda dibuat pada waktu yang berbeda. Daripada perlu menurunkan seluruh sistem untuk pembaruan atau pemeliharaan, setiap kontainer (dan layanan mikro spesifiknya) dapat diganti dengan cepat. Anda dapat menyiapkan kontainer baru dengan semua pembaruan Anda, menyiapkan kontainer untuk produksi, dan hanya menunjuk ke kontainer baru setelah siap. Anda juga dapat mengarsipkan berbagai versi aplikasi menggunakan kontainer dan membuatnya tetap berjalan sebagai fallback keselamatan jika diperlukan.
Untuk mempelajari lebih lanjut , lihat Pengenalan kontainer Docker.
Prasyarat
- WSL versi 1.1.3.0 atau yang lebih baru.
- Windows 11 64-bit: Home atau Pro versi 21H2 atau lebih tinggi, atau Enterprise atau Education versi 21H2 atau yang lebih tinggi.
- Windows 10 64-bit (Disarankan): Home atau Pro 22H2 (build 19045) atau lebih tinggi, atau Enterprise atau Education 22H2 (build 19045) atau lebih tinggi. (Minimum): Home atau Pro 21H2 (build 19044) atau lebih tinggi, atau Enterprise atau Education 21H2 (build 19044) atau lebih tinggi. Perbarui Windows
- Prosesor 64-bit dengan Terjemahan Alamat Tingkat Kedua (SLAT).
- RAM sistem 4GB.
- Aktifkan virtualisasi perangkat keras di BIOS.
- Instal WSL dan siapkan nama pengguna dan kata sandi untuk distribusi Linux Anda yang berjalan di WSL 2.
- Instal Visual Studio Code (opsional). Ini akan memberikan pengalaman terbaik, termasuk kemampuan untuk membuat kode dan men-debug di dalam kontainer Docker jarak jauh dan terhubung ke distribusi Linux Anda.
- Instal Terminal Windows (opsional). Ini akan memberikan pengalaman terbaik, termasuk kemampuan untuk menyesuaikan dan membuka beberapa terminal dalam antarmuka yang sama (termasuk Ubuntu, Debian, PowerShell, Azure CLI, atau apa pun yang lebih Anda gunakan).
- Daftar untuk ID Docker di Docker Hub (opsional).
- Lihat perjanjian lisensi Docker Desktop untuk pembaruan tentang ketentuan penggunaan.
Untuk informasi selengkapnya, lihat persyaratan Docker docs System untuk Menginstal Docker Desktop di Windows.
Untuk mempelajari cara menginstal Docker di Windows Server, lihat Memulai: Menyiapkan Windows untuk kontainer.
Catatan
WSL dapat menjalankan distribusi dalam mode WSL versi 1 atau WSL 2. Anda dapat memeriksanya dengan membuka PowerShell dan memasukkan: wsl -l -v
. Pastikan distribusi Anda diatur untuk menggunakan WSL 2 dengan memasukkan: wsl --set-version <distro> 2
. Ganti <distro>
dengan nama distro (misalnya Ubuntu 18.04).
Di WSL versi 1, karena perbedaan mendasar antara Windows dan Linux, Mesin Docker tidak dapat berjalan langsung di dalam WSL, sehingga tim Docker mengembangkan solusi alternatif menggunakan VM Hyper-V dan LinuxKit. Namun, karena WSL 2 sekarang berjalan pada kernel Linux dengan kapasitas panggilan sistem penuh, Docker dapat sepenuhnya berjalan di WSL 2. Ini berarti bahwa kontainer Linux dapat berjalan secara asli tanpa emulasi, menghasilkan performa dan interoperabilitas yang lebih baik antara alat Windows dan Linux Anda.
Instal Docker Desktop
Dengan backend WSL 2 yang didukung di Docker Desktop untuk Windows, Anda dapat bekerja di lingkungan pengembangan berbasis Linux dan membangun kontainer berbasis Linux, sambil menggunakan Visual Studio Code untuk pengeditan dan penelusuran kesalahan kode, dan menjalankan kontainer Anda di browser Microsoft Edge di Windows.
Untuk menginstal Docker (setelah menginstal WSL):
Unduh Docker Desktop dan ikuti instruksi penginstalan.
Setelah diinstal, mulai Docker Desktop dari Windows menu Mulai, lalu pilih ikon Docker dari menu ikon tersembunyi taskbar Anda. Klik kanan ikon untuk menampilkan menu perintah Docker dan pilih "Pengaturan".
Pastikan bahwa "Gunakan mesin berbasis WSL 2" dicentang di Pengaturan>Umum.
Pilih dari distribusi WSL 2 yang terinstal yang ingin Anda aktifkan integrasi Docker dengan masuk ke: Pengaturan>Sumber Daya>Integrasi WSL.
Untuk mengonfirmasi bahwa Docker telah diinstal, buka distribusi WSL (misalnya Ubuntu) dan tampilkan versi dan nomor build dengan memasukkan:
docker --version
Uji apakah penginstalan Anda berfungsi dengan benar dengan menjalankan gambar Docker bawaan sederhana menggunakan:
docker run hello-world
Tip
Berikut adalah beberapa perintah Docker yang bermanfaat untuk diketahui:
- Cantumkan perintah yang tersedia di Docker CLI dengan memasukkan:
docker
- Cantumkan informasi untuk perintah tertentu dengan:
docker <COMMAND> --help
- Cantumkan gambar docker di komputer Anda (yang hanya gambar hello-world pada saat ini), dengan:
docker image ls --all
- Cantumkan kontainer di komputer Anda, dengan:
docker container ls --all
ataudocker ps -a
(tanpa bendera -a show all, hanya kontainer yang berjalan yang akan ditampilkan) - Cantumkan informasi di seluruh sistem mengenai penginstalan Docker, termasuk statistik dan sumber daya (CPU & memori) yang tersedia untuk Anda dalam konteks WSL 2, dengan:
docker info
Mengembangkan dalam kontainer jarak jauh menggunakan Visual Studio Code
Untuk mulai mengembangkan aplikasi menggunakan Docker dengan WSL 2, sebaiknya gunakan Visual Studio Code, bersama dengan ekstensi WSL, Dev Containers, dan Docker.
Instal ekstensi WSL Visual Studio Code. Ekstensi ini memungkinkan Anda membuka proyek Linux yang berjalan di WSL di VISUAL Code (tidak perlu khawatir tentang masalah jalur, kompatibilitas biner, atau tantangan lintas OS lainnya).
Instal ekstensi Kontainer Dev Visual Studio Code. Ekstensi ini memungkinkan Anda membuka folder proyek atau repositori di dalam kontainer, memanfaatkan set fitur lengkap Visual Studio Code untuk melakukan pekerjaan pengembangan Anda dalam kontainer.
Instal ekstensi Docker Visual Studio Code. Ekstensi ini menambahkan fungsionalitas untuk membangun, mengelola, dan menyebarkan aplikasi dalam kontainer dari dalam Visual Studio Code. (Anda memerlukan ekstensi Dev Containers untuk benar-benar menggunakan kontainer sebagai lingkungan dev Anda.)
Mari kita gunakan Docker untuk membuat kontainer pengembangan untuk proyek aplikasi yang ada.
Untuk contoh ini, saya akan menggunakan kode sumber dari tutorial Halo Dunia saya untuk Django di lingkungan pengembangan Python menyiapkan dokumen. Anda dapat melewati langkah ini jika Anda lebih suka menggunakan kode sumber proyek Anda sendiri. Untuk mengunduh aplikasi web HelloWorld-Django saya dari GitHub, buka terminal WSL (misalnya Ubuntu) dan masukkan:
git clone https://github.com/mattwojo/helloworld-django.git
Catatan
Selalu simpan kode Anda dalam sistem file yang sama dengan tempat Anda menggunakan alat. Ini akan menghasilkan performa akses file yang lebih cepat. Dalam contoh ini, kami menggunakan distro Linux (Ubuntu) dan ingin menyimpan file proyek kami pada sistem
\\wsl\
file WSL . Menyimpan file proyek pada sistem file Windows akan secara signifikan memperlambat hal-hal saat menggunakan alat Linux di WSL untuk mengakses file-file tersebut.Dari terminal WSL Anda, ubah direktori ke folder kode sumber untuk proyek ini:
cd helloworld-django
Buka proyek di Visual Studio Code yang berjalan di server ekstensi WSL lokal dengan memasukkan:
code .
Konfirmasikan bahwa Anda terhubung ke distro WSL Linux Anda dengan memeriksa indikator jarak jauh hijau di sudut kiri bawah instans Visual Studio Code Anda.
Dari palet perintah Visual Studio Code (Ctrl + Shift + P), masukkan: Kontainer Dev: Buka kembali dalam Kontainer saat kita menggunakan folder yang sudah dibuka menggunakan ekstensi WSL. Atau, gunakan Kontainer Dev: Buka Folder di Kontainer... untuk memilih folder WSL menggunakan berbagi lokal
\\wsl$
(dari sisi Windows). Lihat Mulai Cepat Visual Studio Code : Buka folder yang sudah ada dalam kontainer untuk detail selengkapnya. Jika perintah ini tidak ditampilkan saat Anda mulai mengetik, periksa untuk memastikan bahwa Anda telah menginstal ekstensi Kontainer Dev yang ditautkan di atas.Pilih folder proyek yang ingin Anda kontainerisasi. Dalam kasus saya, ini adalah
\\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\
Daftar definisi kontainer akan muncul, karena belum ada konfigurasi kontainer dev di folder proyek (repositori). Daftar definisi konfigurasi kontainer yang muncul difilter berdasarkan jenis proyek Anda. Untuk proyek Django saya, saya akan memilih Python 3.
Instans baru VS Code akan terbuka, mulai membangun gambar baru kami, dan setelah build selesai, akan memulai kontainer kami. Anda akan melihat bahwa folder baru
.devcontainer
telah muncul dengan informasi konfigurasi kontainer di dalamDockerfile
file dandevcontainer.json
.Untuk mengonfirmasi bahwa proyek Anda masih terhubung ke WSL dan dalam kontainer, buka terminal terintegrasi Visual Studio Code (Ctrl + Shift + ~). Periksa sistem operasi dengan memasukkan:
uname
dan versi Python dengan:python3 --version
. Anda dapat melihat bahwa uname kembali sebagai "Linux", jadi Anda masih terhubung ke mesin WSL 2, dan nomor versi Python akan didasarkan pada konfigurasi kontainer yang mungkin berbeda dari versi Python yang diinstal pada distribusi WSL Anda.Untuk menjalankan dan men-debug aplikasi Anda di dalam kontainer menggunakan Visual Studio Code, pertama-tama buka menu Jalankan (Ctrl+Shift+D atau pilih tab di bilah menu paling kiri). Kemudian pilih Jalankan dan Debug untuk memilih konfigurasi debug dan pilih konfigurasi yang paling sesuai dengan proyek Anda (dalam contoh saya, ini akan menjadi "Django"). Ini akan membuat
launch.json
file di.vscode
folder proyek Anda dengan instruksi tentang cara menjalankan aplikasi Anda.Dari dalam Visual Studio Code, pilih Jalankan>Mulai penelusuran kesalahan (atau cukup tekan tombol F5). Ini akan membuka terminal di dalam Visual Studio Code dan Anda akan melihat hasil yang mengatakan sesuatu seperti: "Memulai server pengembangan di http://127.0.0.1:8000/ Keluar dari server dengan CONTROL-C." Tahan tombol Kontrol dan pilih alamat yang ditampilkan untuk membuka aplikasi Anda di browser web default dan lihat proyek Anda berjalan di dalam kontainernya.
Anda sekarang telah berhasil mengonfigurasi kontainer pengembangan jarak jauh menggunakan Docker Desktop, didukung oleh backend WSL 2, yang dapat Anda kodekan di, bangun, jalankan, sebarkan, atau debug menggunakan Visual Studio Code!
Pemecahan Masalah
Konteks docker WSL tidak digunakan lagi
Jika Anda menggunakan Pratinjau Teknologi awal Docker untuk WSL, Anda mungkin memiliki konteks Docker yang disebut "wsl" yang sekarang tidak digunakan lagi dan tidak lagi digunakan. Anda dapat memeriksa dengan perintah: docker context ls
. Anda dapat menghapus konteks "wsl" ini untuk menghindari kesalahan dengan perintah: docker context rm wsl
karena Anda ingin menggunakan konteks default untuk Windows dan WSL2.
Kemungkinan kesalahan yang mungkin Anda temui dengan konteks wsl yang tidak digunakan lagi ini meliputi: docker wsl open //./pipe/docker_wsl: The system cannot find the file specified.
atau error during connect: Get http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: open //./pipe/docker_wsl: The system cannot find the file specified.
Untuk informasi selengkapnya tentang masalah ini, lihat Cara menyiapkan Docker dalam Sistem Windows untuk Linux (WSL2) di Windows 10.
Masalah saat menemukan folder penyimpanan gambar docker
Docker membuat dua folder distro untuk menyimpan data:
- \wsl$\docker-desktop
- \wsl$\docker-desktop-data
Anda dapat menemukan folder ini dengan membuka distribusi WSL Linux Anda dan memasukkan: explorer.exe .
untuk melihat folder di Windows File Explorer. Masukkan: \\wsl\<distro name>\mnt\wsl
mengganti <distro name>
dengan nama distribusi Anda (yaitu. Ubuntu-20.04) untuk melihat folder ini.
Temukan selengkapnya tentang menemukan lokasi penyimpanan docker di WSL, lihat masalah ini dari repositori WSL atau posting StackOverflow ini.
Untuk bantuan selengkapnya tentang masalah pemecahan masalah umum di WSL, lihat dokumen Pemecahan Masalah.
Sumber Daya Tambahan:
- Dokumen Docker: Praktik terbaik untuk Docker Desktop dengan WSL 2
- Umpan balik untuk Docker Desktop untuk Windows: Ajukan masalah
- Blog Visual Studio Code: Panduan untuk memilih lingkungan pengembangan
- Blog Visual Studio Code: Menggunakan Docker di WSL 2
- Blog Visual Studio Code: Menggunakan Kontainer Jarak Jauh di WSL 2
- Podcast Hanselminutes: Membuat Docker menyenangkan bagi Pengembang dengan Simon Ferquel
Windows Subsystem for Linux