<?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: Phisinee Sagulvanitchaporn</title>
    <description>The latest articles on DEV Community by Phisinee Sagulvanitchaporn (@beaubaby).</description>
    <link>https://dev.to/beaubaby</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%2F253131%2F4c45bbb2-18a2-4812-9b08-4c5543f3f908.jpeg</url>
      <title>DEV Community: Phisinee Sagulvanitchaporn</title>
      <link>https://dev.to/beaubaby</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/beaubaby"/>
    <language>en</language>
    <item>
      <title>คู่มือการติดตั้งเครื่องมือที่ใช้ในการเรียน The Cloud Camp รอบ Audition</title>
      <dc:creator>Phisinee Sagulvanitchaporn</dc:creator>
      <pubDate>Sun, 18 Jun 2023 15:00:03 +0000</pubDate>
      <link>https://dev.to/jumpbox/khuumuuekaartidtangekhruuengmuuethiiaichainkaareriiyn-the-cloud-camp-rb-audition-4m5j</link>
      <guid>https://dev.to/jumpbox/khuumuuekaartidtangekhruuengmuuethiiaichainkaareriiyn-the-cloud-camp-rb-audition-4m5j</guid>
      <description>&lt;p&gt;อย่างที่รู้กันว่า Jumpbox กำลังเปิดโครงการ "The Cloud Camp" ในรอบ Free หรือที่เรียกว่า "รอบ Audition 3 วัน" เพื่อเตรียมตัวในการเรียนหลักสูตรเข้มข้น 15 สัปดาห์ด้วยเนื้อหาเชิงลึก&lt;br&gt;
ในหลักสูตรของเรามีความจำเป็นอย่างมากที่ผู้เรียนจะต้องสามารถฝึกฝนในการใช้งานเครื่องมือพื้นฐานที่ใช้ในการเรียนการสอนของเรา เพื่อได้ปฏิบัติจริง โดยเครื่องมือแรกที่เราอยากให้ศึกษาและติดตั้งเป็นสิ่งแรก นั่นก็คือ "Docker" นั่นเอง&lt;br&gt;
ดังนั้น ในบทความนี้ เรามาดูกันเถอะว่า เราจะสามารถติดตั้ง Docker ได้อย่างไรบ้าง&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;วิธีติดตั้ง Docker Desktop บนคอมพิวเตอร์ที่เป็น Mac&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ดาวน์โหลด Docker สำหรับ Mac OS คุณสามารถดาวน์โหลดไฟล์ สำหรับโปรแกรม Docker ได้ที่นี่ &lt;a href="https://docs.docker.com/desktop/install/mac-install/"&gt;link&lt;/a&gt; โดยเลือกระหว่าง Mac Intel Chip (Mac OS รุ่นเก่า) หรือ Mac Apple Silicon Chip (Mac OS รุ่นใหม่ Chip M1 ขึ้นไป)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1JiTChvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7fozsg15gmu2azbvfqp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1JiTChvF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7fozsg15gmu2azbvfqp.png" alt="Docker Mac Download" width="800" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;หลังจากดาวน์โหลดตัวติดตั้งแล้ว เราก็เปิดมันขึ้นมา แล้วลาก Docker ไปที่โฟลเดอร์ Applications และนั่นคือ เราติดตั้ง Docker Desktop สำเร็จแล้วตามภาพ&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9XYheJvK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t9bn7x3mazn9hfon9rcy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9XYheJvK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t9bn7x3mazn9hfon9rcy.png" alt="Done" width="800" height="337"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5vw6dgyZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qi1y7llacxohl8pgcy1f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5vw6dgyZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qi1y7llacxohl8pgcy1f.png" alt="Install Loading" width="648" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.1 เราต้องใช้เวลาสักครู่เพื่อให้ Docker desktop เริ่มทำงาน โดยสามารถดูสถานะได้โดยคลิกที่ไอคอนนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mL0BrxTK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5p9i20i2377ipdwa0uw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mL0BrxTK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z5p9i20i2377ipdwa0uw.png" alt="Docker Status Running" width="572" height="854"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ดังนั้น การใช้งานของ Docker จะเสร็จสมบูรณ์เมื่อ Status ของ Docker Desktop ขึ้นว่า "Docker Desktop is Running"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xBocqnlU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/leoviz06oq6c5qsi8bs6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xBocqnlU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/leoviz06oq6c5qsi8bs6.png" alt="Docker Status Done" width="494" height="114"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ก็เป็นอันว่า "การติดตั้ง Docker เสร็จสมบูรณ์เรียบร้อยแล้ว"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;วิธีติดตั้ง Docker Desktop บนคอมพิวเตอร์ที่เป็น Windows&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ความต้องการขั้นต่ำของระบบ&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ระบบปฏิบัติการ Windows 10 Pro, Enterprise, หรือ Education อย่างใดอย่างหนึ่ง แต่ต้องเป็นเวอร์ชัน 64 bit เท่านั้น&lt;/li&gt;
&lt;li&gt;RAM 4GB ขึ้นไป&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนในการติดตั้ง&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;อัพเดท Windows 10 เป็น Version 2004 หรือมากกว่า&lt;/li&gt;
&lt;li&gt;เปิดใช้งาน WSL 2 Feature on Windows&lt;/li&gt;
&lt;li&gt;ติดตั้ง Docker Desktop&lt;/li&gt;
&lt;li&gt;ทดลองใช้งาน Docker ใน Windows 10&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;เปิดใช้งาน WSL 2 Feature บน Windows
1.1 เปิด PowerShell ด้วยสิทธิ Administrator (หรือ คลิกขวาที่โปรแกรม Powershell แล้วกดเลือก &lt;code&gt;Run as Administration&lt;/code&gt;)&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dPcepezn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xyvq9ntjid8huvk6ctq2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dPcepezn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xyvq9ntjid8huvk6ctq2.png" alt="Powershell Terminal" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;รันคำสั่งข้างล่างนี้เพื่อเปิดใช้งาน “Windows Subsystem for Linux” โดยการก๊อปปี้คำสั่งด้านล่างไปวางตรงหน้าต่าง Powershell ที่แสดงขึ้นมา&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;เมื่อกด Enter แล้ว จะแสดงผลดังรูปด้านล่างนี้&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QfphvKj7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptqcqmimfwwmsw19s6pg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QfphvKj7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ptqcqmimfwwmsw19s6pg.png" alt="Windows Subsystem for Linux" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.2 รันคำสั่งข้างล่างนี้เพื่อเปิดใช้งาน “Virtual Machine Platform”&lt;/p&gt;

