สําหรับบทความนี้จะมีเนื้อหาเกี่ยวกับ Docker Container นะครับ เราจะมาดู และทําความเข้าใจกันว่า Docker Container มันคืออะไร และเกี่ยวข้องกับ Docker Image อย่างไร

หลังจากที่เราสร้าง Docker Image ขึ้นมา และเราก็นํา Docker Image นั้นมารัน Docker Engine ก็จะทําการสร้าง Docker Container ขึ้นมาอยู่ในเครื่องเราพร้อมทั้ง Start Container นั้นด้วย เราสามารถที่จะสั่ง Start, Stop Container ได้ การที่เราสั่ง Start หรือ Stop Container Docker Container ก็ยังคงอยู่ในเครื่องเรา Container จะหายไปก็ต่อเมื่อเราสั่งลบมัน
สําหรับ Docker Container ให้เราจินาการว่ามันเป็นเครื่อง Server 1 เครื่อง ที่ถูกจําลองสภาพแวดล้อมขึ้นมาซึ่งภายในก็จะมีไฟล์ต่างๆที่ OS นั้นๆควรจะมี ไฟล์ต่างๆเหล่านี้จะเป็นไฟล์ที่อยู่ใน Container เท่านั้น จะไม่เกี่ยวข้องกับ Container อื่น หรือ ไฟล์ใน OS หลัก (OS ของ Server จริงๆ) ดังนั้นเมื่อไฟล์ หรือข้อมูลใน Container ใดๆ เกิดการเปลี่ยนแปลง จะไม่มีผลกับ Container อื่นๆ และก็จะไม่มีผลอะไรกับ OS หลักด้วย จากที่ผมบอกไปตอนต้นว่าไฟล์หรือข้อมูลต่างๆใน 1 Container จะไม่เกี่ยวข้องกับ OS หลัก แต่เราสามารถที่จะ Map path จากภายใน Container ออกมายัง path ของ OS หลักได้ ด้วย Data volumes ผมจะอธิบายในหัวข้อถัดไปครับ

Data volumes จะถูกสร้างขึ้นมา เมื่อ Container ถูกสร้างขึ้น และเราสามารถที่จะ add หรือ map path ของ OS หลัก เข้ากับ path ของ Container ได้ อาจจะถามว่า แล้วเราจะ map เพื่ออะไร จากที่ผมบอกไปตอนต้นว่า Container จะถูกส้รางเมื่อ เรารัน Docker Image และข้อมูลภายใน Container จะไม่เกี่ยวข้องกับภายนอกเลย เมื่อใดที่ Container ถูกลบ ข้อมูลที่อยุ่ภายในก็จะหายด้วย ดังนั้นเราจึงต้อง map path ออกมาข้างนอกเพื่อเก็บข้อมูลที่สําคัญๆ เช่นข้อมูลของ database ฯลฯ ส่วนวิธีการ map path และการ run Container ผมจะบอกในหัวข้อถัดไป
Container จะถูกสร้างหรือ ลบเมื่อไรก็ได้ไม่สําคัญ สิ่งที่สัาคัญคือ Image และข้อมูลต่างๆ ดังนั้นเราไม่ควรเก็บข้อมูลต่างๆไว้ใน Container เพราะเมื่อ Container เราถูกลบ ข้อมูลของเราจะหายไปด้วย
วิธีใช้คําสั่ง Run docker เพื่อสร้าง Container จาก Docker Image ใช้คําสั่งนี้
docker run <option> <image id/name> <command>
อธิบายการใช้งานคําสั่ง
ตัวอย่าง ถ้าผมต้องการจะ Run node image ผมจะใช้คําสั่งนี้
docker run -t -d --name test_run_node -p 3000:8080 -v /home/pi:/usr/src/app node
รายละเอียดของคําสั่ง
เมื่อใช้คําสั่งนี้ Docker จะหาว่าในเครื่องของเรามี Docker Image ที่เราระบุหรือป่าว ถ้าไม่มี Docker จะไปค้นหาและโหลด Docker Image จาก hub.docker.com แล้วเราก็จะได้ Container ที่ชื่อว่า test_run_node ขึ้นมา 1 อัน

