How to use devwithlando with VirtualBox

Posted on: 2019-02-17

About Lando


Lando (devwithlando.io) is an open source tool for developers to easily build development environments that mimic a production server.

As Lando is a cross-platform tool built upon Docker (docker.com), this allows teams on any operating system (OSX, Windows, and Linux) to quickly share and develop on the same environment.


Why use VirtualBox?


One massive disadvantage of Lando I've had for Windows developers is its requirement of Docker for Windows.

Docker for Windows can only run on Windows 10 64bit: Pro, Enterprise or Education (1607 Anniversary Update, Build 14393 or later).

If the developer computer meets these requirements it also requires to have Hyper-V enabled. Enabling Hyper-V breaks all other virtualisation on the host operating system.


Due to these two points, it can cause issues when trying to use Lando on a Windows system that is not a supported version,

or requires virtualisation (other than a Hyper-V VM) for other development work.


Delving deep in the source code of Lando has found obscure configuration options that can allow it to "unofficially" work using Docker Toolbox.

This method will most likely not be supported by the developers of Lando at all, it may be broken or removed in later releases.

Hopefully, the devs at Lando will see the benefits to Windows developers that don't support the minimum requirements or requires virtualisation other than Hyper-V and officially support and document this method.


Configure Lando


Lando has a global config file located in C:\Users\myuser\.lando\config.yml (replace "myuser" with the developer's windows username).

If the config file does not exist it can be created.


This is an example of the Lando global config.yml file:

dockerBin: "C:\\Program Files\\Docker Toolbox\\docker.exe"
composeBin: "C:\\Program Files\\Docker Toolbox\\docker-compose.exe"
engineConfig:
  socketPath: null
  host: 192.168.99.100
  port: 2376
  certPath: "C:\\Users\\myuser\\.docker\\machine\\machines\\default\\"

The dockerBin and composeBin configuration values are set to the default install location.

If the Docker Toolbox install location has been changed, it's easy to find the location using this command: where docker.


The engine config in most cases will work by default. These values can be found using the docker-machine config default command.

The engineConfig host can be found in the tcp url with the port.

The command also outputs tls certs, using these extract the path and enter it as the certPath.


Tips:


  • Lando's "*.lndo.site" domain will need to point to the docker host ip address (used above). You can do this via your hosts file.

  • Lando's localhost urls will need to be replaced with the docker host ip in your browser address bar.

  • Docker toolbox only shares the host user folders (C:\Users) with the docker vm, meaning any Lando mounts will need to be inside your user folder (You might be able to share outside folders, however, that's outside the scope of this post).