# WSL

O Windows Subsystem for Linux (WSL) é um recurso do Windows que permite aos desenvolvedores executar um ambiente GNU/Linux diretamente no Windows, sem a necessidade de uma máquina virtual separada. Ele proporciona uma camada de compatibilidade para rodar binários de Linux no Windows, permitindo que os usuários executem distribuições Linux completas, como Ubuntu, Debian, Fedora, entre outras, diretamente no Windows.

Aqui estão alguns detalhes importantes sobre o WSL:

1. **Execução de Distribuições Linux**: Com o WSL, você pode instalar e executar distribuições Linux diretamente no Windows. Isso permite que você use ferramentas de linha de comando e software que geralmente estariam disponíveis apenas em um ambiente Linux.
2. **Versões do WSL**:
   * **WSL 1**: A primeira versão do WSL usa uma camada de compatibilidade para traduzir chamadas do sistema Linux em chamadas do sistema Windows. Isso significa que o Linux roda como um subsistema em cima do kernel do Windows.
   * **WSL 2**: A segunda versão do WSL inclui um kernel Linux completo executado em uma máquina virtual leve, proporcionando maior compatibilidade e desempenho em comparação com o WSL 1. O WSL 2 oferece uma experiência Linux quase completa no Windows.
3. **Integração com Windows**: O WSL permite uma integração profunda entre Windows e Linux. Por exemplo, você pode acessar arquivos do sistema de arquivos do Windows a partir do Linux e vice-versa. Além disso, é possível executar comandos do Linux diretamente no terminal do Windows e comandos do Windows no terminal do Linux.
4. **Desempenho**: No WSL 2, o uso de um kernel Linux real significa que muitas operações, como gerenciamento de arquivos e execução de software, são mais rápidas e mais compatíveis em relação ao WSL 1.
5. **Uso com Docker**: O WSL 2 é frequentemente usado em conjunto com Docker para rodar contêineres Linux no Windows. O Docker Desktop, por exemplo, pode ser configurado para usar o WSL 2 como backend, permitindo que os contêineres Linux sejam executados eficientemente no Windows.
6. **Ambiente de Desenvolvimento**: O WSL é amplamente utilizado por desenvolvedores que precisam de ferramentas e ambientes de desenvolvimento Linux, mas que preferem ou precisam usar o Windows como sistema operacional principal.

Se você está usando Windows 11, o WSL 2 é a versão recomendada devido às suas melhorias significativas em desempenho e compatibilidade com o Linux.

## Laboratório

* Abrir o terminal com a distribuição Linux instalada
* Instalar o Docker Engine da distribuição Linux existente:

{% embed url="<https://docs.docker.com/engine/install/ubuntu/>" %}

* Setups Docker `apt` repository:

```bash
# Add Docker's official GPG key:
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Add the repository to Apt sources:
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update
```

* Install Docker Packages

```bash
$ sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
```

* Verify installation

```bash
$ sudo docker run hello-world
```

* Post Install

{% embed url="<https://docs.docker.com/engine/install/linux-postinstall/>" %}

```bash
$ sudo usermod -aG docker $USER
$ docker
$ su <usuario>
$ docker container ls
```

> Para desenvolvimento .NET em ambiente Windows o Docker Desktop é recomendável
