Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu adım adım kılavuz, WSL 2 (Linux için Windows Alt Sistemi, sürüm 2) ile Windows için Docker Desktop'ı ayarlayarak uzak kapsayıcılarla geliştirmeye başlamanıza yardımcı olur.
Windows için Docker Desktop, dockerized uygulamaları oluşturmak, göndermek ve çalıştırmak için bir geliştirme ortamı sağlar. WSL 2 tabanlı altyapıyı etkinleştirerek, Docker Desktop'taki Linux ve Windows kapsayıcılarını aynı makinede çalıştırabilirsiniz. (Docker Desktop kişisel kullanım ve küçük işletmeler için ücretsizdir; Pro, Ekip veya İş fiyatlandırması hakkında bilgi için Docker sitesi SSS bölümüne bakın).
Uyarı
Linux için Windows ve Windows Alt Sistemi ile tümleştirmesi nedeniyle Docker Desktop'ı kullanmanızı öneririz. Ancak Docker Desktop hem Linux hem de Windows kapsayıcılarını çalıştırmayı desteklese de ikisini aynı anda çalıştıramazsınız. Linux ve Windows kapsayıcılarını aynı anda çalıştırmak için WSL'de ayrı bir Docker örneği yüklemeniz ve çalıştırmanız gerekir. Eşzamanlı kapsayıcılar çalıştırmanız gerekiyorsa veya yalnızca doğrudan Linux dağıtımınıza bir kapsayıcı altyapısı yüklemeyi tercih ediyorsanız, linux kapsayıcılarını çalıştırmak için Ubuntu'ya Docker Altyapısı Yükleme veya Podman'ı Yükleme gibi kapsayıcı hizmeti için Linux yükleme yönergelerini izleyin.
Docker kapsayıcılara genel bakış
Docker kapsayıcıları kullanarak uygulama oluşturmak, dağıtmak ve çalıştırmak için kullanılan bir araçtır. Kapsayıcılar, geliştiricilerin bir uygulamayı ihtiyaç duyduğu tüm parçalarla (kitaplıklar, çerçeveler, bağımlılıklar vb.) paketlemesini ve hepsini tek bir paket olarak göndermesini sağlar. Kapsayıcı kullanmak, uygulamanın, uygulamanın kodunu yazmak ve test etmek için kullanılan makineden farklı olabilecek özelleştirilmiş ayarlardan veya çalıştıran bilgisayarda önceden yüklenmiş kitaplıklardan bağımsız olarak aynı şekilde çalışmasını sağlar. Bu, geliştiricilerin kodun çalıştırılacağı sistem hakkında endişelenmeden kod yazmaya odaklanmasına izin verir.
Docker kapsayıcıları sanal makinelere benzer, ancak sanal işletim sisteminin tamamını oluşturmaz. Bunun yerine Docker, uygulamanın üzerinde çalıştığı sistemle aynı Linux çekirdeğini kullanmasını sağlar. Bu, uygulama paketinin yalnızca ana bilgisayarda bulunmayan parçaları gerektirmesini sağlayarak paket boyutunu küçültmesine ve performansı artırmasına olanak tanır.
Kesintisiz erişilebilirlik, Kubernetes gibi araçlarla Docker kapsayıcıları kullanarak sağlanabilen, kapsayıcıların popüler olmasının bir diğer nedenidir. Bu, uygulama kapsayıcınızın farklı zamanlarda birden çok sürümünün oluşturulmasını sağlar. Güncelleştirmeler veya bakım için sistemin tamamının devre dışı bırakılabilmesi yerine, her kapsayıcı (ve özel mikro hizmetleri) anında değiştirilebilir. Tüm güncelleştirmelerinizle yeni bir kapsayıcı hazırlayabilir, kapsayıcıyı üretim için ayarlayabilir ve hazır olduğunda yalnızca yeni kapsayıcıya işaret edebilirsiniz. Ayrıca kapsayıcıları kullanarak uygulamanızın farklı sürümlerini arşivleyebilir ve gerekirse güvenlik geri dönüşü olarak çalışır durumda tutabilirsiniz.
Daha fazla bilgi edinmek için Docker kapsayıcılarına giriş bölümüne bakın.
Önkoşullar
WSL sürüm 1.1.3.0 veya üzeri.
Windows 11 Home and Pro veya Enterprise and Education, Windows 10 22H2 (derleme 19045) 64 bit Home and Pro veya Enterprise and Education (Önerilir).
Windows 10 21H2 (derleme 19044) 64 bit Home and Pro veya Enterprise and Education (Minimum). Windows'a güncelleştirme
İkinci Düzey Adres Çevirisi (SLAT) ile 64 bit işlemci.
4 GB veya daha fazla sistem RAM'i.
BIOS'ta donanım sanallaştırmayı etkinleştirin.
WSL'yi yükleyin ve WSL 2'de çalışan Linux dağıtımınız için bir kullanıcı adı ve parola ayarlayın.
Visual Studio Code'u yükleyin(isteğe bağlı). Bu, uzak bir Docker kapsayıcısının içinde kod oluşturma ve hata ayıklama ve Linux dağıtımınıza bağlanma dahil olmak üzere en iyi deneyimi sağlar.
Windows Terminali'ni (isteğe bağlı) yükleyin. Bu, aynı arabirimde (Ubuntu, Debian, PowerShell, Azure CLI veya kullanmayı tercih ettiğiniz her şey dahil) birden çok terminali özelleştirme ve açma özelliği dahil olmak üzere en iyi deneyimi sağlar.
Docker Hub'da Docker Kimliği için kaydolun(isteğe bağlı).
Kullanım koşullarıyla ilgili güncelleştirmeler için bkz. Docker Desktop lisans sözleşmesi .
Daha fazla bilgi için bkz. Docker Desktop'ı Windows'a yüklemek için Docker docs Sistem gereksinimleri.
Docker'ı Windows Server'a yüklemeyi öğrenmek için Başlarken: Windows'u kapsayıcılar için hazırlama başlığına bakın.
Uyarı
WSL, dağıtımları hem WSL sürüm 1 hem de WSL 2 modunda çalıştırabilir. PowerShell'i açıp şunu girerek bunu deleyebilirsiniz: wsl -l -v. şu girişi yaparak dağıtımınızın WSL 2 kullanacak şekilde ayarlandığından emin olun: wsl --set-version <Distro> 2. değerini <Distro> dağıtım adıyla değiştirin (ör. Ubuntu 18.04).
WSL sürüm 1'de, Windows ve Linux arasındaki temel farklılıklar nedeniyle Docker Altyapısı doğrudan WSL içinde çalışamadığından Docker ekibi Hyper-V VM'leri ve LinuxKit'i kullanarak alternatif bir çözüm geliştirdi. Ancak, WSL 2 artık tam sistem çağrı kapasitesine sahip bir Linux çekirdeği üzerinde çalıştığından Docker, WSL 2'de tam olarak çalıştırılabilir. Bu, Linux kapsayıcılarının öykünme olmadan yerel olarak çalışabileceği ve bunun sonucunda Windows ve Linux araçlarınız arasında daha iyi performans ve birlikte çalışabilirlik elde edilebilir olduğu anlamına gelir.
Docker Desktop'ı yükleme
Windows için Docker Desktop'ta desteklenen WSL 2 arka ucuyla, Kod düzenleme ve hata ayıklama için Visual Studio Code kullanırken ve kapsayıcınızı Windows üzerinde Microsoft Edge tarayıcısında çalıştırırken Linux tabanlı bir geliştirme ortamında çalışabilir ve Linux tabanlı kapsayıcılar oluşturabilirsiniz.
Docker'ı yüklemek için ( WSL zaten yüklendikten sonra):
Docker Desktop'ı indirin ve yükleme yönergelerini izleyin.
Yüklendikten sonra Windows Başlat menüsünden Docker Desktop'ı başlatın, ardından görev çubuğunuzun gizli simgeler menüsünden Docker simgesini seçin. Docker komutları menüsünü görüntülemek için simgeye sağ tıklayın ve "Ayarlar"ı seçin.
Ayarlar>Genel'de "WSL 2 tabanlı altyapıyı kullan" seçeneğinin işaretli olduğundan emin olun.
Docker tümleştirmesini etkinleştirmek istediğiniz yüklü WSL 2 dağıtımlarınızdan şunu seçin: Ayarlar>Kaynakları>WSL Tümleştirmesi.
Docker'ın yüklendiğini onaylamak için bir WSL dağıtımı (örneğin Ubuntu) açın ve şunu girerek sürüm ve derleme numarasını görüntüleyin:
docker --versionAşağıdakileri kullanarak basit bir yerleşik Docker görüntüsü çalıştırarak yüklemenizin düzgün çalışıp çalışmadığını test edin:
docker run hello-world
Tavsiye
Bilmeniz gereken birkaç yararlı Docker komutu şunlardır:
- Şu komutu girerek Docker CLI'da kullanılabilen komutları listeleyin:
docker - Belirli bir komutun bilgilerini şu şekilde listeleyin:
docker <COMMAND> --help - Makinenizdeki Docker imajlarını (bu noktada yalnızca hello-world imajı mevcuttur) şu şekilde listeleyin:
docker image ls --all - Makinenizdeki kapsayıcıları şu şekilde listeleyin:
docker container ls --allveyadocker ps -a(-a tüm bayrağı göstermeden yalnızca çalışan kapsayıcılar görüntülenir) - WSL 2 bağlamında kullanabileceğiniz istatistikler ve kaynaklar (CPU ve bellek) dahil olmak üzere Docker yüklemesiyle ilgili sistem genelindeki bilgileri aşağıdakilerle listeleyin:
docker info
VS Code kullanarak uzak kapsayıcılarda geliştirme
WSL 2 ile Docker kullanarak uygulama geliştirmeye başlamak için WSL, Geliştirme Kapsayıcıları ve Docker uzantılarıyla birlikte VS Code kullanmanızı öneririz.
VS Code WSL uzantısını yükleyin. Bu uzantı, WSL üzerinde çalışan Linux projenizi VS Code'da açmanıza olanak tanır (yol oluşturma sorunları, ikili uyumluluk veya diğer işletim sistemi arası zorluklar konusunda endişelenmenize gerek yoktur).
VS Code Geliştirme Kapsayıcıları uzantısını yükleyin. Bu uzantı, visual studio code'un kapsayıcı içindeki geliştirme çalışmalarınızı gerçekleştirmek için tam özellik kümesinden yararlanarak proje klasörünüzü veya deponuzu bir kapsayıcı içinde açmanıza olanak tanır.
VS Code Docker uzantısını yükleyin. Bu uzantı, VS Code'un içinden kapsayıcılı uygulamalar derleme, yönetme ve dağıtma işlevselliğini ekler. (Kapsayıcıyı geliştirme ortamınız olarak kullanmak için Geliştirme Kapsayıcıları uzantısına ihtiyacınız vardır.)
Mevcut bir uygulama projesi için geliştirme kapsayıcısı oluşturmak için Docker'ı kullanalım.
Bu örnekte, Python geliştirme ortamı kurulum belgelerinde Django için Hello World öğreticimin kaynak kodunu kullanacağım. Kendi proje kaynak kodunuzu kullanmayı tercih ediyorsanız bu adımı atlayabilirsiniz. GitHub'dan HelloWorld-Django web uygulamamı indirmek için bir WSL terminali açın (örneğin Ubuntu) ve şunu girin:
git clone https://github.com/mattwojo/helloworld-django.gitUyarı
Kodunuzu her zaman araçları kullandığınız dosya sisteminde depolayın. Bu, daha hızlı dosya erişimi performansına neden olur. Bu örnekte, Linux dağıtımı (Ubuntu) kullanıyoruz ve proje dosyalarımızı WSL dosya sisteminde
\\wsl\depolamak istiyoruz. Proje dosyalarının Windows dosya sisteminde depolanması, WSL'de Linux araçlarını kullanarak bu dosyalara erişirken işleri önemli ölçüde yavaşlatır.WSL terminalinizde dizinleri bu projenin kaynak kodu klasörüne değiştirin:
cd helloworld-djangoAşağıdakileri girerek projeyi yerel WSL uzantısı sunucusunda çalışan VS Code'da açın:
code .VS Code örneğinizin sol alt köşesindeki yeşil uzak göstergeyi denetleyerek WSL Linux dağıtımınıza bağlandığınızdan emin olun.
VS Code komut paletinden (Ctrl + Shift + P), şunu girin: Geliştirme Kapsayıcıları: Kapsayıcıda Yeniden Aç çünkü WSL uzantısı kullanılarak zaten açılmış bir klasör kullanıyoruz. Alternatif olarak, yerel paylaşımı kullanarak bir WSL klasörü seçmek için
\\wsl$komutunu kullanın (Windows tarafından). Daha fazla ayrıntı için bkz. Visual Studio Code Hızlı başlangıcı: Kapsayıcıda var olan bir klasörü açma . Siz yazdıkça bu komutlar görüntülenmiyorsa, yukarıda bağlantılı Geliştirme Kapsayıcıları uzantısını yüklediğinizden emin olun.
Kapsayıcıya almak istediğiniz proje klasörünü seçin. Benim durumumda, bu
\\wsl\Ubuntu-20.04\home\mattwojo\repos\helloworld-django\
Proje klasöründe (depo) henüz geliştirme kapsayıcı yapılandırması olmadığından kapsayıcı tanımlarının listesi görüntülenir. Görüntülenen kapsayıcı yapılandırma tanımlarının listesi, proje türünüz temelinde filtrelenmiştir. Django projem için Python 3'i seçiyorum.
VS Code'un yeni bir örneği açılır, yeni imajımızı oluşturmaya başlar ve derleme tamamlandıktan sonra, kapsayıcımızı başlatır. Yeni bir
.devcontainerklasörün, içinde kapsayıcı yapılandırma bilgilerinin bulunduğuDockerfilevedevcontainer.jsondosyalarıyla birlikte göründüğünü göreceksiniz.
Projenizin hem WSL'ye hem de kapsayıcı içinde hala bağlı olduğunu onaylamak için VS Code tümleşik terminalini açın (Ctrl + Shift + ~). Şu komutu girerek işletim sistemini kontrol edin:
unameve Python sürümünü kontrol edin:python3 --version. Uname değerinin "Linux" olarak geri geldiğini, dolayısıyla WSL 2 altyapısına bağlı olduğunuzu ve Python sürüm numarasının WSL dağıtımınızda yüklü Python sürümünden farklı olabilecek kapsayıcı yapılandırmasına bağlı olduğunu görebilirsiniz.Visual Studio Code kullanarak kapsayıcının içinde uygulamanızı çalıştırmak ve hatalarını ayıklamak için önce Çalıştır menüsünü açın (Ctrl+Shift+D veya en soldaki menü çubuğundaki sekmeyi seçin). Ardından Çalıştır ve Hata Ayıkla'yı seçerek bir hata ayıklama yapılandırması seçin ve projenize en uygun yapılandırmayı seçin (benim örneğimde bu "Django" olacaktır). Bu işlem, projenizin klasöründe uygulamanızı çalıştırma yönergelerini içeren bir
launch.jsondosya.vscodeoluşturur.
VS Code'un içindenBaşlat hata ayıklamasını> seçin (veya yalnızca F5 tuşuna basın). Bu işlem VS Code içinde bir terminal açar ve şöyle bir sonuç görmeniz gerekir: "Geliştirme sunucusu
http://127.0.0.1:8000/konumunda başlatılıyor. Sunucudan çıkmak için CONTROL-C'ye basın." Control tuşunu basılı tutarak görüntülenen adresi seçin ve uygulamanızı varsayılan web tarayıcınızda açarak projenizin kapsayıcısının içinde çalıştığını görün.
Vs Code kullanarak kod yazabileceğiniz, oluşturabileceğiniz, çalıştırabileceğiniz, dağıtabileceğiniz veya hata ayıklayabileceğiniz WSL 2 arka ucu tarafından desteklenen Docker Desktop'ı kullanarak bir uzaktan geliştirme kapsayıcısını başarıyla yapılandırmış oldunuz!
Sorun giderme
WSL docker bağlamı kullanım dışı bırakıldı
WSL için Docker'ın ilk Teknik Önizleme sürümünü kullanıyorsanız artık kullanım dışı olan ve artık kullanılmayan "wsl" adlı bir Docker bağlamı olabilir. şu komutla kontrol edebilirsiniz: docker context ls. Komutla ilgili hataları önlemek için bu "wsl" bağlamını kaldırabilirsiniz: docker context rm wsl hem Windows hem de WSL2 için varsayılan bağlamı kullanmak istediğiniz için.
Bu kullanım dışı bırakılmış wsl bağlamında karşılaşabileceğiniz olası hatalar şunlardır: "docker wsl open //./pipe/docker_wsl: Sistem belirtilen dosyayı bulamıyor." veya "bağlantı sırasında hata: Aç http://%2F%2F.%2Fpipe%2Fdocker_wsl/v1.40/images/json?all=1: //./pipe/docker_wsl: Sistem belirtilen dosyayı bulamıyor."
Bu sorun hakkında daha fazla bilgi için bkz. Windows 10'da Linux için Windows Sistemi (WSL2) içinde Docker'ı ayarlama.
Docker görüntü depolama klasörünü bulma sorunu
Docker, verileri depolamak için iki dağıtım klasörü oluşturur:
- \wsl$\docker-desktop
- \wsl$\docker-desktop-data
WSL Linux dağıtımınızı açıp şunu girerek bu klasörleri bulabilirsiniz: explorer.exe . klasörü Windows Dosya Gezgini'nde görüntülemek için.
\\wsl\<Distro>\mnt\wsl yerine dağıtımınızın adını (örneğin Ubuntu-24.04) koyarak <Distro> girin ve bu klasörleri görün.
WSL'de docker depolama konumlarını bulma hakkında daha fazla bilgi edinin, WSL deposundan veya bu StackOverflow gönderisinden bu soruna bakın.
WSL'deki genel sorun giderme sorunlarıyla ilgili daha fazla yardım için Sorun giderme belgesine bakın.
Ek kaynaklar
- Docker belgeleri: WSL 2 ile Docker Desktop için en iyi yöntemler
- Windows için Docker Desktop için geri bildirim: Sorun bildirin
- VS Code Belgeleri: Geliştirme ortamı seçme yönergeleri
- VS Code Blogu: WSL 2'de Docker Kullanma
- VS Code Blogu: WSL 2'de Uzak Kapsayıcıları Kullanma
- Hanselminutes Pod Yayını: Simon Ferquel ile Docker'ı Geliştiriciler için güzel hale getirme
Windows Subsystem for Linux