<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Bart Robertson</title>
    <description>The latest articles on Forem by Bart Robertson (@bartr).</description>
    <link>https://forem.com/bartr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F226759%2Fe0d420b7-408c-4a4e-8041-992350fdda80.jpeg</url>
      <title>Forem: Bart Robertson</title>
      <link>https://forem.com/bartr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/bartr"/>
    <language>en</language>
    <item>
      <title>WSL2 Time Sync</title>
      <dc:creator>Bart Robertson</dc:creator>
      <pubDate>Wed, 02 Sep 2020 02:12:52 +0000</pubDate>
      <link>https://forem.com/bartr/wsl2-time-sync-1kk7</link>
      <guid>https://forem.com/bartr/wsl2-time-sync-1kk7</guid>
      <description>&lt;p&gt;The simplest way I've found to keep your WSL2 clock in sync with your host clock.&lt;/p&gt;

&lt;p&gt;Start WSL and add the following line to your ~/.bashrc file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# fix wsl time sync&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;ntpdate ntp.ubuntu.com &amp;amp;&amp;gt;/dev/null &amp;amp;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;This will sync your clock to the ubuntu ntp server (any ntp server will work)&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;the &lt;code&gt;&amp;amp;&lt;/code&gt; on the end causes the command to run in the background so that your startup isn't delayed&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>windows</category>
      <category>wsl</category>
    </item>
    <item>
      <title>Install Docker on Windows Subsystem for Linux v2 (Ubuntu)</title>
      <dc:creator>Bart Robertson</dc:creator>
      <pubDate>Tue, 10 Sep 2019 06:29:11 +0000</pubDate>
      <link>https://forem.com/bartr/install-docker-on-windows-subsystem-for-linux-v2-ubuntu-5dl7</link>
      <guid>https://forem.com/bartr/install-docker-on-windows-subsystem-for-linux-v2-ubuntu-5dl7</guid>
      <description>&lt;h1&gt;
  
  
  Install Docker on Windows Subsystem for Linux v2 (Ubuntu)
&lt;/h1&gt;

&lt;p&gt;The Windows Subsystem for Linux v2 &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/wsl2-about"&gt;(WSL2)&lt;/a&gt; is available in preview for Windows 10 users. WSL2 is a substantial improvement over WSL and offers significantly faster file system performance and full system call capabilities. Which means we can finally run dockerd in WSL!&lt;/p&gt;

&lt;p&gt;WSL2 is currently only available as a preview feature through the &lt;a href="https://insider.windows.com/en-us/"&gt;Windows Insider program&lt;/a&gt;. WSL2 requires Windows 10 build 18917 or higher which currently requires the "Fast Ring" of Windows Insider.&lt;/p&gt;

&lt;p&gt;If you're not ready to run a fast ring preview on your dev box, you can download an ISO and experiment with WSL2 in a VM. Windows Insider ISOs are available &lt;a href="https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewadvanced"&gt;here:&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setup WSL2
&lt;/h2&gt;

&lt;p&gt;Setup instructions for WSL2 are available &lt;a href="https://docs.microsoft.com/en-us/windows/wsl/wsl2-install"&gt;here:&lt;/a&gt; Make sure to install the Ubuntu distro from the &lt;a href="https://aka.ms/wslstore"&gt;Microsoft Store&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once setup, start a command prompt and run the following command to verify Ubuntu is set to version 2&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
# Set WSL to default to v2
wsl --set-default-version 2

# check the version
wsl -l -v

# Output should show Ubuntu and version 2
# if not, you can upgrade the distro
# this usually takes 5-10 minutes
wsl --set-version Ubuntu 2

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Install Docker
&lt;/h2&gt;

&lt;p&gt;From WSL bash, run the following commands to setup Docker. These are nearly identical to setting up on an Ubuntu VM.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# update the package manager and install some prerequisites (all of these aren't technically required)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; apt-transport-https ca-certificates curl software-properties-common libssl-dev libffi-dev git wget nano

&lt;span class="c"&gt;# create a group named docker and add yourself to it&lt;/span&gt;
&lt;span class="c"&gt;#   so that we don't have to type sudo docker every time&lt;/span&gt;
&lt;span class="c"&gt;#   note you will need to logout and login before this takes affect (which we do later)&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;groupadd docker
&lt;span class="nb"&gt;sudo &lt;/span&gt;usermod &lt;span class="nt"&gt;-aG&lt;/span&gt; docker &lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;USER&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;