&lt;p&gt;&lt;code&gt;dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6XwRQGsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eh6m78h7hoocxjvrjtgw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6XwRQGsl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eh6m78h7hoocxjvrjtgw.png" alt="Virtual Machine Complete" width="800" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ถ้าสามารถติดตั้งเสร็จเรียบร้อย โปรแกรมจะขึ้นว่า "The operation complete successfully"&lt;/p&gt;

&lt;p&gt;1.3 เมื่อเสร็จแล้ว สั่ง Restart Windows 1 ครั้งเพื่อเสร็จสิ้นการติดตั้ง WSL 2&lt;/p&gt;

&lt;p&gt;1.4 เปิด Powershell อีกครั้งและรันคำสั่งข้างล่างนี้เพื่อปรับใช้ WSL 2 เป็นค่าเริ่มต้นเมื่อเรามีการติดตั้ง Linux Distribution&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wsl --set-default-version 2&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;1.5 ในกรณีที่เราไม่ได้ Update Windows 10 เป็น Version 2004 จะเจอ Error แบบนี้เนื่องจากยังไม่รองรับ WSL 2&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TVATo6A1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/343wiwmxvmut48m7vkcg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TVATo6A1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/343wiwmxvmut48m7vkcg.png" alt="Window 10 WSL Error" width="800" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1.6 ถ้า Update Windows 10 เป็น Version 2004 แล้วก็จะพบว่าเราจะเจอคำแนะนำให้ Update Linux Kernel เพิ่มเติม โดยอัพเดทได้ตามนี้ &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ดาวน์โหลด Linux kernel update package&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ระบบ x64 : &lt;a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi"&gt;Linux kernel&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;ระบบ ARM64: &lt;a href="https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_arm64.msi"&gt;ARM64 package&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;1.7 เมื่อ Update Linux Kernel เสร็จแล้ว ลองเปิด Powershell อีกและรันคำสั่งข้างล่างนี้อีกครั้งเพื่อปรับใช้ WSL 2 เป็นค่าเริ่มต้นเมื่อเรามีการติดตั้ง Linux Distribution&lt;/p&gt;

