Getting started with Windows Subsystem for Linux, Ubuntu and Docker

Lucas Jellema

Starting with a vanilla Windows 10 environment, it took just a few simple steps to get going with Linux on my Windows machine in the Windows Subsystem for Linux (WSL). Note: this is not yet Version 2 of wsl which is currently in (limited) preview

  • install Ubuntu App from Windows App Store
  • enable Windows Linux Subsystem feature
  • run Ubuntu (in elevated mode – as Windows Admin)
    • create Linux user
    • update Ubuntu (optional)
  • do your Linux things
    • understand interaction between Linux and Windows file system
  • as an example: install and run Apache server (and access from web browser on Windows)

1. Download Ubuntu (or any other Linux distro) App from Windows App Store

image

2. Enable Windows Linux Subsystem feature

image

image

    3. run Ubuntu (in elevated mode – as Windows Admin)

    image

    You are prompted to create a Linux user.

    Update Ubuntu (optional)

    sudo apt upgrade


    4.do your Linux things

    I did the somewhat confusing act of creating a user called linux – hence the weird home directory

    image

    and yes, I used vi to edit file myfile.txt!

    5. understand interaction between Linux and Windows file system

      The Linux file system is mapped to the Windows file system - in the following way (as I learned from this thread)

      C:\Users\<Windows Username>\AppData\Local\Packages\CanonicalGroupLimited.UbuntuonWindows_79rhkp1fndgsc\LocalState\rootfs\home\<Linux Username>

      6. Install Apache

      (see: https://www.how2shout.com/how-to/install-apache-on-windows-10-wsl-http-server.html)

      SNAGHTML122edfb4

      Start the Apache HTTPD service

      sudo service apache2 start

      In my case, the popup for Windows Defender Firewall appeared and the initial startup of Apache failed.

      image


      By pressing Allow Access and trying again, I got Apache to start:image

      Access the Apache web server from the Windows Browser (outside WSL – at http://127.0.0.1):

      SNAGHTML123132db

      Note on Docker:

      I have tried to get Docker running no WSL. However, the most recent version of Docker Community Edition that has been verified to run on Windows Subsystem Linux is 17.09.0 (see: https://medium.com/faun/docker-running-seamlessly-in-windows-subsystem-linux-6ef8412377aa) and I could not easily find that version of Docker CE – though I did not try very hard.

      Note 2: WSL is quite neatly separated from my regular Windows environment and in that sense is similar to a container or a VM. However, I can not run applications from or as a Docker Container – which is a bit of a shame.

      image

      Leave a Reply

      This site uses Akismet to reduce spam. Learn how your comment data is processed.

      Next Post

      Calling out from Java to JavaScript (with call back) - leveraging interoperability support of GraalVM

      Facebook0TwitterLinkedinInteroperability from Java to JavaScript has been an objective for the Java community for quite a while. With Rhino and later Nashorn, two valiant attempts were made to add scripting interaction to the JDK and JVM. Now, with GraalVM, there is a better alternative for running JavaScript code from within […]