Planet TLWG

Syndicate content
Planet TLWG - http://linux.thai.net/planet
Updated: 30 min 8 sec ago

Thep: Long Time No Thanks

11 January, 2017 - 12:47

ผมร้างจากการเขียน blog ขอบคุณผู้สนับสนุนงานพัฒนาของผมไปเกือบหนึ่งปีเต็ม (นับจาก entry ล่าสุด อีกหนึ่งเดือนก็จะครบปี) รู้สึกผิดอยู่เหมือนกัน ถึงแม้จะได้อัปเดตหน้า ขอบคุณ มาเป็นระยะ แต่เวลาไม่เอื้ออำนวยให้เขียน blog สักเท่าไร และความพยายามเพิ่มเนื้อหาสาระใน blog ด้วยประเด็นที่น่าสนใจ ก็ทำให้ผัดวันเขียน blog ขอบคุณมาเรื่อย ๆ

อย่างไรก็ดี ผมก็ขอถือโอกาสนี้ ขอบคุณย้อนหลัง 11 เดือน สำหรับผู้ที่ได้ หย่อนสตางค์ลงหมวก เพื่อสนับสนุนงานพัฒนาซอฟต์แวร์เสรีของผม ดังนี้:

  • เดือนกุมภาพันธ์ 2559
    • คุณธนาธิป ศรีวิรุฬห์ชัย
    • ผู้ไม่แสดงตน 1 ท่าน
  • เดือนมีนาคม 2559
    • คุณธนาธิป ศรีวิรุฬห์ชัย
  • เดือนเมษายน 2559
    • คุณวิทยา ไตรสารวัฒนะ
    • คุณธนาธิป ศรีวิรุฬห์ชัย
  • เดือนพฤษภาคม 2559
    • คุณธนาธิป ศรีวิรุฬห์ชัย
  • เดือนมิถุนายน 2559
    • คุณวิทยา ไตรสารวัฒนะ
  • เดือนกรกฎาคม 2559
    • คุณธนาธิป ศรีวิรุฬห์ชัย
  • เดือนสิงหาคม 2559
    • คุณวิทยา ไตรสารวัฒนะ
  • เดือนกันยายน 2559
    • ผู้ไม่ประสงค์จะออกนาม
  • เดือนธันวาคม 2559
    • คุณวิทยา ไตรสารวัฒนะ

ขอขอบคุณสำหรับการสนับสนุนที่ผ่านมาของทุกท่านครับ ขอให้ทุกท่านมีความสุขความเจริญในหน้าที่การงาน มีสุขภาพแข็งแรง คิดสิ่งใดก็ขอให้สมความปรารถนานะครับ

ผมยอมรับว่าตั้งแต่แต่งงานมีครอบครัว ผมมีเวลาให้กับซอฟต์แวร์เสรีน้อยลง เนื่องจากมีภารกิจในบ้านที่ต้องดูแล และต้องเน้นงานที่สามารถเลี้ยงครอบครัวได้มากขึ้น แม้จะพยายามเจียดเวลาว่างมาทำงานซอฟต์แวร์เสรีอยู่ตลอดก็ตาม

ช่วงที่ผ่านมา งานซอฟต์แวร์เสรีของผมก็ยังอยู่ใน maintenance mode เช่นเคย โดยเป็นการดูแลโครงการต่าง ๆ ของ TLWG ซึ่งขณะนี้ได้ ย้าย ไปที่ GitHub แล้ว และ release รุ่นปรับปรุงออกมาเรื่อย ๆ ตามโอกาส ดังข่าวประกาศต่าง ๆ ที่เว็บ LTN ดังกล่าว พร้อมทั้งอัปโหลด แพกเกจ เข้า Debian ตามปกติ

ส่วนงานแปล ก็ยังคงอัปเดตคำแปลของ Xfce ใน development snapshot และตรวจทานคำแปลของ GNOME ตามที่โอกาสจะอำนวย ซึ่งก็เรียกได้ว่าไม่ได้ active เท่าเมื่อก่อน แต่ก็ยังไม่เลิกทำนะครับ

ส่วนชีวิตทั่วไป ตอนนี้ผมต้องศึกษางานสาขาอื่น เพื่อให้สามารถรับงานที่ generate income ได้มากกว่างานรองรับภาษาไทย เพื่อความอยู่รอดของครอบครัวครับ เรื่องที่ไม่เคยทำก็หัดเสียให้เป็น ก็พร้อมรับคำชี้แนะจากผู้รู้ และเปิดรับงานนอกสาขาเดิม ส่วนจะทำได้มากน้อยแค่ไหนก็ต้องพิจารณาศักยภาพของตัวเองเป็นกรณีไปครับ

Kitt: Yet another leap second added

1 January, 2017 - 08:23
235960 – 23:59:60 – the leap second added. UTC (based on solar mean)  – TAI (based on atomic clock) = -37 seconds Happy New Year 2017 UTC

bact: Hacking Team RCS กับการดู “ข้อมูลเข้ารหัส” โดยไม่ต้องถอดรหัส

27 December, 2016 - 09:42

(ต่อเนื่องจากโพสต์นี้และโพสต์นี้ในเฟซบุ๊ก)

แม้จะยังไม่แน่ชัดว่าอุปกรณ์ชื่อ “SSLX-GEO” และ “SSLX-T200” ที่ทางกลุ่ม “พลเมืองต่อต้าน Single Gateway” พบในระบบที่อ้างว่าเป็นของกองทัพบกนั้นคืออะไร และทางกองทัพบกก็ได้ปฏิเสธข้อมูลดังกล่าวแล้ว

แต่เมื่อปีที่แล้ว มีเอกสารอีกชุดใน Wikileaks เป็นอีเมลและเอกสารส่งสินค้าของบริษัท Hacking Team ที่ระบุว่ามีการส่งสินค้า ติดตั้ง และทดสอบระบบส่งโปรแกรมฝังตัวเพื่อเข้าควบคุมเครื่องปลายทางที่ชื่อ Remote Control System (RCS) Galileo ในประเทศไทย เมื่อเดือนพฤษภาคม 2558

—-

