<?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>DEV Community: Moataz Burhan</title>
    <description>The latest articles on DEV Community by Moataz Burhan (@moatazburhan).</description>
    <link>https://dev.to/moatazburhan</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%2F577378%2F655424b5-4ff6-4cd2-92c7-cdc22e168016.jpg</url>
      <title>DEV Community: Moataz Burhan</title>
      <link>https://dev.to/moatazburhan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/moatazburhan"/>
    <language>en</language>
    <item>
      <title>100DaysOfCode — Day 09</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Fri, 19 Feb 2021 01:40:05 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-09-do0</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-09-do0</guid>
      <description>&lt;p&gt;Today, I finished the following sections in "Learn How To Code: Google's Go (golang) Programming Language" course:&lt;br&gt;
• Section 14: Functions&lt;br&gt;
• Section 16: Pointers&lt;/p&gt;

&lt;p&gt;End of day 9 of 100DaysOfCode.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>microservices</category>
      <category>docker</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 08</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Wed, 17 Feb 2021 04:27:10 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-08-2kal</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-08-2kal</guid>
      <description>&lt;p&gt;Today, I finished the following sections in "Learn How To Code: Google's Go (golang) Programming Language" course:&lt;br&gt;
    • Section 10: Data Grouping&lt;br&gt;
    • Section 12: Structs&lt;/p&gt;

&lt;h6&gt;
  
  
  End of day 8 of 100DaysOfCode.
&lt;/h6&gt;

</description>
      <category>docker</category>
      <category>100daysofcode</category>
      <category>programming</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 07</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Tue, 16 Feb 2021 03:40:30 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-07-5hhh</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-07-5hhh</guid>
      <description>&lt;p&gt;Today, I finished the following sections in "Learn How To Code: Google's Go (golang) Programming Language" course:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Section 4: Variables, values, &amp;amp; type&lt;/li&gt;
&lt;li&gt;Section 6: Go fundamentals&lt;/li&gt;
&lt;li&gt;Section 8: Control flow&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  End of day 7 of 100DaysOfCode.
&lt;/h6&gt;

</description>
      <category>programming</category>
      <category>docker</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 06</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Mon, 15 Feb 2021 07:40:38 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-06-3de6</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-06-3de6</guid>
      <description>&lt;p&gt;This is a simple tutorial demonstrates creating Golang Docker image.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://dev.to/moatazburhan/100daysofcode-day-05-9b4"&gt;Day 5 tutorial&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Go App
&lt;/h3&gt;

&lt;p&gt;Create a simple Go program &lt;code&gt;hello-http.go&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="s"&gt;"fmt"&lt;/span&gt;
    &lt;span class="s"&gt;"log"&lt;/span&gt;
    &lt;span class="s"&gt;"net/http"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResponseWriter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"hello world&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HandleFunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Println&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Starting server on 0.0.0.0:8080"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ListenAndServe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;":8080"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Docker file
&lt;/h3&gt;

&lt;p&gt;In the same directory, create Docker manifest file (&lt;code&gt;Dockerfile&lt;/code&gt;):&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight docker"&gt;&lt;code&gt;&lt;span class="c"&gt;# initializes a new build stage and sets the base image&lt;/span&gt;
&lt;span class="k"&gt;FROM&lt;/span&gt;&lt;span class="s"&gt; golang:1.15.1-alpine&lt;/span&gt;

&lt;span class="c"&gt;# copy hello-http.go and add it to the filesystem of the image&lt;/span&gt;
&lt;span class="k"&gt;ADD&lt;/span&gt;&lt;span class="s"&gt; hello-http.go .&lt;/span&gt;

&lt;span class="c"&gt;# compile the program&lt;/span&gt;
&lt;span class="k"&gt;RUN &lt;/span&gt;go build hello-http.go

&lt;span class="c"&gt;# provide the default command for the container&lt;/span&gt;
&lt;span class="k"&gt;CMD&lt;/span&gt;&lt;span class="s"&gt; ["/go/hello-http"]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  docker build
&lt;/h3&gt;