&lt;p&gt;&lt;code&gt;wsl --set-default-version 2&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ดาวน์โหลด Docker สำหรับ Windows
คุณสามารถดาวน์โหลดไฟล์ สำหรับโปรแกรม Docker ได้ที่นี่ &lt;a href="https://docs.docker.com/desktop/install/windows-install/"&gt;link&lt;/a&gt; 
และกดปุ่มตามภาพด้านล่าง เพื่อทำการ Download program &lt;code&gt;Docker Desktop Installer&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5ixt0tuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcpnipabj57znxn19v5q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5ixt0tuz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wcpnipabj57znxn19v5q.png" alt="Docker installer" width="584" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.1 ติดตั้งไฟล์ &lt;code&gt;Docker Desktop Installer.exe&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;2.2 รัน Setup File ตามขั้นตอนในภาพ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rP25dksp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7zsoqzzjboaof481v0h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rP25dksp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j7zsoqzzjboaof481v0h.png" alt="Set up Docker" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;2.3 เปิด Docker Desktop จาก &lt;code&gt;Start menu&lt;/code&gt; &lt;br&gt;
จาก Docker Menu ให้ไปที่ Settings -&amp;gt; General เพื่อตรวจสอบว่า Docker ทำงานอยู่บน WSL 2 หรือไม่&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9ueElHMI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a6eqgwm25lwf5bf8zl4w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9ueElHMI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/a6eqgwm25lwf5bf8zl4w.png" alt="Correct Setup" width="800" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อถึงขึ้นตอนนี้ เป็นอันว่า "การติดตั้ง Docker บน Window เสร็จสมบูรณ์เรียบร้อยแล้ว"&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ขั้นตอนทดลองใช้งาน Docker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;คราวนี้มาถึงวิธีการเช็คว่า "เราสามารถใช้งาน Docker ได้แล้วจริง ๆ" สามารถใช้ &lt;code&gt;command&lt;/code&gt; เช็คได้ทั้งบน Mac OS และ Window OS &lt;/p&gt;

&lt;p&gt;โดยการทดลองใช้งาน Docker ใน Windows เพื่อดูว่าใช้งานได้จริงโดยลองรัน &lt;code&gt;command&lt;/code&gt; ผ่าน Terminal ของ Powershell จากข้อ 1.1 ด้วยคำสั่งเพื่อใช้ในการเช็ค Docker Version ด้วยคำสั่งตามด้านล่าง&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker --version&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;ถ้าขึ้นตามภาพด้านล่าง แสดงว่า "ลงได้สำเร็จแล้ว"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--f4k2mEig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81kcjqvptjsbg5xbec47.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--f4k2mEig--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/81kcjqvptjsbg5xbec47.png" alt="Done" width="800" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หรือของ Mac OS ก็เช่นกัน&lt;br&gt;
ให้เปิด Terminal บน Mac OS แล้วรันคำสั่งเดียวกัน &lt;code&gt;docker --version&lt;/code&gt; ถ้าขึ้นตามภาพด้านล่าง แสดงว่า "ลงได้สำเร็จแล้วเช่นกันจ้า"&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mbIkzie5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbt3i1dhlm4vb3zcvxkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mbIkzie5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vbt3i1dhlm4vb3zcvxkf.png" alt="Terminal Mac" width="800" height="115"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8RYnRqiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pni49he1q8o94bvavrsa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8RYnRqiD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pni49he1q8o94bvavrsa.png" alt="Done" width="800" height="236"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;หลังจากการลง Docker อยากให้ทุกท่านได้ตั้งใจเรียน The Cloud Camp รอบ Audition และฝึกทำจริงให้จงได้เลยนะคะ ... ขอเป็นกำลังใจให้ทุกคนค่ะ :)&lt;/p&gt;

</description>
      <category>container</category>
      <category>docker</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>มาฝึก Linux command กันเถอะ 👨‍💻</title>
      <dc:creator>Phisinee Sagulvanitchaporn</dc:creator>
      <pubDate>Fri, 18 Feb 2022 16:20:14 +0000</pubDate>
      <link>https://dev.to/jumpbox/maafuek-linux-command-kab-katakoda-kanetha-1bi6</link>
      <guid>https://dev.to/jumpbox/maafuek-linux-command-kab-katakoda-kanetha-1bi6</guid>
      <description>&lt;p&gt;สำหรับการเรียน Kakkai Pre-academy by Jumpbox ครั้งที่ 6 นั้น อาจารย์โจ้ต้องการปูพื้น Basic Linux ให้ทุกคนได้เข้าใจ ก่อนอื่นเรามารู้จัก &lt;a href="https://en.wikipedia.org/wiki/Linux" rel="noopener noreferrer"&gt;Linux &lt;/a&gt; กันก่อนดีกว่า ว่าคืออะไรกันแน่ ???&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Linux&lt;/strong&gt; คือ ระบบปฏิบัติการ (&lt;a href="https://en.wikipedia.org/wiki/Operating_system" rel="noopener noreferrer"&gt;Operating System&lt;/a&gt; หรือ OS) ที่เปิดให้ทุกคนสามารถใช้ได้ฟรี (open source) ช่วยให้เราสามารถควบคุมและจัดการอุปกรณ์ฮาร์ดแวร์ต่างๆภายในเครื่องคอมพิวเตอร์ ไม่ว่าจะเป็น CPU, RAM, หรือ storage ผ่านซอฟต์แวร์หรือชุดคำสั่ง (Command)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;ซึ่งในส่วนของ &lt;a href="https://en.wikipedia.org/wiki/Command_(computing)" rel="noopener noreferrer"&gt;command&lt;/a&gt;นี้ จะทำหน้าที่ในการรับคำสั่งผ่าน &lt;a href="https://en.wikipedia.org/wiki/Command-line_interface" rel="noopener noreferrer"&gt;command line interface&lt;/a&gt; ยกตัวอย่าง เช่น &lt;a href="https://en.wikipedia.org/wiki/Shell_(computing)" rel="noopener noreferrer"&gt;shell&lt;/a&gt; เพื่อสั่งการให้ระบบปฏิบัติการทำงานต่อไป&lt;/p&gt;