RCS ไม่ใช่อุปกรณ์หรือระบบถอดรหัสการสื่อสาร แต่ทำงานโดยไปฝังตัวที่เครื่องปลายทางเพื่อเข้าควบคุมเครื่อง จากนั้นก็สามารถอ่านข้อมูลที่เครื่องเป้าหมาย ก่อนข้อมูลจะถูกเข้ารหัสและส่งออกไป และหลังข้อมูลถูกส่งเข้ามาและได้รับการถอดรหัส (แอปสื่อสารเป็นผู้ถอดรหัสเอง แล้ว RCS ค่อยไปอ่าน)

พูดอีกอย่าง แม้ RCS จะไม่ได้ถอดรหัส แต่มันทำให้การเข้ารหัสหมดความหมาย

เมื่อ RCS เข้าควบคุมเครื่องได้แล้ว ก็แน่นอนว่าจะสามารถดูข้อมูลอื่นๆ ในเครื่องได้ด้วย ไม่เฉพาะข้อมูลการสื่อสาร

Citizen Lab พบหลักฐานว่าระบบนี้ถูกใช้ในหลายประเทศ เช่น อาเซอร์ไบจาน อียิปต์ เอธิโอเปีย ฮังการี อิตาลี คาซัคสถาน เกาหลี มาเลเซีย เม็กซิโก โอมาน ปานามา ซาอุดิอาระเบีย ซูดานอาหรับเอมิเรสต์ ตุรกี และประเทศไทย

—-

ข้อมูลคอมพิวเตอร์ในระบบเครือข่ายนั้น จำแนกได้เป็น 2 ประเภทใหญ่คือ

1) ข้อมูลที่อยู่นิ่งๆ ในเครื่อง หรือ ข้อมูล ณ จุดพัก (data at rest)

2) ข้อมูลที่วิ่งไปมาระหว่างเครื่อง 2 เครื่อง หรือ ข้อมูลระหว่างเดินทาง (data in transit)

—-

การเข้ารหัสการสื่อสารด้วย SSL (Secure Sockets Layer) หรือ TLS (Transport Layer Security) นั้นเป็นการเข้ารหัสข้อมูลประเภทที่ 2 (ข้อมูลระหว่างเดินทาง) เพื่อให้ข้อมูลที่ส่งจากปลายทางหนึ่งไปยังอีกปลายทางหนึ่งมีความปลอดภัย ไม่สามารถถูกดูได้โดยเครื่องที่ต้องผ่านระหว่างทาง (ระบบอินเทอร์เน็ตทำงานคล้ายระบบไปรษณีย์ในแง่ที่ว่ากว่าข้อมูลจะถึงจุดหมาย ต้องฝากส่งกันหลายต่อหลายทอด)

การถอดรหัสข้อมูลที่ส่งด้วย SSL/TLS นั้นเป็นเรื่องยากหากไม่มีกุญแจที่ใช้ส่งข้อมูลแต่ละครั้ง (และระบบทำงานปกติไม่มีรูรั่ว)

เมื่อการดักและถอดรหัสข้อมูลประเภทที่ 2 (ข้อมูลระหว่างเดินทาง) ทำได้ยาก อีกวิธีที่จะดูข้อมูลได้ก็คือ พุ่งเป้าไปยังข้อมูลประเภทที่ 1 (ข้อมูล ณ จุดพำนัก) แทน

—-

หาก “จุดพำนัก” ดังกล่าวสามารถระบุที่ตั้งได้ชัดเจน เป็นเครื่องในความครอบครองของบุคคลหรือหน่วยงานที่ติดต่อได้ การ “ขอ” ข้อมูลตรงๆ จากบุคคลหรือหน่วยงานดังกล่าว ก็เป็นเรื่องที่ทำได้ (ไม่ว่าจะถูกต้องตามกฎหมายหรือไม่ก็ตาม)

แต่ในกรณีที่ไม่ทราบว่าจุดพำนักข้อมูลชัดๆ ทราบแต่เพียงว่าเป็นของผู้ใช้บัญชีอีเมลหรือโซเชียลมีเดียอะไร หรืออยู่ในระบบเครือข่ายไหน ระบบ RCS จะสามารถช่วยได้ โดยการล่อให้เป้าหมายติดกับ (เช่น เปิดไฟล์แนบหรือคลิกลิงก์ที่มากับอีเมลหรือเว็บไซต์ล่อลวง) ติดตั้งโปรแกรมไปฝังตัวในเครื่อง ทำให้สามารถดูข้อมูลและสั่งการควบคุมเครื่องได้

—-

อ่านความสามารถส่วนหนึ่งของ RCS และรายละเอียดเกี่ยวกับอีเมลสอบถามและการติดตั้งทดสอบในประเทศไทยเมื่อพฤษภาคม 2558 — ระบบนี้อาจจะเกี่ยวหรือไม่เกี่ยวกับคำสั่งกระทรวงไอซีทีที่ 163/2557 ตั้งคณะทำงานทดสอบระบบเฝ้าติดตามออนไลน์ เมื่อ 15 ธ.ค. 2557

—-

ในแง่นี้ แม้ระบบ Remote Control System จะไม่ใช่ระบบที่ถอดรหัสข้อมูลการสื่อสาร แต่ก็เป็นระบบที่ทำให้การเข้ารหัสข้อมูลการสื่อสารระหว่างเครื่องไม่มีความหมายอีกต่อไป

และในกรณีข้อมูลการสื่อสารที่เป็นการสื่อสาร 2 ฝั่งนั้น แม้ปลายทางอีกฝั่งจะไม่ติดเชื้อ RCS แต่เนื่องจากข้อมูลการสื่อสาร (เช่นการแชต) นั้นมีการแลกเปลี่ยนรู้เท่ากันทั้ง 2 ฝั่ง ก็แปลว่าตัว RCS ก็จะรู้ข้อมูลการสื่อสารของอีกฝั่งได้ด้วย (เฉพาะที่มีการแลกเปลี่ยนกับเครื่องที่ติดเชื้อ)

มากไปกว่านั้น เนื่องจาก RCS สามารถควบคุมเครื่องเป้าหมายได้ มันจึงสามารถจับภาพหน้าจอ เปิดปิดกล้อง ไมค์ และเซ็นเซอร์อื่นๆ รวมไปถึงการติดตั้งโปรแกรมหรือข้อมูลอื่นๆ เพิ่มเติมลงในเครื่องได้ด้วย ไม่ใช่เพียงการดูข้อมูลอย่างเดียวเท่านั้น