&lt;p&gt;Build an image from your Dockerfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker build &lt;span class="nb"&gt;.&lt;/span&gt; &lt;span class="nt"&gt;-t&lt;/span&gt; hello:v1.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-t&lt;/code&gt; Name and tag the image in the 'name:tag' format&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;List docker images:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;REPOSITORY                         TAG       IMAGE ID       CREATED          SIZE
hello                              v1.0.0    47f0babcdfe2   44 minutes ago   306MB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-dit&lt;/span&gt; &lt;span class="nt"&gt;--rm&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; 8080:8080 &lt;span class="nt"&gt;--name&lt;/span&gt; hello hello:v1.0.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker run&lt;/code&gt; Run a command in a new container&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt; Run container in background and print container ID&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-i&lt;/code&gt; interactive&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-t&lt;/code&gt; Allocate a pseudo-TTY&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--rm&lt;/code&gt; Automatically remove the container when it exits&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-p 8080:8080&lt;/code&gt; Publish a container's port(s) to the host&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hello:v1.0.0&lt;/code&gt; Docker image to run&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--name hello&lt;/code&gt; Assign a name to the container&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Test your container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker ps&lt;/code&gt; List containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You see a list like this shows a container running &lt;code&gt;hello&lt;/code&gt; image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;CONTAINER ID   IMAGE          COMMAND            CREATED          STATUS          PORTS                    NAMES
7c3c8774134d   hello:v1.0.0   &lt;span class="s2"&gt;"/go/hello-http"&lt;/span&gt;   54 minutes ago   Up 54 minutes   0.0.0.0:8080-&amp;gt;8080/tcp   hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now open your browser and go to &lt;code&gt;http://localhost:8080/&lt;/code&gt;:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XZSBgiE_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z9gc3exa3txvsv7xcc6r.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XZSBgiE_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/z9gc3exa3txvsv7xcc6r.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  End the container
&lt;/h3&gt;

&lt;p&gt;Now run the following command to end the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker stop hello
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now list the containers&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that docker container has stopped and automatically removed:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                     PORTS     NAMES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h6&gt;
  
  
  End of day 6 of 100DaysOfCode.
&lt;/h6&gt;

</description>
      <category>docker</category>
      <category>100daysofcode</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 05</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Sat, 13 Feb 2021 22:44:56 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-05-9b4</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-05-9b4</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h5k9428Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9cuoc13sybyj26dhip38.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h5k9428Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/9cuoc13sybyj26dhip38.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this series, I will alternate between Go language learning, Docker concepts, and Kubernetes.&lt;/p&gt;

&lt;p&gt;Today, I finished a basic docker tutorial. I am glad to share it with you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisite
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install docker

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/docker-for-mac/install/"&gt;Install Docker Desktop on Mac&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.docker.com/docker-for-windows/install/"&gt;Install Docker Desktop on Windows&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  What is a container?
&lt;/h3&gt;

&lt;p&gt;Docker provides the ability to package and run an application in a loosely isolated environment called a container. A container is simply another process on your machine that has been isolated from all other processes on the host machine.&lt;/p&gt;

&lt;h3&gt;
  
  
  Your first container
&lt;/h3&gt;

&lt;p&gt;Open a command prompt or bash window, and run the command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker run &lt;span class="nt"&gt;-dp&lt;/span&gt; 80:80 &lt;span class="nt"&gt;--name&lt;/span&gt; getting-started docker/getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker run&lt;/code&gt; Run a command in a new container&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-d&lt;/code&gt; Run container in background and print container ID&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-p 80:80&lt;/code&gt; Publish a container's port(s) to the host&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;docker/getting-started&lt;/code&gt; Docker image to run&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--name getting-started&lt;/code&gt; Assign a name to the container&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Test your container
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;docker ps&lt;/code&gt; List containers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You see a list like this shows a container running docker/getting-started image.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;CONTAINER ID   IMAGE                    COMMAND                  CREATED         STATUS         PORTS                NAMES
1af9e7993c08   docker/getting-started   &lt;span class="s2"&gt;"nginx -g 'daemon of…"&lt;/span&gt;   2 minutes ago   Up 2 minutes   0.0.0.0:80-&amp;gt;80/tcp   getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now open your browser and go to &lt;code&gt;http://localhost/&lt;/code&gt;. Boom ... your container is up and running:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Y4m_SFiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4xw02r47aupw5pwvvpnx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Y4m_SFiP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/4xw02r47aupw5pwvvpnx.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  End the container
&lt;/h3&gt;