&lt;p&gt;นี่คือตัวอย่างการรับคำสั่งผ่านสิ่งที่เรียกว่า command line interface ผ่านระบบปฏิบัติการ Window (รูปที่ 1) และ Linux (รูปที่ 2)&lt;/p&gt;

&lt;p&gt;รูปที่ 1 &lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6em8yxqsvjt6evu1eqq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy6em8yxqsvjt6evu1eqq.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;รูปที่ 2&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fda8wvyfjn67ys6og8ajh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fda8wvyfjn67ys6og8ajh.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ก่อนที่เราจะเข้าสู่การใช้งาน Linux โดยใช้ command line ข้างต้น จริง ๆ Linux นั้นมีสิ่งที่สำคัญที่เรียกว่า เป็นหัวใจสำหรับการทำงานของระบบ ที่มีส่วนทำให้เกิดการ interactive กับระบบ และส่งผลต่อการจัดการ หรือควบคุมฮาร์ดแวร์ภายใต้ระบบปฏิบัติการ ส่วนนั้นเรียกว่า &lt;strong&gt;"File system"&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;หัวใจของ Linux&lt;/strong&gt;&lt;br&gt;
เมื่อพูดถึง File system บน Linux ให้นึกถึงโครงสร้างของบริษัท ที่เป็นแบบ structure organization ตำแหน่งบนสุดนี้คือ Root Directory สัญลักษณ์อ้างอิงในระบบคือ &lt;code&gt;/&lt;/code&gt; (เครื่องหมายสแลช) ถัดมาเป็น Directory ย่อยๆ&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8q6rrferpxc8vtpx3o0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fg8q6rrferpxc8vtpx3o0.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อพูดถึงใน DOS และ Windows ระบบมีการเก็บ Directory ลงบนหลายๆ Partition ได้ ซึ่ง Partition ก็คือไดร์ฟที่เราเรียกกัน เช่น c:\ (Root ของไดร์ฟ C) และถ้ามี d:\ (Root ของไดร์ฟ D) ซึ่งแปลว่าในระบบ Dos/Windows มี Root ได้มากกว่า 1&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;แต่ลินุกไม่ได้เก็บแบบนั้น เพราะมันยอมให้มี Root ได้เพียงที่เดียวเท่านั้น ส่วน Partition อื่น หรืออุปกรณ์ต่อพ่วงอื่นๆ ที่จะนำมาใช้งานก็ต้องทำการ Mount เข้าระบบไปก่อน จึงจะสามารถใช้งานได้ ในการอ้างถึงแบบ Directory แทน&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;คราวนี้ เรามาดูประโยชน์ของ Directory สำคัญต่าง ๆ ที่มีเบื้องต้น ตั้งแต่เริ่มมีการติดตั้ง OS&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;/bin&lt;/code&gt; และ &lt;code&gt;/usr/bin&lt;/code&gt; — ใช้สำหรับเก็บ user command&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/boot&lt;/code&gt; — เป็นที่อยู่ของไฟล์ทั้งหมดที่ใช้ในการ boot เครื่อง&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/dev&lt;/code&gt; — เป็นที่อยู่ของไฟล์ที่ใช้ในการเข้าถึงฮาร์ดแวร์&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/etc&lt;/code&gt; — เป็นที่อยู่ของไฟล์ที่ใช้กำหนดค่าต่างๆ (Configuration files)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/home&lt;/code&gt; — เป็นที่อยู่ของไฟล์และ directory ที่เราต้องการจัดเก็บข้อมูล เช่น Documents, Videos, Music etc.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/root&lt;/code&gt; — เป็น home directory ของบัญชีผู้ใช้ที่เป็น superuser&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/run&lt;/code&gt; — เป็นที่อยู่ของข้อมูลที่เกี่ยวกับการบูท&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/sbin&lt;/code&gt; และ &lt;code&gt;/usr/sbin&lt;/code&gt; — ใช้สำหรับเก็บ system command&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/tmp&lt;/code&gt; — ใช้สำหรับเก็บไฟล์แบบชั่วคราว ไฟล์ที่มีอายุเกิน 10 วัน จะถูกลบโดยอัตโนมัติ&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/var&lt;/code&gt; — เป็นที่อยู่ของไฟล์และ directory ที่มีการเปลี่ยนแปลงอยู่เสมอ เช่น databases, log files, mails, cache directories, Web data etc.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ดังนั้น จากข้อมูลข้างต้น เราจะเห็นแล้วว่า File system เป็นหัวใจของการทำงานทั้งหมดในระบบปฏิบัติการ ในกรณีที่ File มีขนาดโตขึ้นมาก เกินกว่าระบบจะรองรับได้ นั่นก็มีส่วนที่จะทำให้ฮาร์ดแวร์ไม่สามารถรองรับการทำงานได้ไหว หรือมีประสิทธิภาพเช่นกัน&lt;/p&gt;