—-

สิ่งที่พอจะสบายใจได้บ้าง (หรืออาจจะไม่ก็ได้นะ) ก็คือ

1) RCS นั้นจะต้องทำอย่างเจาะจงเป้าหมาย (ส่วนเป้าหมายจะมีได้กี่เป้าหมายนั้น ก็แล้วแต่ทรัพยากร)

2) RCS ฝังตัวที่เครื่องเป้าหมายโดยอาศัยรูรั่วของแอปและระบบปฏิบัติการ (exploits) ถ้าเราหมั่นอัปเดตระบบปฏิบัติการและแอปเสียหน่อย (ใครใช้ระบบรุ่นเก่าๆ ที่โดนผู้ผลิตลอยแพแล้วก็เสียใจด้วย) ไม่ติดตั้งแอปน่าสงสัย และใช้เน็ตอย่างระมัดระวัง ไม่คลิกลิงก์มั่ว ไม่เปิดไฟล์แนบแปลกๆ (RCS Agent สามารถติดมากับไฟล์เช่น PDF, PowerPoint, Word) ก็พอจะปลอดภัยระดับหนึ่ง

ภาพหน้าจอจากเอกสาร RCS Certificates Case Study (หน้า 1-5) ของ Hacking Team

<figure class="wp-caption aligncenter" id="attachment_3493" style="width: 1288px"><figcaption class="wp-caption-text">RCS Exploit Portal</figcaption></figure> คำถาม-ข้อกังวลที่ต้องตอบ

คำถามเร็วๆ ตอนนี้คือ 

1) ใครเป็นคนควบคุมระบบนี้? ใช้อำนาจตามกฎหมายใด?

2) กลไกอะไรจะตรวจสอบการใช้อำนาจจากระบบนี้ เป็นกลไกที่ทำงานได้จริงไหม?

3) ความสามารถของ RCS นี่มีมากกว่าดักข้อมูล มันควบคุมเครื่องเป้าหมายได้ เปิดปิดกล้องได้ จะดาวน์โหลดข้อมูลอะไรมาใส่เครื่องเป้าหมายก็ได้ ถ้ามีการขอหมายหรือคำสั่งศาล คำสั่งจะอนุญาตให้ทำอะไรได้บ้าง?

4) ในซอร์สโค้ดที่หลุดออกมา มีการตั้งชื่อไฟล์ปลอมๆ ที่บ่งถึงรูปโป๊เด็ก เช่น “childporn.avi” และ “pedoporno.mpg” ซึ่งแม้อาจจะเป็นเรื่องตลกในกลุ่มโปรแกรมเมอร์ของ Hacking Team แต่ก็ทำให้เราเห็นถึงความเป็นไปได้ในการ “สร้างพยานหลักฐาน” – เรื่องนี้น่าห่วงมากๆ

วิดีโอโฆษณาของ Hacking Team

<iframe allowfullscreen="true" class="youtube-player" height="402" src="https://www.youtube.com/embed/8oilhYYj8_g?version=3&amp;rel=1&amp;fs=1&amp;autohide=2&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" style="border:0;" type="text/html" width="660"></iframe>

วิดีโอสาธิต RCS Galileo บน Windows

<iframe allowfullscreen="true" class="youtube-player" height="402" src="https://www.youtube.com/embed/a1_6bVAUjRQ?version=3&amp;rel=1&amp;fs=1&amp;autohide=2&amp;showsearch=0&amp;showinfo=1&amp;iv_load_policy=1&amp;wmode=transparent" style="border:0;" type="text/html" width="660"></iframe>

Kitt: Ubuntu 16.10 Kernel 4.8.0 boot time

26 December, 2016 - 00:11
I don’t really know when, I suspect around 4.8.0-30 or a bit earlier that kernel boot time has noticeably increased. There is a bug/regression report on launchpad Quick fix ? Try 4.9 mainline ppa. Results from my systemd-analyze: 4.8.0-32 = 12.331s 4.9 = 5.041s

LookHin: การติดตั้งและใช้งาน Tor แบบ Expert Bundle และทำเป็น Service ของ Windows พร้อมทั้งเปลี่ยนเส้นทางทุก 1 นาที

25 December, 2016 - 11:07

จริงๆ ผมเคยเขียนเรื่องการใช้งาน Tor ไปแล้ว 2 ครั้ง มาดูอีกทีเป็นช่วงเดือนเดียกันนี้ด้วย คือเดือนธันวาคมปี 2013 “ติดตั้งและใช้งาน Tor + Provoxy เพื่ออำพรางตัว” และธันวาคมปี 2014 “ติดตั้งและใช้งาน Tor + Vidalia บน Linux Mint เมื่อ ธันวาคม 2014” ที่ผ่านมาผมติดตั้งและใช้งานผ่าน Vidalia มาตลอดเพราะใช้งานง่ายดี แต่ตอนนี้ทางโครงการเขาเอา Vidalia ออกแล้ว และเหลือให้เฉพาะ Tor Browser ซึ่งก็เป็น Tor รวม Firefox Browser มาด้วยนั้นหละ แต่แบบนี้มีคนสอนใช้งานเยอะแล้ว เดี๋ยวเราข้ามไปติดตั้งกันแบบ Expert Bundle และทำมันเป็น Service ของ Windows และปรับเปลี่ยนคอนฟิกนิดหน่อยเพื่อให้มันเปลี่ยนเส้นทางทุกๆ 1 นาที

อย่างแรกก็เข้าไปดาวน์โหลดโปรแกรมกันก่อน ให้เลือกโหลดตัว Expert Bundle นะครับ

https://www.torproject.org/download/download.html.en

เมื่อโหลดมาแล้วให้ทำการ unzip และเอาไฟล์ที่ได้ไปวางไว้ที่ c:\Tor\ (จริงๆ วางที่ไหนก็ได้นะตามสะดวก)

จากนั้นทำการสร้างคอนฟิกไฟล์ ชื่อ torrc ไว้ที่โฟลเดอร์ C:\Tor\Data\Tor\