&lt;p&gt;Now run the following command to end the container:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker stop getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now list the containers&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note that docker container has stopped but it is still in your system. You can see stopped containers using the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;CONTAINER ID   IMAGE                    COMMAND                  CREATED          STATUS                     PORTS     NAMES
1af9e7993c08   docker/getting-started   &lt;span class="s2"&gt;"nginx -g 'daemon of…"&lt;/span&gt;   6 minutes ago    Exited &lt;span class="o"&gt;(&lt;/span&gt;0&lt;span class="o"&gt;)&lt;/span&gt; 3 minutes ago             getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To remove the container run the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker &lt;span class="nb"&gt;rm &lt;/span&gt;getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Remove the image
&lt;/h3&gt;

&lt;p&gt;Note that &lt;code&gt;docker/getting-started&lt;/code&gt; image was downloaded when ran &lt;code&gt;docker run&lt;/code&gt; command. Run the following command to see image in your system:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker images
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;REPOSITORY                    TAG       IMAGE ID       CREATED         SIZE
docker/getting-started        latest    3c156928aeec   9 months ago    24.8MB
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Run the following command to remove the downloaded image:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;docker rmi docker/getting-started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Untagged: docker/getting-started:latest
Untagged: docker/getting-started@sha256:d2c4fb0641519ea208f20ab03dc40ec2a5a53fdfbccca90bef14f870158ed577
Deleted: sha256:3c156928aeec9595a140d3e9bb67fc6849650a0a756bbb0b1690ce9a4ddca884
Deleted: sha256:bd0923edebaabd47c31d4f79115f9cbd91e6045c9b2585f02b346af81a6d3dbd
Deleted: sha256:0d6528f3488cda7f74d825579182af56cbdd7fed5bccacfa3042834b514157ac
Deleted: sha256:ec7d8444b0ff84cd1e55ec191abe60e26f996ac883d87dcb50fdca507f2af8be
Deleted: sha256:beee9f30bc1f711043e78d4a2be0668955d4b761d587d6f60c2c8dc081efb203
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;End of day 5 of 100DaysOfCode.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>kubernetes</category>
      <category>100daysofcode</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 03</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Sat, 13 Feb 2021 17:43:55 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-03-4j6h</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-03-4j6h</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--70p3qxcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1xpgvt65qfoocc6zbzk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--70p3qxcP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/1xpgvt65qfoocc6zbzk7.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In day 3, I started “Learn How To Code: Google’s Go (golang) Programming Language” course by Todd McLeod from udemy.com. Section 1 (Introduction) and Section 2.&lt;/p&gt;

&lt;p&gt;End of day 3 of 100DaysOfCode.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>100DaysOfCode — Day 02</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Sat, 13 Feb 2021 17:41:15 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-02-565a</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-02-565a</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--RFSs5Lpd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/94e8ux4byz3mdr82f8v5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--RFSs5Lpd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/94e8ux4byz3mdr82f8v5.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In day 2, I started creating a simple service and Dockerfile. See the code here &lt;a href="https://github.com/MoatazBurhan/Grunderound"&gt;https://github.com/MoatazBurhan/Grunderound&lt;/a&gt;. To test this code, install Docker first. Follow this document to instructions: &lt;a href="https://docs.docker.com/get-started/"&gt;https://docs.docker.com/get-started/&lt;/a&gt;.&lt;br&gt;
Go Code&lt;/p&gt;

&lt;p&gt;This code simply reads your URL path and display it in the browser.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight go"&gt;&lt;code&gt;&lt;span class="k"&gt;package&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
   &lt;span class="s"&gt;"fmt"&lt;/span&gt;
   &lt;span class="s"&gt;"html"&lt;/span&gt;
   &lt;span class="s"&gt;"log"&lt;/span&gt;
   &lt;span class="s"&gt;"net/http"&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="k"&gt;func&lt;/span&gt; &lt;span class="n"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;

   &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;HandleFunc&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"/"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;func&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt; &lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ResponseWriter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;r&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Request&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="n"&gt;fmt&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fprintf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;w&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"redirecting to link based on %q"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;html&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;EscapeString&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;r&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;URL&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Path&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
   &lt;span class="p"&gt;})&lt;/span&gt;

   &lt;span class="n"&gt;log&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;Fatal&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;http&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;ListenAndServe&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;":8081"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="no"&gt;nil&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dockerfile&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;FROM golang:1.15.8