&lt;p&gt;จาก File system เรามาพูดถึง command line หรือชุดคำสั่งพื้นฐานที่เป็นประโยชน์ต่อการใช้งานในระบบปฏิบัติการ Linux กันบ้างดีกว่า สิ่งนี้เพื่อช่วยให้มือใหม่เข้าใจวิธีการในการส่งคำสั่งต่อระบบอย่างดียิ่งขึ้นอีกด้วย&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;คำสั่งพื้นฐานที่พบบ่อยในการใช้งาน&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;man&lt;/code&gt; (manual) — ใช้สำหรับแสดงคู่มือการใช้งานของแต่ละคำสั่ง&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24vyivo3ito3pknoaa9i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F24vyivo3ito3pknoaa9i.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbwy1zzovfzx2l1hdpkw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frbwy1zzovfzx2l1hdpkw.png" alt="Image description"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;pwd&lt;/code&gt; (print directory) — ใช้สำหรับแสดงที่อยู่ปัจจุบันว่า ตอนนี้เรากำลังอยู่ภายใต้ directory ไหนของระบบ&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxh8uyyky4eqqrqjh560.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwxh8uyyky4eqqrqjh560.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้ เราอยู่ภายใต้ root directory &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;ls&lt;/code&gt; (listing) — ใช้สำหรับแสดงไฟล์และ directory ทั้งหมด ที่อยู่ใน directory ปัจจุบัน&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahskn104hepq3dbvqvnm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fahskn104hepq3dbvqvnm.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จากภายใต้ root directory จะเห็นได้ว่ามีไฟล์ &lt;code&gt;original-ks.cfg&lt;/code&gt; ปรากฎอยู่&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cd&lt;/code&gt; (Change Directory) - ใช้สำหรับเปลี่ยนที่อยู่จาก directory ปัจจุบัน ไปยัง directory ที่ต้องการได้ ซึ่งตัว directory นี้จะมี parameter เบื้องต้นดังต่อไปนี้&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgu8g5n1n2dcy0he6780u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgu8g5n1n2dcy0he6780u.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;จะเห็นได้ว่า เรากำลัง change directory ไปที่ &lt;code&gt;/var/log&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd .&lt;/code&gt; ซึ่ง &lt;code&gt;.&lt;/code&gt; ในที่นี้หมายถึง directory ปัจจุบัน&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjm5mlckxvnmkgrwet7xc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjm5mlckxvnmkgrwet7xc.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อลองรัน &lt;code&gt;cd .&lt;/code&gt; เราจะยังอยู่ที่ &lt;code&gt;/var/log&lt;/code&gt; ดังเดิม &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ..&lt;/code&gt; ซึ่ง &lt;code&gt;..&lt;/code&gt; ในที่นี้หมายถึง directory ก่อนหน้า ของ directory ปัจจุบัน ซึ่งเป็นการถอย directory ลงไปอีกหนึ่งลำดับขั้น&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv0iuzhgilfkjylcpcyz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnv0iuzhgilfkjylcpcyz.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เมื่อเรารัน &lt;code&gt;cd ..&lt;/code&gt; นั่นคือเป็นการถอยจาก &lt;code&gt;/var/log&lt;/code&gt; ไปหนึ่งขั้น เราจะอยู่ที่ &lt;code&gt;/var&lt;/code&gt; ณ ปัจจุบัน &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd ~&lt;/code&gt; ซึ่ง &lt;code&gt;~&lt;/code&gt; ในที่นี้หมายถึง /home/ เพราะฉะนั้นไม่ว่าตอนนี้เราจะอยู่ใน directory ไหนก็ตาม พอรันคำสั่งนี้ มันจะกลับไปที่ Home ของ user&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gryh7t3fo2vpow58mx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3gryh7t3fo2vpow58mx2.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ตอนนี้ เรากลับไปที่ home ของ root directory เรียบร้อยแล้ว &lt;/p&gt;

