Docker Desktop no Windows rodando com WSL 2 \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 06 Horas 

 59 Min 

 51 Seg 

   Tempo restante da oferta: 06 59 51 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Docker Desktop no Windows rodando com WSL 2  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

# Docker Desktop no Windows rodando com WSL 2

 Com o lançamento do WSL 2, agora é possível executar o Docker sem precisar de uma máquina virtual tradicional. Com isso foi lançado em preview um novo backend para o Docker Desktop integrado com o WSL 2, que promete um grande salto em performance. Será que esse salto de performance é realmente significativo? Vamos descobrir nesse artigo.

 [ Gabriel Machado ](https://www.treinaweb.com.br/blog/autor/gabriel-machado) 7 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/02163749/WSL-DOCKER-1.png)  

Com a inclusão de um kernel Linux completo dentro do Windows graças ao Windows Subsystem for Linux (WSL) 2, ferramentas que antes não podiam ser utilizadas no WSL por questões de compatibilidade agora podem ser executadas sem problemas. Uma dessas ferramentas muito utilizadas pelos desenvolvedores é o Docker.

No Windows 10 é possível utilizar o Docker Desktop para ter uma experiência integrada com o Docker, se aproximando muito de um sistema Linux. Entretanto, existem algumas limitações que com a atual versão que serão tratadas com a nova integração entre o Docker Desktop com o WSL 2.

## Docker Desktop

O Docker Desktop é uma solução para executar containers Linux nos sistemas Windows e macOS. Ele permite que você tenha uma experiência semelhante a uma distribuição Linux, integrando o sistema de arquivos do sistemas e a rede com a máquina virtual que executa o Docker.

Essa máquina virtual é gerenciada pelo Docker Desktop através do hypervisor de virtualização do sistema, no caso do Windows o Hyper-V e do macOS o hyperkit. A execução dos containers em si acontece nessa máquina virtual, como podemos ver no diagrama abaixo:

![Arquitetura do Docker Desktop](https://dkrn4sk0rn31v.cloudfront.net/2019/11/02163307/win_docker_host-1.png)

O Docker Desktop está disponível faz alguns anos, sendo a forma recomendada de executar Docker nos sistemas Windows e macOS, sendo possível com ele até executar um cluster de Kubernetes na sua máquina local.

## Restrições do Docker Desktop

Apesar de ser a forma recomendada de executar o Docker nesses sistemas, um grande fator que impacta no seu uso é a performance em operações de leitura e escrita. Por executar dentro de uma máquina virtual, existe um delay para sincronizar os arquivos que estão no sistema operacional com a máquina virtual.

Isso pode ser um problema para aplicações que exigem constante leitura em disco, como é o caso de linguagens interpretadas, como o PHP. Além disso, mais especificamente com o Docker Desktop for Windows, é preciso ter o Hyper-V habilitado, que só é incluído com o Windows 10 Pro.

Então se você utiliza o Windows 10 Home ou trabalha com uma linguagem interpretada, sua experiência com o Docker no Windows pode não ser a melhor possível. Felizmente, isso vai mudar com o Docker com WSL 2.

## Docker com WSL 2

O WSL 2 traz para o Windows o kernel completo do Linux através de uma máquina virtual moderna e com uma performance de disco próxima a uma máquina rodando Linux. Você pode ler mais sobre o WSL 2 [nesse artigo aqui](https://www.treinaweb.com.br/blog/o-que-esperar-do-windows-subsystem-for-linux-wsl-2/).

Com esse anúncio, o WSL 2 se tornou uma opção mais interessante para executar o Docker nos sistemas Windows. Além do ganho de performance, o WSL 2 será compatível com o Windows 10 Home, tornando o Docker Desktop disponível para um maior número de usuários.

O suporte do Docker Desktop utilizando o WSL 2 ainda está em preview, mas você já pode testá-lo se tiver executando o Windows 10 Insider. A previsão de lançamento do WSL 2 será no release 2003, e se espera que o suporte na versão estável do Docker chegue nessa época também.

O Docker Desktop irá incluir o suporte ao WSL 2 e utilizá-lo sempre que possível, mantendo o comportamento atual de usar uma máquina virtual no Hyper-V como um fallback para versões do Windows 10 que ainda não suportam WSL 2. Com isso, teremos todas as vantagens presentes no Docker Desktop, mas com uma melhor performance e suporte para o Windows 10 Home (o que hoje não é possível por requerer o Hyper-V).

Internamente, o Docker Desktop provisiona duas distribuições Linux na sua máquina, uma contendo o daemon do Docker e outra é utilizada para armazenar dados como os containers e as imagens que você utilizará. A comunicação entre essas distribuições acontece através de sockets, tanto entre o Windows como com a distribuição que você utiliza com o WSL 2 no seu dia-a-dia. Mais detalhes dessa implementação podem ser encontrados nesse post do [blog de engenharia do Docker](https://engineering.docker.com/2019/10/new-docker-desktop-wsl2-backend/).

![Arquitetura do Docker com WSL 2](https://dkrn4sk0rn31v.cloudfront.net/2019/11/02163305/archtecture_wsl2-1.png)

Mas será que tudo isso vale a pena? Além do tempo de carregamento para iniciar o Docker Desktop, que reduziu para poucos segundos, a performance com o disco melhorou bastante. Podemos comparar esses números com o benchmark abaixo.

## Teste de performance com disco

Para esse teste, vamos comparar a diferença entre o Docker Desktop utilizando Hyper-V e o WSL 2. Ambos os testes foram executados no mesmo ambiente, com a mesma máquina e quantidade de recursos disponíveis.

Para esse teste utilizei a aplicação de [demonstração do Symfony](https://github.com/symfony/demo/) junto com uma configuração de [containers para Symfony](https://github.com/dunglas/symfony-docker/) mantida por um de seus core contributor. O código desses dois projetos juntos se encontra no [GitHub da TreinaWeb](https://github.com/treinaweb/symfony-demo-docker) também.

Depois de clonar o projeto e ter instalado o Docker, basta executar o comando `docker-compose up` para iniciar o projeto. O tempo a ser medido como comparação é para o primeiro carregamento da página inicial do projeto. Graças ao [Symfony Profiler](https://symfony.com/doc/current/profiler.html) temos diretamente no navegador utilitários que auxiliam o desenvolvimento da nossa aplicação, incluindo o tempo de carregamento da mesma.

No primeiro teste, abri a página inicial do projeto utilizando o Docker Desktop com Hyper-V e essa página levou 2681ms para ser carregada:

![Tempo de carregamento Docker Hyper-V](https://dkrn4sk0rn31v.cloudfront.net/2019/11/02163305/docker-stable-1.png)

Com Docker Desktop usando WSL 2, a mesma página levou apenas 249ms!

![Tempo de carregamento Docker WSL 2](https://dkrn4sk0rn31v.cloudfront.net/2019/11/02163306/docker-wsl2-1.png)

Tudo isso considerando o primeiro carregamento do projeto. Foi preciso baixar todas as dependências do Composer, o container do PHP não tinha nenhum OpCache, o Symfony não chegou a fazer nenhum tipo de otimização, como compilar as views do Twig, ler as rotas da aplicação presentes nas anotations. Se considerarmos essas otimizações que farão efeito nas requests subsequentes, esse tempo cai para 20ms, comparado com um Linux rodando nativamente:

![Tempo de carregamento Docker WSL 2 - carregamento subsequente](https://dkrn4sk0rn31v.cloudfront.net/2019/11/02163306/docker-wsl2-segundo_load-1.png)

## Como começar a utilizar

O Docker Desktop com WSL 2 está disponível na versão edge do Docker Desktop e pode ser baixada [aqui](https://hub.docker.com/editions/community/docker-ce-desktop-windows). Por enquanto é preciso utilizar a versão insider do Windows 10 para habilitar o acesso ao WSL 2 caso você queira testar hoje mesmo.

Como vimos na comparação, o Docker Desktop com WSL 2 vai trazer um grande salto na performance para aplicações que usam muito processamento em disco. Para mim, que de vez em quando trabalho com projetos em PHP vai ser uma mão na roda! :D

E para você? Pretende testar o Docker com WSL 2 no seu projeto? Conte pra gente o que você achou!

- [ #PHP ](https://www.treinaweb.com.br/blog/tag/php)
- [ #Docker ](https://www.treinaweb.com.br/blog/tag/docker)
- [ #containers ](https://www.treinaweb.com.br/blog/tag/containers)
- [ #windows ](https://www.treinaweb.com.br/blog/tag/windows)
- [ #Symfony ](https://www.treinaweb.com.br/blog/tag/symfony)
- [ #WSL ](https://www.treinaweb.com.br/blog/tag/wsl)
- [ #linux ](https://www.treinaweb.com.br/blog/tag/linux)
- [ #hyper-v ](https://www.treinaweb.com.br/blog/tag/hyper-v)
- [ #wsl2 ](https://www.treinaweb.com.br/blog/tag/wsl2)

Autor

 ![Gabriel Machado](//secure.gravatar.com/avatar/411cd028754ca7f6e6dd7a06d87b883c?d=mm)

## Gabriel Machado

 Autor dos cursos de cloud computing da TreinaWeb. Graduado em Gestão de TI pela FATEC e quase bacharel em Sistemas de Informação pela UFSCar. Tem experiência em desenvolvimento backend com PHP, mas se encontrou trabalhando com DevOps. [Microsoft Certified: DevOps Engineer Expert](https://www.youracclaim.com/badges/8e06b17f-b5bb-42f5-9bda-e9b542050f1a/public_url), [Azure Solutions Architect Expert](https://www.youracclaim.com/badges/18364536-29fe-49ad-9afd-f4b5193b2e5b/public_url) e [Azure Data Engineer Associate](https://www.youracclaim.com/badges/c3e135d4-5f2f-4360-8739-c3002e713e77/public_url), [AWS Certified Solutions Architect - Associate](https://www.youracclaim.com/badges/5f9675e2-6662-4ce6-824b-5694955d3f5d/public_url), e [Zend Certified Engineer (ZCE)](https://www.zend.com/en/yellow-pages/ZEND026022). [@gmsantos](https://about.me/gmsantos) 

 [Todos os artigos](https://www.treinaweb.com.br/blog/autor/gabriel-machado)  

## Continue estudando

 Transforme leitura em prática com os cursos e formações da TreinaWeb.

 [Ver cursos](https://www.treinaweb.com.br/cursos)   

  Continue lendo

## Artigos relacionados

- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/11/02163514/vscode-remote-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ Desenvolvendo seus projetos com o VS Code Remote Development ](https://www.treinaweb.com.br/blog/desenvolvendo-seus-projetos-com-o-vs-code-remote-development) 

     Preparar nosso ambiente local de desenvolvimento pode ser uma tarefa bastante demorada. Pode levar horas, ou até dias para configurar todo o ambiente. Uma alternativa é utilizar um ambiente remoto para o desenvolvimento, porém sua experiência pode não ser a mesma que ao trabalhar em ambiente local. Isso tudo pode mudar com o VS Code Remote Development. Vamos entender nesse artigo como ele funciona.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/07/03165949/WINDOWS-LINUX-400x280.png)  [ Desenvolvimento ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento) 

     7 anos atrás

    ##  [ O que é Windows Subsystem for Linux (WSL)? ](https://www.treinaweb.com.br/blog/o-que-e-windows-subsystem-for-linux-wsl) 

     Nesse artigo vamos aprender o que é o Windows Subsystem for Linux (WSL), quais as suas funcionalidades, seu público alvo e como ele pode ser instalado no Windows 10.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/10/o-que-e-e-como-comecar-com-golang-400x280.jpg)  [ Desenvolvimento Back-end ](https://www.treinaweb.com.br/blog/categoria/desenvolvimento-back-end) 

     4 anos atrás

    ##  [ O que é e como começar com Go (Golang)? ](https://www.treinaweb.com.br/blog/o-que-e-e-como-comecar-com-golang) 

     Neste artigo vamos ter o contato inicial com a linguagem Go (Golag) e aprender um pouco sobre as suas características e como funciona a sua sintaxe.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/12/16065017/front-back-ou-fullstack-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     8 anos atrás

    ##  [ Devo começar como Front-End, Back-End ou Full Stack? ](https://www.treinaweb.com.br/blog/devo-comecar-como-front-end-back-end-ou-full-stack) 

     Devo começar minha carreira como desenvolvedor Front-End, Back-End ou FullStack?

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/09/28135119/capa-docker-400x280.jpg)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ No final das contas: o que é o Docker e como ele funciona? ](https://www.treinaweb.com.br/blog/no-final-das-contas-o-que-e-o-docker-e-como-ele-funciona) 

     Você já ouviu falar de Docker e de containers? Você sabe a real diferença entre containers Docker e máquinas virtuais? Conheça mais neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/01/afinal-o-que-e-um-container-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     6 anos atrás

    ##  [ Afinal, o que é um container? ](https://www.treinaweb.com.br/blog/afinal-o-que-e-um-container) 

     Confira neste artigo o que vem a ser um container.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2020/10/deploy-asp-net-core-linux-nginx-400x280.png)  [ ASP .NET ](https://www.treinaweb.com.br/blog/categoria/asp-net) 

     6 anos atrás

    ##  [ Publicando uma aplicação ASP.NET Core no Linux com o Nginx ](https://www.treinaweb.com.br/blog/publicando-uma-aplicacao-asp-net-core-no-linux-com-o-nginx) 

     Veja todo o processo de publicação de deploy de uma aplicação ASP.NET Core no Linux utilizando o Nginx.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/10/05132043/capa-kubernetes-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ No final das contas: o que é o Kubernetes? ](https://www.treinaweb.com.br/blog/no-final-das-contas-o-que-e-o-kubernetes) 

     Você sabe o que vem a ser o Kubernetes e como ele pode nos ajudar? Confira neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2021/04/conhecendo-o-gerenciador-de-pacotes-chocolatey-400x280.png)  [ Ferramentas ](https://www.treinaweb.com.br/blog/categoria/ferramentas) 

     6 anos atrás

    ##  [ Conhecendo o Gerenciador de Pacotes Chocolatey ](https://www.treinaweb.com.br/blog/conhecendo-o-gerenciador-de-pacotes-chocolatey) 

     Neste artigo conheceremos o Gerenciador de Pacotes Chocolatey.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2018/11/25224114/REDHAT-OPENSHIFT-400x280.png)  [ DevOps ](https://www.treinaweb.com.br/blog/categoria/devops) 

     8 anos atrás

    ##  [ O que é o OpenShift? ](https://www.treinaweb.com.br/blog/o-que-e-o-openshift) 

     Conheça mais sobre o OpenShift e como ele funciona.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/11/junior-para-pleno-min-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     4 anos atrás

    ##  [ Como um desenvolvedor júnior pode virar um pleno? ](https://www.treinaweb.com.br/blog/como-um-desenvolvedor-junior-pode-virar-um-pleno) 

     Existem alguns aspectos técnicos e comportamentais que podem te ajudar a seguir para o próximo nível e é o que veremos neste artigo.

     Ler artigo
- ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2019/02/08152320/melhorar-perfil-desenvolvedor-400x280.png)  [ Carreira ](https://www.treinaweb.com.br/blog/categoria/carreira) 

     5 anos atrás

    ##  [ 3 linguagens de programação em alta em 2021 ](https://www.treinaweb.com.br/blog/3-linguagens-de-programacao-em-alta-em-2021) 

     Veja neste artigo três linguagens de programação em alta em 2021.

     Ler artigo

## Um ano de acesso total para você viver de programação.

 Todos os cursos e formações da TreinaWeb numa única assinatura, com professores que atuam no mercado, suporte direto e certificados. Do primeiro `console.log` ao mercado de trabalho.

- **1 ano** de acesso a **todos os cursos**
- Cursos novos **toda semana**
- Suporte **direto com professores**
- Plano de carreira **personalizado**
- **Certificados digitais** inclusos
- **Aplicativos** para Android e iOS, com **acesso offline**

    **Garantia incondicional de satisfação** 

 Teste por 7 dias e, se não fizer sentido para você, devolvemos seu dinheiro.

### Acesso completo a todos os cursos e dezenas de Formações.

 12 meses 

  Economize R$ 840,00  54% OFF 

 de 12x R$ 129,00 por apenas

 12x  R$ 59,00

 sem juros no cartão de crédito ou R$ 599,00 à vista

  Oferta termina em  **06h 59min 51s**

- Acesso imediato e ilimitado durante 1 ano.
- Plano de carreira personalizado.
- Suporte direto com professores.
- E muito mais!

 [Matricule-se agora](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26)

     [                ](https://www.treinaweb.com.br)

 Escola online de programação, tecnologia e IA.

- [  ](https://www.facebook.com/TreinaWeb/)
- [  ](https://www.instagram.com/treinaweb/)
- [  ](https://www.youtube.com/user/TreinaWeb)
- [  ](https://twitter.com/treinaweb)
- [  ](https://www.linkedin.com/company/treinaweb)
- [  ](https://github.com/treinaweb)

## Inscreva-se em nossa newsletter

Receba lançamentos, promoções e novidades.

   Seu nome     Seu WhatsApp     Seu melhor e-mail   Inscrever-se 

## Cursos

- [ Base para Devs ](https://www.treinaweb.com.br/categoria/base-para-devs)
- [ Front-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-front-end)
- [ Back-end ](https://www.treinaweb.com.br/categoria/desenvolvimento-back-end)
- [ Mobile ](https://www.treinaweb.com.br/categoria/desenvolvimento-mobile)
- [ Bancos de Dados ](https://www.treinaweb.com.br/categoria/bancos-de-dados)
- [ Cloud ](https://www.treinaweb.com.br/categoria/cloud-computing)
- [ IA ](https://www.treinaweb.com.br/categoria/ia)
- [ E mais ](https://www.treinaweb.com.br/categoria/e-mais)
- [ Ver todos os cursos ](https://www.treinaweb.com.br/cursos)

## Conteúdo

- [ Formações ](https://www.treinaweb.com.br/formacoes)
- [ Projetos práticos ](https://www.treinaweb.com.br/projetos-praticos)
- [ Direto ao ponto ](https://www.treinaweb.com.br/direto-ao-ponto)
- [ Planos ](https://www.treinaweb.com.br#assinatura)
- [ Depoimentos ](https://www.treinaweb.com.br#depoimentos)
- [ Comunidade ](https://www.treinaweb.com.br#comunidade)
- [ Corpo docente ](https://www.treinaweb.com.br#docente)

## A empresa

- [ Sobre a TreinaWeb ](https://www.treinaweb.com.br#sobre)
- [ Perguntas frequentes ](https://www.treinaweb.com.br#faq)
- [ Vantagens de estudar na TreinaWeb ](https://www.treinaweb.com.br/vantagens-de-estudar-na-treinaweb)
- [ Cursos para empresas ](https://www.treinaweb.com.br/empresas)
- [ Sugira um novo curso ](https://www.treinaweb.com.br/sugerir-curso)
- [ Trabalhe conosco ](https://www.treinaweb.com.br/trabalhe-conosco)
- [ Artigos ](https://www.treinaweb.com.br/blog)
- [ Desenvolvedores e agentes ](https://www.treinaweb.com.br/developers)
- [ Contato ](https://www.treinaweb.com.br/contato)
- [ Política de privacidade ](https://www.treinaweb.com.br/politica-de-privacidade)
- [ Termos de uso ](https://www.treinaweb.com.br/termos-de-uso)

## Baixe nosso aplicativo

 [   Disponível na **App Store**  ](https://apps.apple.com/us/app/treinaweb/id1322729447) [   Disponível no **Google Play**  ](https://play.google.com/store/apps/details?id=br.com.treinaweb.mobile) 

  Av. Paulista, 1765, Conj 71 e 72 · Bela Vista · São Paulo · SP · 01311-200   © 2004 – 2026 TreinaWeb Tecnologia LTDA · CNPJ 06.156.637/0001-58
