ผู้เขียน หัวข้อ: เริ่มต้นใช้งาน Docker  (อ่าน 11360 ครั้ง)

ออฟไลน์ ผู้ดูแลระบบ

  • Administrator
  • Jr. Member
  • *****
  • กระทู้: 64
  • +0/-0
    • ดูรายละเอียด
เริ่มต้นใช้งาน Docker
« เมื่อ: กันยายน 18, 2017, 04:41:10 pm »
Step 1 - Running A Container
ค้นหา image ของ application ที่เราต้องการด้วยรูปแบบดังนี้
docker search <name>
<name> = ชื่อที่คุณต้องการค้นหาบน docker hub
เช่น

docker search redis

> Enter
 For example, to find an image for Redis

เมื่อต้องการ redis(ซึ่งเป็นฐานข้อมูล) ทำงาน ให้เราอยู่เบื้องหลัง เรียกการใช้งานในรูปแบบการใช้งานของ docker คือ
docker run <option> <image-name> โดยคำสั่งเริ่มต้นของ Docker เพื่อให้ image ทำงานเบื้องหลังต้องระบุตัวเลือก -d

docker run -d redis

การเรียกแบบนี้ docker จะนำ redis เวอร์ชั่นล่าสุดมาใช้งาน ถ้าเราจำเป็นต้องเลือก เวอร์ชั่นเฉพาะ ต้องเรียกโดยระบุเช่น

docker run -d redis:3.2
เป็นต้น

มาถึงตอนนี้เราได้ download  image application ที่ชื่อ redis ไว้ที่ Docker Host ของเราเรียบร้อยแล้ว

Step 2 - Finding Running Containers ค้นหา Containers ที่กำลังทำงานอยู่
เราใช้คำสั่งในรูปแบบนี้

docker ps

เมื่อเรา Enter จะพบว่า docker command จะแสดง Containers ที่กำลังทำงานอยู่ เห็น image ทั้งหมด
CONTAINER ID        IMAGE               COMMAND                   CREATED               STATUS                PORTS               NAMES
3855b28d10fa         redis                 "docker-entrypoint..."   12 minutes ago      Up 12 minutes       6379/tcp           zen_bose

คำสั่งนี้จะแสดงชื่อ และ id ของ containers ที่ทำงานอยู่
เช่นคำสั่ง docker inspect <friendly-name|container-id> จะให้รายละเอียดต่างๆของ container หรือ ip ที่ใช้ทำงานอยู่เป็นต้น
ตัวอย่างคำสั่ง

docker inspect zen_bose

คุณจะได้ output รายละเอียด container ต่างๆออกมา
คำสั่ง docker logs <friendly-name|container-id>  จะแสดงข้อความที่เก็บ log เขียนลงในข้อผิดพลาดมาตรฐาน หรือแสดงข้อผิดพลาดออกมา

Step 3 - Accessing Redis การเข้าถึง container Redis
เมื่อเราทราบแล้วเช่นว่า Redis ทำงานบน Porsts 6379 แต่เราจะเข้าถึงได้อย่างไรมาดูกัน
จริงแล้วเราใช้ option  -p เพื่อเชื่อต่อการเข้าถึงได้

-p <host-port>:<container-port>

ตัวอย่างการใช้จริง

docker run -d --name redisHostPort -p 6379:6379 redis:latest

Protip
ในค่าเริ่มต้นนั้น port ของ host จะถูก map เข้ากับ 0.0.0.0 ซึ่งหมายถึงที่อยู่ ip ทั้งหมดที่ host มีอยู่ คุณสามารถระบุ ip เฉพาะได้โดยรูปเช่น -p 127.0.0.1:6379:6379 เป็นต้น