&lt;p&gt;&lt;code&gt;cd /&lt;/code&gt; ซึ่ง &lt;code&gt;/&lt;/code&gt; ในที่นี้หมายถึง root directory นั่นหมายถึงการ change ไปยัง root directory นั่นเอง&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;mkdir &amp;lt;file_name&amp;gt;&lt;/code&gt; (make directory) — ใช้ในการสร้าง directory ใหม่&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakkq1bkxhd5xbj5hzbo5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fakkq1bkxhd5xbj5hzbo5.png" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;เราจะเห็นว่า จากตอนแรกภายใต้ root directory จะมีเพียงไฟล์หนึ่งไฟล์เมื่อทำการ make directory เราจะเห็น folder ใหม่เกิดขึ้นชื่อว่า "test" &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;cat &amp;lt;file_name&amp;gt;&lt;/code&gt; - ใช้เปิดดู detail ของ file นั้น ๆ ดังตัวอย่างด้านล่าง&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6p030apmkh6kyjao0yfi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6p030apmkh6kyjao0yfi.png" alt="Image description"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;ส่วนที่เหลือสามารถศึกษาต่อได้จาก &lt;a href="https://www.tutorialspoint.com/unix/unix-useful-commands.htm" rel="noopener noreferrer"&gt;UNIX command Tutorial&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Reference:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Slide ของ KubeSuperOps — Linux for Container Practitioner&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.tutorialspoint.com/unix/unix-useful-commands.htm" rel="noopener noreferrer"&gt;https://www.tutorialspoint.com/unix/unix-useful-commands.htm&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>linux</category>
      <category>katakoda</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Git สบายๆ สไตล์ Kakkai Academy 🐣 with Jumpbox</title>
      <dc:creator>Phisinee Sagulvanitchaporn</dc:creator>
      <pubDate>Sun, 23 Jan 2022 13:44:54 +0000</pubDate>
      <link>https://dev.to/jumpbox/git-sbaay-saitl-kubeops-academy-with-kubeops-skills-4fl7</link>
      <guid>https://dev.to/jumpbox/git-sbaay-saitl-kubeops-academy-with-kubeops-skills-4fl7</guid>
      <description>&lt;p&gt;สวัสดีชาว Thai community ทุกท่าน ห่างหายไปนานจากการเขียน blog และนอกจากนี้ยังห่างหายไปจากการเป็น technical guy อีกด้วย ได้เวลาก็กลับมาปัดฝุ่นสมองเชิง logic กันซะใหม่&lt;br&gt;
&lt;em&gt;จุดเริ่มต้น&lt;/em&gt; ของการปัดฝุ่นครั้งนี้ เกิดจากเพื่อนคนนึงเริ่มต้นโครงการดี ๆ ที่ชื่อว่า &lt;strong&gt;“Jumpbox (Kakkai) Academy”&lt;/strong&gt; นั่นเอง จึงสมัครไป และได้เข้าร่วม ขอบคุณที่ผ่านการคัดสรรจากคนจำนวนมาก&lt;br&gt;
สำหรับเนื้อหาใน topic นี้ เป็นเนื้อหาของการ pre-academy ก่อนเข้าสู่เนื้อหาจริง อาจารย์โจ้ได้ปูพื้นด้วย git strategy ซึ่งเป็นสิ่งที่ Developer or Engineer ควรจะรู้ไว้ เพราะมีประโยชน์ต่อการพัฒนา software เป็นอย่างมาก ดังนั้นอาจารย์โจ้ เลยอยากให้ทุกคนที่เรียนได้แชร์ไอเดีย ความรู้ ที่เป็นประโยชน์กลั่นกรองออกมาเป็นตัวหนังสือให้กับชาวไอทีไทย ถึงแม้มันจะเป็นเรื่องที่ดูง่าย ๆ สำหรับบางท่าน แต่สำหรับอีกหลายคน ก็ยังเป็นเรื่องที่ค่อนข้างใหม่มาก ๆ เลยทีเดียวค่ะ&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;เอ่ยมาก็นาน มาเข้าเรื่องกันว่า git นั้น สำคัญไฉน ???&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;อาจารย์โจ้เล่าว่า ก่อนหน้าที่เราจะมี git นั้น เมื่อเราพัฒนา software มาจนถึงขั้นตอนในการส่งมอบ software ให้กับทีม opearation เราเคยใช้วิธีการอย่างเช่น zip file package และใส่เลข version 1, 2, 3 โดยต้องแก้ไปเรื่อย ๆ เมื่อมีการเปลี่ยนแปลงถี่ ๆ เช่นการแก้ bug หรือ แก้ข้อมูลต่าง ๆ ภายในไฟล์นั้น ๆ ความยุ่งยากคือ ก่อนจะทำการแก้ version เราก็จำเป็นที่จะต้อง backup version ก่อนหน้า ไว้ร่วมด้วย วันดีคืนดี ถ้านักพัฒนาลืมไปว่า ต้อง backup แล้วมีความจำเป็นจะต้องกลับมาใช้ version เก่า ก็อาจจะส่งผลให้เกิดปัญหาในการทำงาน ทำให้ช้าขึ้น รวมถึง เมื่อมีการเปลี่ยนแปลงใด ๆ ที่เกิดขึ้นกับ package นั้น ๆ เราไม่สามารถติดตามเลยได้ว่า ใครเป็นคนทำอะไรไป ปัญหาเหล่านี้นี่แหละ ที่ทำให้นักพัฒนา software เล็งเห็นความสำคัญในการจัดการตัวไฟล์ทำให้เกิดที่มา ของสิ่งที่เรียกว่า &lt;strong&gt;“Version Control”&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Version Control คืออะไร ???
&lt;/h2&gt;