การกําหนดค่าให้กัยตัวแปรด้วยโอเปอเรเตอร์ ถือเป็นการดําเนินการอีกรูปแบบหนึ่ง สําหรับการกําหนดค่า (Assignment Operator) มีอยุ่หลายชนิดดังนี้
BASE64 คืออะไรBASE64 คือ วิธีการเข้ารหัสข้อมูลรูปแบบหนึ่ง ที่จะเปลี่ยนข้อความ หรือข้อมูลต้นฉบับไปเป็นข้อความ หรือข้อมูลชุดใหม่ ที่ไม่สามารถอ่าน หรือรู้ว่าข้อมูลชุดนี้คืออะไร ซึ่งการเข้ารหัสชนิดนี้จะแทนที่ข้อมูลด้วยตัวอักษร 64 ตัว นั่นคือที่มาของ BASE64 ตามตารางImageวิธีการเข้ารหัส BASE64ยกตัวอย่างที่ต้องการเข้ารหัสข้อความนี้ "abcd" จะมีขั้นตอนคือ1.นําข้อมูลที่ต้องการเข้ารหัสมาแปลงเป็นเลขฐานสอง 8 bita = 01100001b = 01100010c = 01100011d = 011001002.นําเลขฐานสองที่ได้มาเรียงต่อกันตามลําดับดังนี้01100001 01100010 01100011 011001003.แบ่งเลขฐานสองออกเป็นชุด ชุดละ 6 bit กรณีที่ชุดสุดท้ายไม่ครบ ให้เติม 0 ไปจนครบ 6 bit จะได้ดังนี้01100001 01100010 01100011 01100100 00004. นําเลขฐานสองที่แบ่งไว้มาแปลงเป็นตัวอักษรตามตาราง BASE64 (ตามรูปด้านบน) โดยใน BASE64 จะนับ bit ที่ถูกเติมเข้าไปที่เป็น 00 แทนด้วย "="011000 = "Y"010110 = "W"001001 = "J"100011 = "j"011001 = "Z"000000 = "A=="** bit ที่ถูกเติมเข้าไปที่เป็น 00 แทนด้วย "=" 5.นําตัวอักษรมาเรียงต่อกันตามลําดับ YWJjZA==วิธีการถอดรหัส BASE64วิธีการถอดรหัส BASE64 ก็ไม่ยาก ทําย้อนกลับครับให้นําข้อมูลมาแปลงเป็นฐานสอง 6 bit มาเรียงต่อกันก่อน แล้วนํามาจัดกลุ่ม กลุ่มละ 8 bit โดย bit สุดท้ายที่เหลือไม่ครบ 8 bit ให้ตัดทิ้ง หลังจากนั้นก็แปลงเลขฐานสอง 8 bit แต่ละชุดเป็นข้อมูล ASCII เท่านี้ก็จะได้ข้อมูลต้นฉบับแล้วครับ
Pull up, Pull down คืออะไร?คือการต่อ ตัวต้านทานที่ขา input ของไมโครคอนโทลเลอร์ เหตุผลที่ต้องต่อคือ ถ้าเราต่อสวิตส์หรือ เซนเซอร์ต่างๆ เข้ากับไมโครคอนโทรเลอร์ตรงๆ อย่างเดียว อาจจะทำให้เกิดสัญญาณรบกวนได้ในกรณีที่ input ถูกลอยขาไว้ ไม่ได้จ่าย logic high หรือ low เช่น การต่อสวิตส์ ถ้าเรากดสวิตส์ จะทำให้มี logic high จ่ายให้กับ input ของไมโครคอนโทลเลอร์ แต่ถ้าเราปล่อยสวิตส์ ทำให้ ขา input ถูกลอยไว้ ไม่ได้ต่อลงกราวหรือ logic low ดังนั้นจึงต้องต่อ Pull up, Pull down เพื่อให้แน่ใจว่าเป็น logic high หรือ low เสมอ ถึงแม้ว่าจะไม่มี input ป้อนเข้ามา