โดยใส่คอนฟิกไป 1 ตัวคือ MaxCircuitDirtiness 60 ค่านี้คือสั่งให้เปลี่ยนเส้นทางใหม่ทุกๆ 60 วินาที ค่าปกติจะเป็น 10 นาที แต่อันนี้เราต้องการให้เปลี่ยนเร็วขึ้นหน่อย (หน่วยวินาที) (แต่ค่าปกติที่ผมใช้คือ 5 นาที)

1 MaxCircuitDirtiness 60

จากนั้นทำการรัน tor ให้เป็น Service ของ Windows โดยใช้คำสั่ง tor –service install –options -f “C:\Tor\Data\Tor\torrc” โดยให้เปิด Command Prompt และเลือกรันเป็น Administrator

จากนั้นสั่งเพิ่ม Service Tor เข้าไปในระบบ

1 2 cd c:\Tor\Tor tor --service install --options -f "C:\Tor\Data\Tor\torrc"

จากนั้นเข้าไปดูใน Service ของ Windows หน่อยหนึ่งว่ามี Tor Win32 Service ขึ้นมาแล้วหรือยัง เราสามารถสั่ง Stop และ Start service จากหน้านี้ก็ได้

หรือหากต้องการสั่ง Start และ Stop service ก็สามารถสั่งผ่านทาง command line ได้โดยใช้คำสั่งดังนี้ครับ

1 2 tor --service stop tor --service start

และหากต้องการลบ Service ของ Tor ออกจากระบบก็ให้ใช้คำสั่ง

1 tor --service remove

เท่านี้หละครับ เราติดตั้ง Tor แบบ Beginner Expert เรียบร้อยแล้ว ต่อไปถ้าจะให้โปรแกรมอื่นๆ เข้ามาใช้งาน Tor เราก็แค่ไปกำหนดให้โปรแกรมนั้นวิ่งมาใช้งาน Tor ผ่าน SOCKS5 ที่พอร์ต 9050 หรือหากโปรแกรมของคุณไม่สามารถใช้งาน proxy ผ่าน SOCKS5 ได้ ก็ให้ติดตั้ง Privoxy ให้ฟอร์เวิร์ดพอร์ตมาที่ HTTP อีกทีก็ได้ครับ ผมเคยเขียนวิธีไว้แล้วเมื่อปลายปี 2013 “ติดตั้งและใช้งาน Tor + Provoxy เพื่ออำพรางตัว

ขั้นต่อไปเรามาติดตั้ง Google Chrome plugin เพื่อเอาไว้สลับเส้นทางว่าเราจะใช้ Tor หรือว่าไม่ใช้ โดยผมเลือกใช้ plugin ตัวนี้นะครับ “Proxy SwitchyOmega” โดยเมื่อติดตั้งเสร็จแล้วจะมีไอคอนกลมๆ ขึ้นทางขวามือ ให้คลิกแล้วเลือกไปที่ Options

ให้คลิกเลือกไปที่ Profile :: proxy แล้วตั้งค่าตามนี้ และกดปุ่ม Apply changes ด้านซ้ายมือเป็นอันเรียบร้อย

1 2 3 Protocal = SOCKS5 Server = 127.0.0.1 Port = 9050

เวลาที่เราจะใช้งาน Tor ก็ให้คลิกไปที่รูปวงกลมทางขวาแล้วเลือกไปที่ proxy หรือถ้าหากต้องการกลับมาใช้แบบไม่ผ่าน Tor ก็คลิกเลือกไปที่ Direct

ทีนี้ก่อนจบ เราก็มาทดสอบดู IP ที่เราได้กันหน่อยว่ามันเปลี่ยนทุกๆ 1 นาทีจริงไหม โดยเปิดเข้าไปที่ https://check.torproject.org/ แล้วลองจับเวลาดูเองนะครับ ว่าทุกๆ 1 นาที เราได้ IP ใหม่มาหรือยัง ถ้าต้องการเปลี่ยนระยะเวลาก็เข้าไปแก้ไขที่ไฟล์ torrc แล้วเปลี่ยนเป็นค่าที่ต้องการแล้วสั่ง restart service ก็เรียบร้อย

ขอให้ทุกคนปลอดภัย

ข้อมูลอ้างอิง : https://www.torproject.org/docs/tor-manual.html.en

Sothorn: CentOS 7-1611

20 December, 2016 - 21:00

CentOS 7-1611 ออกมาเมื่อวันที่ 12 ธันวาคม 2559 ที่ผ่านมา พัฒนามาจาก Red Hat Enterprise Linux 7.3 ที่ออกมาเมื่อ เดือน พฤศจิกายน 2559  ซึ่งกลายเป็นเลขเวอร์ชันของ CentOS 7-1611

มีอะไรอัพเดทบ้าง

 

  • Since release 1503 (abrt>= 2.1.11-19.el7.centos.0.1) CentOS-7 can report bugs directly to bugs.centos.org. You can find information about that feature at this page.

  • Various new packages include among others: python-gssapi, python-netifaces, mod_auth_openidc, pidgin and Qt5.
  • Support for the 7th-generation Core i3, i5, and i7 Intel processors and I2C on 6th-generation Core Processors has been added.
  • Various packages have been rebased. Some of those are samba, squid, systemd, krb5, gcc-libraries, binutils, gfs-utils, libreoffice, GIMP,SELinux, firewalld, libreswan, tomcat and open-vm-tools.
  • SHA2 is now supported by OpenLDAP.
  • ECC-support has been added to OPenJDK-8, PerlNet:SSLeay and PerlIO::Socket::SSL.

  • Bluetooth LE is now supported.
  • virt-p2v is now fully supported. virt-v2v and virt-p2v add support for the latest windows releases.
  • Lots of updated storage, network and graphics drivers.
  • Technology Preview: Among others support of Btrfs, OverlayFS, CephFS, DNSSEC, kpatch, the Cisco VIC and usNIC kernel driver, nested virtualization with KVM and multi-threaded xz compression with rpm-builds.

รายการอัพเดททั้งหมด https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.3_Release_Notes/index.html

ความต้องการ RAM

  • 1024 MB สำหรับ การติดตั้ง CentOS 7-1611
  • 1280 MB สำหรับการติดตั้งแบบ LiveCD
  • 1344 MB สำหรับการติดตั้งแบบ LiveGNOME หรือ LiveKDE

หน้าตาตอนติดตั้ง

สำหรับขั้นตอนการติดตั้งโดยรวมก็ยังเหมือนกับเวอรชัน 1511