Step 4 - Accessing Redis(ต่อ)
ปัญหาเกี่ยวกับการรันกระบวนการ fix port คือคุณสามารถรันได้เพียงหนึ่งอินสแตนซ์เท่านั้น ถ้าจะะใช้งาน Redis หลายอินสแตนซ์และกำหนดค่าแอพพลิเคชันขึ้นอยู่กับพอร์ต Redis ที่กำลังรันอยู่
แต่เราสามารถทำให้สุ่ม port การทำงานได้โดยรูปแบบ -p 6379 โดยไม่ต้อง map กับ containers ก็ได้ตัวอย่างเช่น

docker run -d --name redisDynamic -p 6379 redis:latest

ดูว่าทำงานบนport ไหนใช้คำสั่ง

docker port redisDynamic 6379

output
0.0.0.0:32768

docker ps

output
CONTAINER ID                IMAGE                  COMMAND                     CREATED                STATUS                 PORTS                            NAMES
927e584d6a65                 redis:latest           "docker-entrypoint..."      19 seconds ago         Up 17 seconds         0.0.0.0:32768->6379/tcp    redisDynamic
7d61c991b19e                redis:latest           "docker-entrypoint..."      9 minutes ago          Up 9 minutes           0.0.0.0:6379->6379/tcp    redisHostPort
3855b28d10fa                 redis                         "docker-entrypoint..."      39 minutes ago         Up 38 minutes         6379/tcp                         zen_bose
เปรียบเทียบดูเส้นทางการ map port แบบต่างๆ

Step 5 - Persisting Data ข้อมูลที่มีอยู่
หลังจากทำงานกับ Containers การลบและสร้างคอนเทนเนอร์ใหม่ และเมื่อต้องการใช้ซ้ำคอนเทนเนอร์เราอาจจะกังวลเกี่ยวกับข้อมูลของเรา
Containers ถูกออกแบบมาให้เป็นแบบ stateless จะใช้ตัวเลือก -v <host-dir>:<container-dir> ที่ ทำการ map host ของเรา กับ host ของ container ข้อมูลที่เรากระทำการใดๆบน Container host จะถูกเก็บไว้ใน diretory เครื่องเรา
เมื่อเราทำการupgrad หรือกระทำการใดๆบน docker host ก็จะไม่ไปทำลายข้อมูลที่มีอยู่
ทั้งนี้เราต้องศึกษาเอกสารเกี่ยวกับการเก็บข้อมูลของ application ต่างๆ ในตัวอย่างของเรานั้นพบว่า redis ข้อมูลต่างๆต้องเก็บไว้ยัง /opt/docker/data/redis
เราจึงต้องเรียกใช้แบบนี้

docker run -d --name redisMapped -v /opt/docker/data/redis:/data redis

Step 6 - Running A Container In The Foreground
ก่อนหน้านี้เราใช้ option -d ในการทำงาน docker แบบ background แต่ถ้าเราต้องการ interact กับ container(ตัวอย่างเช่นการ เข้าถึง bash shell)ใช้ option -it
เช่นเดียวกับการกำหนดว่าคอนเทนเนอร์ที่ทำงานในพื้นหลังหรือเบื้องหน้า บางอย่างช่วยให้คุณสามารถแทนที่คำสั่งที่ใช้ในการเปิด image ความสามารถในการแทนที่คำสั่งเริ่มต้นทำให้สามารถมี image
เดียวที่สามารถนำมาใช้ใหม่ได้หลายวิธี ตัวอย่างเช่น image Ubuntu สามารถเรียกใช้คำสั่ง OS หรือรันทับ bash โต้ตอบโดยใช้ / bin / bash

Example

docker run ubuntu ps จะเปิดคอนเทนเนอร์ของอูบุนตูและรันคำสั่ง ps เพื่อดูกระบวนการทั้งหมดที่ทำงานในคอนเทนเนอร์
docker run -it ubuntu bash  จะช่วยให้เราเห็นเปลือกของ container  ได้ (คำสั่งนี้จะทำให้เราเหมือนทำงานอยู่บน terminal ของ ubuntu)

« แก้ไขครั้งสุดท้าย: กันยายน 25, 2017, 09:49:09 am โดย ผู้ดูแลระบบ »