&lt;p&gt;Version Control คือเครื่องมือที่ช่วยในการจัดการไฟล์ หรือกลุ่มไฟล์ หรือ source code สามารถติดตามการเปลี่ยนแปลงที่เกิดขึ้นใน source code ได้ ประกอบไปด้วย&lt;br&gt;
เช็คการเปลี่ยนแปลง (change) ใน source code และเปรียบเทียบ (diff) ระหว่าง source code ชุดก่อนหน้า และชุดปัจจุบันว่าแตกต่างกันอย่างไร&lt;br&gt;
รวม code version จากนักพัฒนาแต่ละคน มาอยู่ศูนย์กลาง (merge)&lt;br&gt;
นักพัฒนาสามารถทราบถึงประวัติการเปลี่ยนแปลง (history change) และสามารถดึง source code กลับมาได้เมื่อ version ปัจจุบันเสียหาย&lt;br&gt;
สามารถทราบว่าใครเป็นผู้สร้างการเปลี่ยนแปลงใน source code&lt;br&gt;
Version Control มี 2 ประเภทด้วยกัน คือ&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;แบบ Traditional ซึ่งเรียกว่า “Centralized Version Control” หรือที่เรียกว่าแบบรวมศูนย์ ซึ่งทุกการเปลี่ยนแปลงจะถูกเก็บไว้บน Repository ที่รวบรวมไว้ที่ server กลาง เครื่องมือนั้นเรียกว่า Subversion (SVN)&lt;/li&gt;
&lt;li&gt;“Distributed Version Control” หรือที่เรียกว่าแบบกระจายศูนย์ โดย Repository สามารถเพิ่ม แก้ไข อัพเดท บนเครื่องตัวเองแม้ไม่มี Server หรือ Internet และเมื่อต้องการทำงานร่วมกันก็สามารถเชื่อมต่อไปยัง Server เพื่อทำงานร่วมกับทีมได้ Distributed Version Control System ที่นิยมใช้ประกอบด้วย Git, Mercurial เป็นต้น&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  มารู้จัก Git กันเถอะ !!!
&lt;/h2&gt;