สำหรับการแบ่งพาร์ติชันให้ระวังหารแบ่งพาร์ติดชันแบบ Auto เพราะมันจะแบ่ง /home ไว้มากที่สุด

ส่วนการยอมรับ License ได้พัฒนาดีขึ้นกว่า 1511 เพราะ 1511 ต้องยอมรับ License แบบ Text

1611 ได้แก้ไขให้ยอมรับ License แบบกราฟิกแล้ว ง่ายขึ้นเยอะ

 

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Kitt: เรามาเป็นแอดมินได้ไง

9 December, 2016 - 09:17
tl;dr ไม่รู้เหมือนกัน 55+ ปี 3 วิชา Computer Networks สอน TCP/IP (อ.ยืน อ.เขมทัต อ.ปรีดา ม.เกษตร) ประกอบกับที่ภาคคอมคณะไรสักอย่างได้รับเครื่อง SUN SPARCStation 5 มาจากมูลนิธิ Hitachi เครื่องนี้ต่ออินเทอร์เน็ตผ่าน MODEM + leased line ไปที่ศูนย์คอมพิวเตอร์ ผมกับเพื่อนไม่กี่คนมี account บนเครื่องนี้ telnet จาก PC ไปหัดใช้คำสั่ง UNIX ใช้อินเทอร์เน็ตได้ (pine, talk, gopher, inn, irc (#thai #siam …)) .. ตอนนั้นเป็นของใหม่ ของแพง(มาก) มีโอกาสได้ใช้ก็ตื่นตาตื่นใจ ปี 4 เพื่อนคนนึงทำโปรเจคเกี่ยวกับอินเทอร์เน็ต ขอเครื่อง 486 มาลง BSD ได้แผ่นติดตั้ง … Continue reading เรามาเป็นแอดมินได้ไง →

Kitt: เรามาเขียนโค้ดได้ไง

8 December, 2016 - 03:10
ปี 2529 อยู่ ม.2 ไม่เคยเล่นเกม ไม่เคยใช้โปรแกรมสำเร็จรูป แตะคอมพิวเตอร์ครั้งแรกก็หัดโค้ดเลย มันคือเครื่อง VTech Laser 200 (https://en.wikipedia.org/wiki/VTech_Laser_200) ROM เป็น BASIC interpreter สมัยนั้นเรียกของพวกนี้ว่า home computer ก็ไม่แน่ใจว่าเครื่องนี้เป็นของใคร แต่มันวางอยู่ที่บ้านที่ไปอาศัยอยู่ช่วงนั้น หัดจากคู่มือของเครื่อง (ภาษาอังกฤษ) หนังสือตัวอย่างโปรแกรมที่แถมมา จนเขียน BASIC เป็น ม.ปลาย ที่โรงเรียนสอนภาษา Logo .. ช่วงนั้นมีเครื่อง PC ที่บ้านแล้ว รับจ้างเขียนโปรแกรม พิมพ์รายงาน ป.ตรี รับจ้างเขียน inventory ให้ รพ.ศรีนครินทร์ (Clipper/Netware) โปรเจคจบเขียน C/C++ เป็นโปรแกรมบน Windows ป.โท ระหว่างเรียนเขียน C, C++, CLIPS, LISP, Prolog, OCaml, Smalltalk, … Continue reading เรามาเขียนโค้ดได้ไง →

Kitt: €2.99/mo. Scaleway VC1S

6 December, 2016 - 16:22
Same tools, same OS as $5/month: DigitalOcean vs Vultr dd write bs=4k count=10k 100k 1M 403 398 184 MB/s dd read bs=4k 2.0 GB/s sysbench --test=cpu --cpu-max-prime=10000 run 17.9875 sec. stress-ng --cpu 1 --cpu-method all -t 30 94.22 ops/sec The disk performance is comparable to those of DO/Vultr. But, even equipped with 2 x 64-bit x86 processor, … Continue reading €2.99/mo. Scaleway VC1S →

Kitt: Password authentication must die .. soon.

5 December, 2016 - 16:32
Password authentication depends on user input. To make it safe, one of the requirement is that you need to do it safely and quickly enough and hope that nobody could catch what you type on the keyboard. Nowadays, we can’t hope such. With naked eyes, we can simply read gestures, types, presses most of people … Continue reading Password authentication must die .. soon. →

Kitt: AlphaGo and the future of AI.

5 December, 2016 - 16:32
The Go match between AI and pro is very interesting. I’m a fan of igo/weiqi/baduk. I used to play constantly, and was rated SDK (single-digit kyu). Also, as a computer scientist, Go is the only board game that the best human can defeat the best AI. Well, not anymore. AlphaGo, with deep/machine learning, was well-trained, and … Continue reading AlphaGo and the future of AI. →

Kitt: Graylog Extractor for Fortigate Firewall

5 December, 2016 - 16:32
I’ve been using Graylog in production for awhile. It’s a great log analysis tool, backed by elasticsearch. Conceptually, graylog is pretty much like splunk. I consolidate approximately 170-200 million log messages to graylog everyday. So, I need to optimize them well enough. Few days ago, I started to use Fortigate extractors from a git repo. It … Continue reading Graylog Extractor for Fortigate Firewall →

Kitt: ceph

5 December, 2016 - 16:16
วันนี้ ceph เดี้ยง สืบพบว่ามาจาก monitor node 2 ใน 3 ตัว ..  ทั้งสองตัว เป็น VM connect ได้ daemon running  แต่ disk ของตัว host เป็น read-only .. พอ monitor พยายามบันทึกข้อมูลลง disk ไม่ได้มันก็ค้าง พอ monitor ค้าง ceph cluster ทั้งก้อนหยุดทำงาน ได้ใช้ท่า troubleshooting: stop monitor / dump monmap / ลบ monitor node ที่ใช้งานไม่ได้ออกไปจาก monmap / inject monmap ตัวใหม่เข้า monitor node ที่ใช้งานได้ restart monitor … Continue reading ceph →

Kitt: do-release-upgrade and PHP7

5 December, 2016 - 16:16
16.04.1 ออกมาได้ประมาณหนึ่งสัปดาห์ 14.04 ก็เริ่มจะ upgrade กันได้ วันนี้สั่ง do-release-upgrade เรียบร้อยดี ลง PHP7 เพิ่ม / เอา PHP5 ออก / แก้ไข socket path = เว็บกลับมาปกติ ง่ายเกินไปนะ :P

Kitt: $5/month: DigitalOcean vs Vultr

5 December, 2016 - 14:44
Tools: dd, sysbench, stress-ng. I know,  you’d say they are NOT benchmark tools. I don’t care, I just need quick tests. Here we go: dd write bs=4k count=10k 100k 1M do: 350 465 424 MB/s vultr: 699 538 466 MB/s dd read bs=4k do: 475 MB/s vultr: 2.7 GB/s sysbench --test=cpu --cpu-max-prime=10000 run do:  14.2562 … Continue reading $5/month: DigitalOcean vs Vultr →

Sothorn: [docker] MariaDB Container ตอนที่ 4/4 ทดลองใช้งาน

3 December, 2016 - 19:26

ในการสร้าง container มันก็จะมี IP Address ประจำ container นั้นๆ  แต่ถ้าหากเราต้องการจะกำหนดหมายเลข IP Address เอง

[root@docker-test ~]# docker network create --subnet=192.168.100.0/24 mynetwork 8872bf61c8e3da662ce2a59ac77b8ac577e6385bb3409e8ca9014730affb1407 [root@docker-test ~]# docker network ls NETWORK ID NAME DRIVER SCOPE d3553315e0f1 bridge bridge local f89c7eb98e06 host host local 8872bf61c8e3 mynetwork bridge local cca15c2e9e34 none null local

สร้าง MariaDB Container โดยที่กำหนด IP Adress ไปด้วย

[root@docker-test ~]# docker run --name mariadb-01 -v /data/mysql:/var/lib/mysql -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 --net mynetwork --ip 192.168.100.201 -d mariadb:10.1 df7fe01b9769240d6f21fcac2ca2e069d8f42f52658f92161338bb621d635456

ตรวจสอบ IP Address

[root@docker-test ~]# docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' mariadb-01 192.168.100.201 [root@docker-test ~]# ping 192.168.100.201 PING 192.168.100.201 (192.168.100.201) 56(84) bytes of data. 64 bytes from 192.168.100.201: icmp_seq=1 ttl=64 time=0.278 ms 64 bytes from 192.168.100.201: icmp_seq=2 ttl=64 time=0.414 ms

nmap ดูว่า เปิด port อะไรอยู่บ้าง

[root@docker-test ~]# nmap 192.168.100.201 Starting Nmap 6.40 ( http://nmap.org ) at 2016-12-03 14:03 ICT Nmap scan report for 192.168.100.201 Host is up (0.000032s latency). Not shown: 999 closed ports PORT STATE SERVICE 3306/tcp open mysql MAC Address: 02:42:C0:A8:0A:C9 (Unknown) Nmap done: 1 IP address (1 host up) scanned in 0.40 seconds

grant สิทธิให้ user sothorn

[root@docker-test ~]# docker exec -it mariadb-01 bash root@df7fe01b9769:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql-docker1> GRANT ALL PRIVILEGES ON *.* TO sothorn@"%" IDENTIFIED BY '12345678' WITH GRANT OPTION; Query OK, 0 rows affected (0.00 sec) mysql-docker1> flush privileges; Query OK, 0 rows affected (0.00 sec)

ทดลองเข้าใช้งานด้วย user sothorn

[root@docker-test ~]# mysql -u sothorn -h 192.168.100.201 -p12345678 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 5 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 3/4 ระบุที่เก็บ Data

3 December, 2016 - 08:32

โดยปกติ MariaDB จะเก็บข้อมูลไว้ที่ /var/lib/mysql ถ้าเราสร้าง MariaDB container โดยไม่ระบุที่เก็บข้อมูล ข้อมูลก็จะถูกเก็บไว้ในโครงสร้างไดเรกทอดีของ Docker อยูใน /var/lib/docker/volumes  แต่ถ้าเราต้องการเก็บข้อมูลเอาไว้นอกโครงสร้างไดเรกทอรีของ Docker ก็ทำได้เช่นกัน โดยที่ในขั้นตอนการสร้าง container ก็ให้ระบุ option -v

ตัวอย่างคำสั่ง

docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

ผมได้สร้างไดเรกทอรี mysql ไว้ใน /data  ซึ่งจะใช้เป็นที่เก็บข้อมูล

[root@docker-test ~]# cd /data/ [root@docker-test data]# ls conf.d mysql [root@docker-test data]# cd mysql/ [root@docker-test mysql]# ls [root@docker-test mysql]# pwd /data/mysql

สร้าง Container

[root@docker-test mysql]# docker run --name mariadb10.1_data -v /data/mysql:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 cfa3f3be0e2db85ff4c277ad3385ee76c747cd9baf668951cff5bab591e15f79 [root@docker-test mysql]# docker exec -it mariadb10.1_data bash root@cfa3f3be0e2d:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

แล้วมันย้ายที่เก็บข้อมูลจริงหรือเปล่า

[root@docker-test mysql]# pwd /data/mysql [root@docker-test mysql]# ls -l total 110640 -rw-rw---- 1 systemd-bus-proxy input 16384 Dec 3 08:17 aria_log.00000001 -rw-rw---- 1 systemd-bus-proxy input 52 Dec 3 08:17 aria_log_control -rw-rw---- 1 systemd-bus-proxy input 12582912 Dec 3 08:17 ibdata1 -rw-rw---- 1 systemd-bus-proxy input 50331648 Dec 3 08:17 ib_logfile0 -rw-rw---- 1 systemd-bus-proxy input 50331648 Dec 3 08:17 ib_logfile1 -rw-rw---- 1 systemd-bus-proxy input 0 Dec 3 08:17 multi-master.info drwx------ 2 systemd-bus-proxy input 4096 Dec 3 08:17 mysql drwx------ 2 systemd-bus-proxy input 19 Dec 3 08:17 performance_schema -rw-rw---- 1 systemd-bus-proxy input 24576 Dec 3 08:17 tc.log

กรณีที่ต้องการใช้ my.cnf และระบุที่เก็บข้อมูล ก็ใช้ option -v 2 ครั้ง

[root@docker-test mysql]# docker run --name mariadb10.1_data2 -v /data/mysql2:/var/lib/mysql -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 7bd2d705324fcebc34e252d81d6314e9ad1bf0aa801e5dd437bac4d8a0504258

-v /data/conf.d:/etc/mysql/conf.d  ให้อ่าน my.cnf

-v  /data/mysql2:/var/lib/mysql  ระบุที่เก็บข้อมูลที่ /data/mysql2

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 2/4 ใช้งาน my.cnf

2 December, 2016 - 20:38

ในตอนที่แล้วผมนำเสนอการสร้าง container ของ MariaDB โดยที่ สตาร์ทขึ้นมาโดยไม่มี my.cnf ก็เหมือนกับ ซื้อรถมาแล้วไม่ได้แต่ง ซึ่งทำให้ไม่สามารถใช้งาน MariaDB ได้เต็มประสิทธิภาพ หรือใช้งานได้แต่ไม่สมบูรณ์แบบ สำหรับตอนนี้มาดูกันครับถ้าเรามี my.cnf อยู่แล้ว เราจะให้ MariaDB container นำ my.cnf นั้นไปใช้งานได้อย่างไร มาดูกันครับ

ตัวอย่างคำสั่ง

docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag

ผมได้เอา my.cnf เอาไว้ที่ /data/conf.d

[root@docker-test conf.d]# pwd /data/my.cnf.d [root@docker-test conf.d]# ls my.cnf

[root@docker-test ~]# docker run --name mariadb10.1_custom -v /data/conf.d:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 09e241a351f83f1b0356d4aae5e8880b2e11ef5879955b50cc6d7092f289cc17 [root@docker-test ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 09e241a351f8 mariadb:10.1 "docker-entrypoint.sh" 15 seconds ago Up 11 seconds 3306/tcp mariadb10.1_custom

[root@docker-test my.cnf.d]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 3ffcb3a408c7 mariadb:10.1 "docker-entrypoint.sh" 48 seconds ago Up 44 seconds 3306/tcp maridb10.1_cnfcustom

เข้าใช้งาน container ผ่าย bash shell

[root@docker-test data]# docker exec -it mariadb10.1_custom bash root@ea9bce5b82d1:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 2 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql-docker1>

ก็จะสามารถทำให้ MariaDB container  ใช้งาน my.cnf ได้     แล้วรู้ได้ยังไงว่า mariadb container นี้ใช้งาน my.cnf นั้นแล้ว

ผมรู้ได้เพราะผมเขียนคำสั่งให้แสดง prompt ของ mariadb เอาไว้ใน my.cnf

[mysql] prompt=mysql-docker1> \ ## MySQL Prompt

เป็นอันว่าผ่านไปได้อีก 1 ด่าน สามารถทำให้  mariadb container อ่าน my.cnf ได้  แต่มีข้อแม้ว่า ต้องเป็น my.cnf ที่ใช้กับ Linux Debian นะครับ เพราะ image ของ mariadb ตัวนี้ทำมาจาก Debian

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

Sothorn: [Docker] MariaDB Container ตอนที่ 1/4 ติดตั้งและสร้าง Container

2 December, 2016 - 09:12

อย่างที่บอกไปในตอนก่อนว่าเราสามารถค้นหา image ด้วยคำสั่ง doker search หรือเข้าไปค้นหาที่เว็บ https://hub.docker.com/ พอเราค้นเจอ image ที่ต้องการก็สามารถดาวน์โหลดได้ทันที โดยใช้คำสั่ง docker pull

ดาวน์โหลด image

[root@docker-test ~]# docker pull mariadb:10.1 10.1: Pulling from library/mariadb 386a066cd84a: Pull complete 827c8d62b332: Pull complete de135f87677c: Pull complete 05822f26ca6e: Pull complete ad65f56a251e: Pull complete d71752ae05f3: Downloading 87cb39e409d0: Downloading 8e300615ba09: Downloading 411bb8b40c58: Downloading [==> ] 3.243 MB/71.99 MB f38e00663fa6: Download complete 7b8e0ed6d4af: Download complete 9a599d94dc41: Download complete

ดาวน์โหลดเสร็จก็เป็นแบบนี้

[root@docker-test ~]# docker pull mariadb:10.1 10.1: Pulling from library/mariadb 386a066cd84a: Already exists 827c8d62b332: Pull complete de135f87677c: Pull complete 05822f26ca6e: Pull complete ad65f56a251e: Pull complete d71752ae05f3: Pull complete 87cb39e409d0: Pull complete 8e300615ba09: Pull complete 411bb8b40c58: Pull complete f38e00663fa6: Pull complete 7b8e0ed6d4af: Pull complete 9a599d94dc41: Pull complete Digest: sha256:3a2d01b31bc2a1b47b6bf9905bf017eac962d74a532d43ba4f12134698a32339 Status: Downloaded newer image for mariadb:10.1

ดูซิว่ามี image อะไรบ้าง

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mariadb 10.1 66498efd6bd8 2 weeks ago 389.9 MB debian latest 73e72bf822ca 2 weeks ago 123 MB hello-world latest c54a2cc56cbb 4 months ago 1.848 kB

ถ้าหากว่าอยากได้  MariaDB 5.5 มาติดตั้งด้วย ก็ไม่มีปัญครับ นี่คือข้อดีอีกอย่างของ Docker

[root@docker-test ~]# docker pull mariadb:5.5 5.5: Pulling from library/mariadb c952bb7239f0: Pull complete 8c770840981e: Pull complete 566b9b89ae5f: Pull complete ab998c5abe77: Pull complete 47fcf5f1b7ce: Pull complete cccca0ee7a1b: Pull complete f4c026c79d95: Pull complete a8765c07e57b: Pull complete 3d1c8c68764a: Pull complete 93fa2d5d15cd: Pull complete 6a508cfd9f12: Pull complete 439cb44d624a: Pull complete Digest: sha256:7cf460256450d74d5bacea87b79d8c4ae4b3cc9bda2bc2b4a5bb21d8a98927d8 Status: Downloaded newer image for mariadb:5.5

ดูว่ามี image อะไรบ้าง

[root@docker-test ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE mariadb 5.5 74d6cee58c6a 3 days ago 276.6 MB mariadb 10.1 66498efd6bd8 3 weeks ago 389.9 MB debian latest 73e72bf822ca 3 weeks ago 123 MB hello-world latest c54a2cc56cbb 5 months ago 1.848 kB

เห็นมั๊ยครับว่าเราสามารถติดตั้ง MariaDB ทั้งเวอร์ชัน 10.1 และ  5.5 ไว้บนเครื่องเดียวกันได้

สร้าง Container

หลังจากที่เราดาวน์โหลด image มาแล้วนั้นเราก็ต้องสร้าง container ขึ้นมา ตามความเข้าใจของผมคือการรัน image ขึ้นมาภายใต้ option ต่างๆ นั่นเอง  เช่น ผมจะสร้าง Container ของ MariaDB ของ 10.1

[root@docker-test ~]# docker run --name mariadb01-10.1 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1[root@docker-test data]# docker run --name mariadb01-10.1 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:10.1 58fadbd9e36eba323c35ef84329ff653c43bfcffda43d817810790a5960eb63a

จากคำสั่ง มีความหมายว่า สร้าง container ชื่อ mariadb01-10.1 โดยมีรหัสผ่านการเข้าใช้งาน MariaDB คือ 123456 โดยสร้างจาก image MariaDB:10.1

ทดลองสร้าง container ของ MariaDB 5.5

[root@docker-test data]# docker run --name mariadb01-5.5 -e MYSQL_ROOT_PASSWORD=123456 -d mariadb:5.5 e04789f3cfa802668258e01f60b8690338f71ef4712e4d46fa514d34eabefc5a

จากคำสั่ง มีความหมายว่า สร้าง container ชื่อ mariadb01-5.5 โดยมีรหัสผ่านการเข้าใช้งาน MariaDB คือ 123456 โดยสร้างจาก image MariaDB:5.5

สร้าง continer มาแล้วจะดูยังไงล่ะว่ามี container อะไรรันอยู่บ้าง

[root@docker-test data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e04789f3cfa8 mariadb:5.5 "docker-entrypoint.sh" 2 minutes ago Up 2 minutes 3306/tcp mariadb01-5.5 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 6 minutes ago Up 5 minutes 3306/tcp mariadb01-10.1

ใช้งาน container

ณ ตอนนี้แสดงว่า container ของเรากำลังรันอยู่ หากเราต้องการหยุดการทำงานของ container ที่เราสร้างมา

[root@docker-test data]# docker stop mariadb01-5.5 mariadb01-5.5 [root@docker-test data]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 10 minutes ago Up 10 minutes 3306/tcp mariadb01-10.1 [root@docker-test data]#

จะเห็นว่าเมื่อเรา stop container  mariadb01-5.5 เมื่อสั่ง docker ps ก็จะมีแต่ container mariadb01-10.1

คำสั่งอื่นๆ

  • docker start  ชื่อ  container
  • docker stop ชื่อ  container
  • docker restart ชื่อ  container
  • docker kill ชื่อ container

แล้วถ้าเกิดว่าเราได้ stop container ไปหมด แล้วจำชื่อ container ที่เราสร้างขึ้นมาไม่ได้ ต้องสั่งยังไง

[root@docker-test data]# docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES e04789f3cfa8 mariadb:5.5 "docker-entrypoint.sh" 15 minutes ago Exited (0) 8 minutes ago mariadb01-5.5 58fadbd9e36e mariadb:10.1 "docker-entrypoint.sh" 19 minutes ago Exited (0) About a minute ago mariadb01-10.1 91aba2519f8c debian "nsenter -t 1 -m -u -" 9 days ago Exited (0) 9 days ago high_dijkstra 05dac5d3cd72 hello-world "/hello" 9 days ago Exited (0) 9 days ago cocky_tesla

สร้าง container ขึ้นมาแล้ว ลองเล่นดูหน่อย

[root@docker-test data]# docker exec -it mariadb01-10.1 bash root@58fadbd9e36e:/# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO) root@58fadbd9e36e:/# mysql -u root -p123456 Welcome to the MariaDB monitor. Commands end with ; or \g. Your MariaDB connection id is 3 Server version: 10.1.19-MariaDB-1~jessie mariadb.org binary distribution Copyright (c) 2000, 2016, Oracle, MariaDB Corporation Ab and others. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. MariaDB [(none)]>

 

ลบ container

ถ้าสร้าง container ขึ้นมาแล้ว อยากจะลบทิ้งก็ใช้คำสั่ง docker rm ตามด้วยชื่อ container ที่ต้องการลบ

[root@docker-test data]# docker rm -v mariadb01-10.1

*** docker rm -v จะลบข้อมูลที่ mariadb สร้างขึ้นมาด้วย

สำหรับเรื่อง MaiaDB container ตอนนี้ขอจบแค่นี้ก่อน จะเห็นว่าเป็นการสร้าง  MariaDB container ที่ไม่มี my.cnf ซึ่งในการใช้งานจริงๆ คงไม่เหมาะสม ในตอนต่อไปจะมาพูดถึงการ สร้าง MariaDB container ที่เรียกใช้ my.cnf และระบุ ตำแหน่งที่เก็บข้อมูลของ MariaDB โปรดติดตามตอนต่อไปครับ

อ้างอิง

<script>window.twttr=(function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],t=window.twttr||{};if(d.getElementById(id))return t;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);t._e=[];t.ready=function(f){t._e.push(f);};return t;}(document,"script","twitter-wjs"));</script>

bact: ปลาดาวออฟฟิศ

28 November, 2016 - 11:48

วันนี้พี่นุสรณ์โพสต์ ขอเก็บไว้หน่อย 14 ปีละ

ตอนนั้นนอกจากทำ spec ทำ test case ตรวจคำแปล UI ก็ยังเขียนเอกสารด้วย โชคดีมีคนเก็บไว้บ้าง วันนี้ลองกูเกิล “Pladao Office” ก็เจอ

ข้อมูลทั่วไป
http://ftp.ji-net.com/pladao/2.0/readme.html

ขั้นตอนติดตั้ง
http://ftp.ji-net.com/pladao/2.0/install.html

ความสามารถภาษาไทย
http://ftp.ji-net.com/pladao/2.0/features.html

FAQ
http://ftp.ji-net.com/pladao/1.0/faq.txt

Credits
http://ftp.ji-net.com/pladao/2.0/credits.txt