&lt;span class="c"&gt;# add Docker key and repo&lt;/span&gt;
curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://download.docker.com/linux/ubuntu/gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-key add -
&lt;span class="nb"&gt;sudo &lt;/span&gt;add-apt-repository &lt;span class="s2"&gt;"deb [arch=amd64] https://download.docker.com/linux/ubuntu &lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lsb_release &lt;span class="nt"&gt;-cs&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;&lt;span class="s2"&gt; stable"&lt;/span&gt;

&lt;span class="c"&gt;# (optional) add kubectl key and repo&lt;/span&gt;
curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://packages.cloud.google.com/apt/doc/apt-key.gpg | &lt;span class="nb"&gt;sudo &lt;/span&gt;apt-key add -
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb https://apt.kubernetes.io/ kubernetes-xenial main"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/kubernetes.list

&lt;span class="c"&gt;# update the package manager with the new repos&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update

&lt;span class="c"&gt;# upgrade the distro&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get upgrade &lt;span class="nt"&gt;-y&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get autoremove &lt;span class="nt"&gt;-y&lt;/span&gt;

&lt;span class="c"&gt;# install docker&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; docker-ce containerd.io

&lt;span class="c"&gt;# (optional) install kubectl&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; kubectl

&lt;span class="c"&gt;# (optional) install latest version of docker compose&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;curl &lt;span class="nt"&gt;-sSL&lt;/span&gt; https://github.com/docker/compose/releases/download/&lt;span class="sb"&gt;`&lt;/span&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; https://github.com/docker/compose/tags | &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="s2"&gt;"compose/releases/tag"&lt;/span&gt; | &lt;span class="nb"&gt;sed&lt;/span&gt; &lt;span class="nt"&gt;-r&lt;/span&gt; &lt;span class="s1"&gt;'s|.*([0-9]+\.[0-9]+\.[0-9]+).*|\1|p'&lt;/span&gt; | &lt;span class="nb"&gt;head&lt;/span&gt; &lt;span class="nt"&gt;-n&lt;/span&gt; 1&lt;span class="sb"&gt;`&lt;/span&gt;/docker-compose-&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-s&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt;-&lt;span class="sb"&gt;`&lt;/span&gt;&lt;span class="nb"&gt;uname&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt;&lt;span class="sb"&gt;`&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
&lt;span class="nt"&gt;-o&lt;/span&gt; /usr/local/bin/docker-compose &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nb"&gt;sudo chmod&lt;/span&gt; +x /usr/local/bin/docker-compose

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Finalizing setup
&lt;/h2&gt;

&lt;p&gt;Currently, Docker doesn't auto start, so you have to start the service each time. The below command will patch your .profile to start Docker each time you login.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"sudo service docker start"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;span class="c"&gt;# exit and then restart WSL&lt;/span&gt;
&lt;span class="nb"&gt;exit&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Once you exit and restart WSL (just run "wsl" from the command prompt or Windows Run command), Docker should work correctly. To test, run the following command from WSL bash.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
docker run &lt;span class="nt"&gt;-it&lt;/span&gt; hello-world

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;h2&gt;
  
  
  Lagniappe
&lt;/h2&gt;

&lt;p&gt;I prefer WSL to always start in my home directory (~), so I use the following to add that to my .profile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"cd ~"&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&amp;gt;&lt;/span&gt; ~/.profile

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Install Azure CLI&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# add Azure CLI key and repo&lt;/span&gt;
curl &lt;span class="nt"&gt;-sL&lt;/span&gt; https://packages.microsoft.com/keys/microsoft.asc | gpg &lt;span class="nt"&gt;--dearmor&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/trusted.gpg.d/microsoft.asc.gpg
&lt;span class="nv"&gt;CLI_REPO&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;lsb_release &lt;span class="nt"&gt;-cs&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb [arch=amd64] https://packages.microsoft.com/repos/azure-cli/ &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;CLI_REPO&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; main"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/azure-cli.list

&lt;span class="c"&gt;# update the package manager&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update

&lt;span class="c"&gt;# install Azure CLI&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; azure-cli

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Install dotnet core&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;
&lt;span class="c"&gt;# add the dotnet core repo&lt;/span&gt;
&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-bionic-prod bionic main"&lt;/span&gt; | &lt;span class="nb"&gt;sudo tee&lt;/span&gt; /etc/apt/sources.list.d/dotnetdev.list

&lt;span class="c"&gt;# update the package manager&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get update

&lt;span class="c"&gt;# install dotnet core&lt;/span&gt;
&lt;span class="nb"&gt;sudo &lt;/span&gt;apt-get &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-y&lt;/span&gt; dotnet-sdk-2.2

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



</description>
      <category>docker</category>
      <category>windows</category>
      <category>wsl</category>
    </item>
  </channel>
</rss>
