วันนี้ได้ฤกษ์ก็เลยมาลองดูว่าถ้าอยากจะใช้ docker บน windows มันมีอะไรใหม่ๆ มาให้ลองบ้าง เพราะจากที่ได้เคยลองเล่น docker บน windows แรกๆ นั้นถือว่าลำบากพอสมควรเพราะต้องติดตั้ง VirtualBox สร้าง VM download หรือ download boot2docker มาใช้ และก่อนหน้านี้แป๊บนึงเราก็ไม่ต้องไปโหลด boot2docker มาทำเองแล้ว ให้ไปใช้ Docker Toolbox on Windows มาเลย
ตอนนี้เจ้า Docker Toolbox มันมีเครื่องมืออันใหม่แถมมาให้ด้วยคือ Kitematic เวอร์ชัน Alpha ให้ลองมาใช้งาน หน้าตาดีเลยแหล่ะ
แต่ว่าตอนที่ kitematic มันพยายามจะ setup นี่ลำบากเลย เพราะพยายามไป set virtualbox ให้ แล้วก็พยายามออก internet ซึ่งตอนที่ผมทดลองนั้น ถ้าอยากจะออกไป intenet มันต้องวิ่งผ่าน proxy ก่อนแล้วมันก็ไม่มีที่ให้ set เลย แล้วมันก็ไม่ไปอ่านค่า proxy จาก windows ด้วย
แม้ว่าใน github ของ docker https://github.com/docker/kitematic/issues/1031 มีวิธีการบอกอยู่ว่าให้เขียน script นี้มาเลย
create a windows batch script "C:\Program Files\Docker Toolbox\kitematic_proxy.cmd" and insert following script and replace "YOUR_PROXY" with the http://host:port of your proxy
-------------
set proxy=YOUR_PROXY
SET HTTP_PROXY=%proxy%
SET HTTPS_PROXY=%proxy%
for /f %%i in ('docker-machine.exe ip default') do set DOCKER_HOST=%%i
SET NO_PROXY=%DOCKER_HOST%
set DOCKER_HOST=tcp://%DOCKER_HOST%:2376
cd Kitematic
Kitematic.exe
-------------
คือถ้าดูตาม script ก็แค่ให้มี environment variable HTTP_PROXY HTTPS_PROXY น่านแหล่ะ แต่มันก็ดัน error นู่นนั่นนี่ จนต้องขอข้ามๆ เรื่องนี้ไป ให้มันวิ่งออก internet ตรงๆ
เมื่อเข้ามาได้แล้วเราอยากได้ container เอาไว้ทำอะไร ก็เลือกจิ้มกด create ได้เลย โดยที่เราสามารถเลือก Tag ได้ด้วย (ลองดูในรูปมีตัวที่เรากดเล่นไว้) แล้วก็กด create ได้เลย
เมื่อ run container เราก็สามารถดู log ของมันได้ด้วยเลยตรงนี้แหล่ะ
แล้วเราก็ยังสามารกำหนด setting ค่า parameter ต่างๆ ให้กับ container ได้ด้วย
โดยแล้วแล้วก็ถือว่าใช้งานง่ายดีสำหรับคนที่เพิ่งเริ่มต้น
แต่าจริงๆแล้ว docker cli มันก็ง่ายแล้วนะ … ไปใช้ cli เถอะ ถ้าต้องมานั่งซ่อมให้เจ้า kitematic ใช้งานได้ถ้าจะสร้าง container ได้นี่ก็ไม่ไหวเหมือนกันนะ
อ้อ เจออย่างนึง คือ ตอนที่จะ mount local folder ไปใหกับ volume ของ container นั่น kitematic มันบังคับว่าจะต้องอยู่ใน home directory เท่านั้น (มันเขียน error ไว้อย่างนี้จริงๆ นะ) ผมก็เลยต้อง config ตามรูปข้างบนคือเก็บไว้ใน home ของตัวเอง
ส่วนตอนใช้ command line ก็จะปัญหาอีกแบบคือเวลาเราจะ mount เราต้องระบุ pattren path บน windows ให้ถูกด้วย ยกตัวอย่างเช่น
docker.exe run -p 80:80 -v c:\Users\theerasak.m\web:/website_files hello-world-nginx
แบบนี้ไม่ได้
ที่ถูกต้องแบบนี้แบบนี้
docker.exe run -p 80:80 -v //c/Users/theerasak.m/web:/website_files hello-world-nginx
ถ้าจะให้ดี …. ไปใช้บน linux สบายกว่ากันเย๊อะเลย