วันพฤหัสบดีที่ 22 ตุลาคม พ.ศ. 2558

Docker - Command & Dockerfile reference

Command

https://docs.docker.com/reference/run/

  • docker run [option...] <image> [command]
    • -p <external-port>:<container-port> - expose container port to host
    • -d - รัน container ไว้เบื้องหลัง (daemon)
    • --name <container-name> - ตั้งชื่อ container
    • -v <src>:<dest> - mount ไฟล์ที่ <src> ของ host กับ <dest> ของ container
    • --link <container>:<hostname>
    • -it - i=interactive, t=pseudo tty ใช้เมื่อต้องการทำงานแบบ interactive เช่นใช้ bash
      • eg. docker run hello-world - รัน image hello-world
      • docker run -it ubuntu /bin/bash - สร้าง container จาก image ubuntu แล้วรัน bash
      • docker run -d --name my-nginx -p 8000:80 nginx - สร้าง container ชื่อ my-nginx จาก image nginx แล้ว expose port 80 ของ container ไปยัง port 8000 ของเครื่อง host
  • docker ps [option]
    • docker ps - ดูรายการ container 
    • docker ps -a - ดูรายการ container ทุกรายการรวมถึง container ที่ stop อยู่
  • docker images [option] [repository]
    • docker images - ดูรายการ image ที่มี
  • docker pull <image>
    • docker pull nginx - โหลด image nginx ลงในเครื่อง
  • docker push <image>
    • docker push my-usernam/my-image - อัพโหลด image ไปยัง docker hub (registry)
  • docker build [option] <dockerfile-path>
    • docker build -t my-image . - สร้าง image จาก Dockerfile ในตำแหน่งปัจจุบัน แล้วตั้งชื่อ image ที่ได้ว่า myimage
  • docker stop <container> [container...]
    • docker stop my-laravel - หยุดการทำงานของ container my-laravel
  • docker start <container> [container...]
    • docker start my-laravel - ให้ container my-laravel ที่หยุด เริ่มทำงานอีกครั้ง
  • docker rm <container> [container...]
    • docker rm my-laravel - ลบ container my-laravel (ต้อง stop ก่อน)
  • docker rmi <image> [image...]
    • docker rmi laravel - ลบ image ชื่อ laravel ออก
  • docker inspect <container|image>
    • docker inspect laravel - (image) ดูรายละเอียดของ image laravel
    • docker inspect my-laravel - (container) ดูรายละเอียดของ container my-laravel
  • docker exec [option] <container>
    • docker exec -it my-nginx /bin/bash - เรียกใช้ bash จาก container my-nginx (ใส่ -it  เพื่อให้ใช้งานแบบ interactive ได้)

Dockerfile

https://docs.docker.com/reference/builder/

  • FROM <image>
    • ระบบุ base image ที่จะนำมาใช้ทำงาน
  • COPY <src> <dest>
  • ADD <src> <dest>
    • คัดลอกไฟล์จาก <src> ไปเก็บไว้ใน container ที่ <dest>
  • RUN <command>
    • คำสั่งที่ต้องการให้ทำในขณะที่กำลังสร้าง image ( จะสร้าง Layer ใหม่ )
  • CMD <command>
    • คำสั่งที่ต้องการให้รันเมื่อ image ถูกรัน สามารถถูกแทนที่ด้วย [command] จากคำสั่ง docker run ได้
  • ENTRYPOINT <command>
    • คำสั่งที่ต้องการให้รันเมื่อ image ถูกรัน
  • EXPOSE <port,...>
    • ระบบว่าจะ container นี้ใช้งาน port อะไรบ้าง

วันพุธที่ 21 ตุลาคม พ.ศ. 2558

Docker - เตรียมความพร้อม


เนื่องจาก Docker ทำงานบน Linux เท่านั้น จึงได้แบ่งวิธีการติดตั้งออกเป็น 2 กลุ่มคือ Non-Linux และ Linux
  1. Non-Linux
    • Windows User ให้ติดตั้ง Docker toolbox โดยทำตามนี้
    • Mac User ให้ติดตั้ง Docker toolbox โดยทำตามนี้ 
     ขั้นตอนโดยสรุปคือให้ติดตั้ง Docker toolbox แล้วทดสอบว่าใช้งานได้ไหม โดยใช้คำสั่ง ( ปัจจุบัน docker toolbox มีปัญหากับ Windows10 )
    docker run hello-world

    สำหรับผู้ที่ทำตามวิธีตามในลิงค์แล้วไม่สามารถใช้งานได้ให้ติดตั้ง  VirtualBox  version ใหม่ (>=5.0.8) หากยังใช้ docker toolbox ไม่ได้ ให้ Import image นี้ใส่เข้าไปใน VirtualBox


  2.  Linux
    • Linux User ให้ติดตั้ง Docker โดยทำตามนี้ (Debian based) สำหรับกรณีอื่นๆทำตามด้านล่าง
      • CentOS - yum install docker
      • ArchOS - pacman -S docker