&lt;p&gt;Git คือ เครื่องมือแบบ Open Source ที่ช่วยจัดการ version ของ source code ให้กับนักพัฒนา โดยจะเก็บประวัติว่าไฟล์แต่ละไฟล์ถูกสร้าง/ลบ/แก้ไขโดยใคร เมื่อไหร่ และอย่างไรเอาไว้ทั้งหมด ทำให้เราสามารถติดตามการเปลี่ยนแปลงของโค้ดได้ตลอด ตัวอย่างของเครื่องมือ แบบ Git มีหลายเจ้าด้วยคือ เช่น Github, Gitlab, Bitbucket เป็นต้น&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ลักษณะการทำงานของ Git (Lifecycle)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;เราเริ่มจากการสร้าง folder สำหรับเก็บไฟล์งานของโปรเจคต่าง ๆ ไว้ในเครื่องของเรา (Local)โดยที่ Git ยังไม่ได้มีการทำงานใด ๆ &lt;/li&gt;
&lt;li&gt;เมื่อเริ่มให้ Git เข้ามาทำงาน และเริ่มขบวนการตรวจสอบไฟล์ต่าง ๆ ที่ถูกเพิ่มเข้ามา หรือแก้ไข เช่น Add, New หรือ Clone Repository ถือว่าเป็นการ Init Working Directory&lt;/li&gt;
&lt;li&gt;เมื่อเราอนุญาติให้ Git ทำงาน หรือ Track ไฟล์ใน Working Directory เรียบร้อยแล้ว การที่เราแก้ไข หรือเพิ่มไฟล์เข้าไปใน Working Directory สถานะของไฟล์นั้น ๆ เปลี่ยนเป็น Staging Area&lt;/li&gt;
&lt;li&gt;ทุกครั้งที่เรา เพิ่ม หรือ แก้ไขไฟล์ และ Commit ข้อมูลการแก้ไขนั้น ๆ จะถูกเก็บไว้ใน Local Repository ก็คือภายในเครื่องของเราเองนี่แหล่ะ และพร้อมสำหรับการ Push หรือ การส่งขึ้นไปเก็บไว้บน Server เรียกว่า Local Repository&lt;/li&gt;
&lt;li&gt;หลังจากที่เราทำงานไปได้ซักพัก เราก็จัดการใช้คำสั่ง Push เพื่อนำการแก้ไขแต่ละเวอร์ชั่นทั้งหมด ขึ้นไปเก็บไฟล์บน Remote Server หลังจากการ commit ซึ่งสิ่งนั้นเรียกว่า Remote Repository&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;วิธีการดาวน์โหลด Git&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;สามารถเข้าไปดาวน์โหลดในเว็บไซต์ของ Git ได้เลย มีตัวติดตั้งให้ติดตั้งกันง่ายๆ โหลดไฟล์จากหน้าเว็บได้เลย &lt;a href="https://git-scm.com/downloads"&gt;git-download&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;คำสั่ง Git พื้นฐานและการใช้งาน&lt;/strong&gt;&lt;br&gt;
คำสั่งที่สำคัญสำหรับใช้งาน Git หลัก ๆ ประกอบไปด้วย 6คำสั่งด้วยกันคือ init, clone, add, commit, push และ pull&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;init :&lt;/strong&gt; คำสั่งที่ต้องการใช้งาน git บนโฟลเดอร์นั้น ๆ&lt;br&gt;
&lt;code&gt;cd workspace&lt;br&gt;
git init&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;clone :&lt;/strong&gt; เป็นการคัดลอกโปรเจคจำลองมาจากโปรเจคหลัก ซึ่งสามารถเปลี่ยนแปลงไฟล์ในโปรเจคจำลองนี้ได้โดยที่ไม่กระทบโปรเจคหลัก (ไฟล์จำลองที่เราทำการเปลี่ยนแปลงจะเรียกว่า local repository และไฟล์หลักที่อยู่คนละที่จะเรียกว่า remote repository)&lt;br&gt;
&lt;code&gt;git clone&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;add :&lt;/strong&gt; ใช้สำหรับเพิ่มไฟล์เข้าไปใน stage (เพื่อระบุว่าต้องการที่จะเปลี่ยนแปลงไฟล์ไหนใน git บ้าง)&lt;br&gt;
&lt;code&gt;git add &amp;lt;filename&amp;gt;&lt;br&gt;
git add .&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;commit :&lt;/strong&gt; เป็นคำสั่งที่ใช้ต่อจาก git add เพื่อยืนยันการเปลี่ยนแปลงไฟล์ที่ถูก add ลงใน stage ของ Remote Repository โดยสามารถใส่ option -m เพื่อ comment file&lt;br&gt;
&lt;code&gt;git commit -m “comment”&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;ควรใส่ comment file ตามหลักการของ &lt;a href="https://www.conventionalcommits.org/en/v1.0.0/"&gt;Commit Conventional&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;push :&lt;/strong&gt; เป็นการส่งไฟล์ที่ commit แล้วเข้าสู่ remote repository&lt;br&gt;
&lt;code&gt;git push&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;pull :&lt;/strong&gt; เป็นการดึงไฟล์ที่มีการเปลี่ยนแปลงใน remote มาเปลี่ยนแปลงใน local ซึ่งมาจากการใช้ &lt;code&gt;git fetch&lt;/code&gt; และตามด้วย &lt;code&gt;git merge&lt;/code&gt;&lt;br&gt;
&lt;code&gt;git pull&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;ข้อมูลอ้างอิง :&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.borntodev.com/2020/03/30/git-%E0%B8%9E%E0%B8%B7%E0%B9%89%E0%B8%99%E0%B8%90%E0%B8%B2%E0%B8%99%E0%B8%AA%E0%B8%B8%E0%B8%94%E0%B9%86/"&gt;https://www.borntodev.com/2020/03/30/git-%E0%B8%9E%E0%B8%B7%E0%B9%89%E0%B8%99%E0%B8%90%E0%B8%B2%E0%B8%99%E0%B8%AA%E0%B8%B8%E0%B8%94%E0%B9%86/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://devahoy.com/blog/2015/08/introduction-to-git-and-github/"&gt;https://devahoy.com/blog/2015/08/introduction-to-git-and-github/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.codebee.co.th/labs/git-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-git/"&gt;https://www.codebee.co.th/labs/git-%E0%B8%84%E0%B8%B7%E0%B8%AD%E0%B8%AD%E0%B8%B0%E0%B9%84%E0%B8%A3-%E0%B8%81%E0%B8%B2%E0%B8%A3%E0%B9%83%E0%B8%8A%E0%B9%89%E0%B8%87%E0%B8%B2%E0%B8%99-git/&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