RUN mkdir /app
ADD . /app
WORKDIR /app
RUN go build -o main .
CMD ["/app/main"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Deploying the Application&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ git clone https://github.com/MoatazBurhan/Grunderound
$ docker build -t go-service .
$ docker run -d -p 8080:8081 go-service
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you open up &lt;a href="http://localhost:8080"&gt;http://localhost:8080&lt;/a&gt; within your browser, you should see that the application is successfully responding with redirecting to link based on "/".&lt;/p&gt;

&lt;p&gt;End of day 2 of 100DaysOfCode.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>go</category>
      <category>docker</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>100DaysOfCode — Day 01</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Sat, 13 Feb 2021 17:36:21 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-day-01-5do7</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-day-01-5do7</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aInZwjjf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dim5h0km4vdthejaizh6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aInZwjjf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/dim5h0km4vdthejaizh6.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is my progress in my 100DaysOfCode challenge:&lt;/p&gt;

&lt;p&gt;The plan is to build a micro-services project in GoLang using Doctor and Kubernetes. Until today I am open to suggestions about what the project is going to be. I am leaning toward building a website that allows the users to shorten their long links.&lt;/p&gt;

&lt;p&gt;Here is what I accomplished in day one:&lt;/p&gt;

&lt;p&gt;I picked a name for the project, Grunderound. In the book, Unbirthday by Liz Braswell, Grunderound is a place of nonsense in Wonderland. When I asked my daughter for name suggestions, she suggested this name from the book she is reading. It is a place where you look for secrets, “you grunder around looking for the right wrong”, explains the Mad Hatter in the book.&lt;/p&gt;

&lt;p&gt;I created a repository for the project in my github space. Honestly this is my first side project that I plan to work on it seriously. The repository is almost empty currently: &lt;a href="https://github.com/MoatazBurhan/Grunderound"&gt;https://github.com/MoatazBurhan/Grunderound&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I struggled a little when choosing the type of license to use. Maybe it is too early to make a decision about that. I do not know. I am always foggy in this area. I felt like I should either use MIT or GNU GPL V3. After reading about the differences in &lt;a href="https://choosealicense.com/"&gt;https://choosealicense.com/&lt;/a&gt; I ended up choosing MIT. Please comment with your opinion if your think this is not the best choice.&lt;/p&gt;

&lt;p&gt;I started thinking about the project layout. Note that I am new to all the technologies I am using in this project (Go, Docker, and Kubernetes). So I do not really know what I am doing. I started reading Jin Feng’s suggestions in Go Microservice with Clean Architecture: Application Layout. I will continue on this tomorrow.&lt;/p&gt;

&lt;p&gt;End of day 1 of 100DaysOfCode.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>docker</category>
      <category>go</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>100DaysOfCode challenge</title>
      <dc:creator>Moataz Burhan</dc:creator>
      <pubDate>Sat, 13 Feb 2021 17:31:29 +0000</pubDate>
      <link>https://dev.to/moatazburhan/100daysofcode-challenge-1kho</link>
      <guid>https://dev.to/moatazburhan/100daysofcode-challenge-1kho</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mSxg8I2Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/enl1gbizlc7bthyuy5k9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mSxg8I2Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/enl1gbizlc7bthyuy5k9.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
I’m publicly committing to the 100DaysOfCode Challenge starting today! I will be building an implementation of shortened URL in GO. A micro-services project using Docker and Kubernetes: &lt;a href="https://github.com/MoatazBurhan/Grunderound"&gt;https://github.com/MoatazBurhan/Grunderound&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Learn More and Join me! hey &lt;a class="comment-mentioned-user" href="https://dev.to/ka11away"&gt;@ka11away&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a href="https://100DaysOfCode.com"&gt;https://100DaysOfCode.com&lt;/a&gt; #100DaysOfCode&lt;/p&gt;

&lt;p&gt;I will use this space to publish my progress everyday.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>kubernetes</category>
      <category>microservices</category>
      <category>docker</category>
    </item>
  </channel>
</rss>
