à¹à¸à¹à¸à¸³à¸ªà¸²à¸¢à¹à¸à¸µà¸¢à¸555
สารบัญ:
- คำสั่งเรียกใช้นักเทียบท่า
- เรียกใช้คอนเทนเนอร์ในเบื้องหน้า
- เรียกใช้ Container ในโหมด Detached
- ลบคอนเทนเนอร์หลังจากออก
- ตั้งชื่อคอนเทนเนอร์
- การเผยแพร่คอนเทนเนอร์พอร์ต
- การแบ่งปันข้อมูล (ปริมาณการติดตั้ง)
- เรียกใช้คอนเทนเนอร์แบบโต้ตอบ
- ข้อสรุป
นักเทียบท่าเป็นแพลตฟอร์มที่ช่วยให้คุณพัฒนาทดสอบและปรับใช้แอปพลิเคชั่นเป็นคอนเทนเนอร์แบบพกพาและแบบพอเพียงที่ทำงานได้ทุกที่
คำสั่ง
docker run
สร้างคอนเทนเนอร์จากอิมเมจที่กำหนดและสตาร์ทคอนเทนเนอร์โดยใช้คำสั่งที่กำหนด เป็นหนึ่งในคำสั่งแรกที่คุณควรทำความคุ้นเคยเมื่อเริ่มทำงานกับ Docker
เราจะใช้ภาพ Nginx อย่างเป็นทางการเพื่อแสดงวิธีต่างๆในการเรียกใช้คอนเทนเนอร์ Docker
คำสั่งเรียกใช้นักเทียบท่า
คำสั่ง
docker run
ใช้แบบฟอร์มต่อไปนี้:
docker run IMAGE
ชื่อของอิมเมจที่ควรสร้างคอนเทนเนอร์เป็นอาร์กิวเมนต์ที่จำเป็นสำหรับคำสั่ง
docker run
เท่านั้น หากไม่มีอิมเมจในระบบโลคัลรูปภาพจะถูกดึงออกจากรีจิสตรี
หากไม่ได้ระบุคำสั่งคำสั่งที่ระบุในคำสั่ง
CMD
หรือคำสั่ง
ENTRYPOINT
จะถูกเรียกใช้งานเมื่อเรียกใช้คอนเทนเนอร์
เริ่มต้นจากเวอร์ชั่น 1.13 Docker CLI ได้รับการปรับโครงสร้างและคำสั่งทั้งหมดได้รับการจัดกลุ่มภายใต้วัตถุที่พวกเขาโต้ตอบด้วย
เนื่องจากคำสั่ง
run
โต้ตอบกับคอนเทนเนอร์ตอนนี้มันเป็นคำสั่งย่อยของ
docker container
ไวยากรณ์ของคำสั่งใหม่มีดังนี้:
docker container run IMAGE
ยังคงรองรับไวยากรณ์เก่าก่อน 1.13 ภายใต้ประทุนคำสั่ง
docker run
คือนามแฝงสำหรับ
docker container run
ผู้ใช้ควรใช้ไวยากรณ์คำสั่งใหม่
รายการตัวเลือกการ
docker container run
ของ
docker container run
ทั้งหมดสามารถพบได้ในหน้าเอกสารของนักเทียบท่า
เรียกใช้คอนเทนเนอร์ในเบื้องหน้า
โดยค่าเริ่มต้นเมื่อไม่มีตัวเลือกให้กับคำสั่ง
docker run
กระบวนการรูทจะเริ่มต้นในเบื้องหน้า ซึ่งหมายความว่าอินพุตมาตรฐานเอาต์พุตและข้อผิดพลาดจากกระบวนการรูทเชื่อมต่อกับเซสชันเทอร์มินัล
docker container run nginx
ผลลัพธ์ของกระบวนการ nginx จะปรากฏบนเทอร์มินัลของคุณ เนื่องจากไม่มีการเชื่อมต่อกับเว็บเซิร์ฟเวอร์เทอร์มินัลจึงว่างเปล่า
หากต้องการหยุดคอนเทนเนอร์ให้ยุติกระบวนการ Nginx ที่กำลังทำงานอยู่โดยกด
CTRL+C
เรียกใช้ Container ในโหมด Detached
เพื่อให้คอนเทนเนอร์ทำงานเมื่อคุณออกจากเซสชันเทอร์มินัลให้เริ่มในโหมดเดี่ยว สิ่งนี้คล้ายกับการรันกระบวนการ Linux ในพื้นหลัง
ใช้อ็อพชัน
-d
เพื่อเริ่มคอนเทนเนอร์ที่แยกออก:
docker container run -d nginx
050e72d8567a3ec1e66370350b0069ab5219614f9701f63fcf02e8c8689f04fa
คอนเทนเนอร์ที่แยกออกมาจะหยุดทำงานเมื่อกระบวนการรูตสิ้นสุดลง
คุณสามารถแสดงรายการคอนเทนเนอร์ที่รันอยู่โดยใช้
docker container ls
สั่ง
docker container ls
หากต้องการต่อเทอร์มินัลเข้ากับกระบวนการรูทคอนเทนเนอร์ที่แยกออกมาให้ใช้คำสั่ง
docker container attach
ลบคอนเทนเนอร์หลังจากออก
ตามค่าดีฟอลต์เมื่อคอนเทนเนอร์จบการทำงานระบบไฟล์จะยังคงอยู่บนระบบโฮสต์
ตัวเลือก
--rm
บอกให้
docker run
คำสั่งเพื่อลบคอนเทนเนอร์เมื่อออกโดยอัตโนมัติ:
docker container run --rm nginx
อิมเมจ Nginx อาจไม่ใช่ตัวอย่างที่ดีที่สุดในการล้างระบบไฟล์ของคอนเทนเนอร์หลังจากที่คอนเทนเนอร์จบการทำงาน ตัวเลือกนี้มักจะใช้กับคอนเทนเนอร์ด้านหน้าที่ทำงานระยะสั้นเช่นการทดสอบหรือการสำรองฐานข้อมูล
ตั้งชื่อคอนเทนเนอร์
ใน Docker แต่ละคอนเทนเนอร์จะถูกระบุด้วย
UUID
และชื่อ ตามค่าดีฟอลต์หากไม่ได้ตั้งค่าไว้อย่างชัดเจนชื่อของคอนเทนเนอร์จะถูกสร้างขึ้นโดยอัตโนมัติโดย Docker daemon
ใช้ตัวเลือก - ชื่อเพื่อกำหนดชื่อที่กำหนดเองให้กับคอนเทนเนอร์:
docker container run -d --name my_nginx nginx
ชื่อคอนเทนเนอร์ต้องไม่ซ้ำกัน หากคุณพยายามเริ่มคอนเทนเนอร์อื่นด้วยชื่อเดียวกันคุณจะได้รับข้อผิดพลาดคล้ายกับสิ่งนี้:
docker: Error response from daemon: Conflict. The container name "/my_nginx" is already in use by container "9…c". You have to remove (or rename) that container to be able to reuse that name.
เรียกใช้
docker container ls -a
เพื่อแสดงรายการคอนเทนเนอร์ทั้งหมดและดูชื่อ:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9d695c1f5ef4 nginx "nginx -g 'daemon of…" 36 seconds ago Up 35 seconds 80/tcp my_nginx
ชื่อที่สื่อความหมายมีประโยชน์ในการอ้างอิงคอนเทนเนอร์ภายในเครือข่าย Docker หรือเมื่อเรียกใช้คำสั่ง docker CLI
การเผยแพร่คอนเทนเนอร์พอร์ต
โดยค่าเริ่มต้นหากไม่มีการเผยแพร่พอร์ตกระบวนการที่ทำงานอยู่ในคอนเทนเนอร์จะสามารถเข้าถึงได้จากภายในคอนเทนเนอร์เท่านั้น
พอร์ตการเผยแพร่หมายถึงการแมปพอร์ตคอนเทนเนอร์ไปยังพอร์ตเครื่องโฮสต์เพื่อให้พอร์ตพร้อมใช้งานกับบริการภายนอก Docker
หากต้องการเผยแพร่พอร์ตให้ใช้ตัวเลือก
-p
ดังนี้:
-p host_ip:host_port:container_port/protocol
- หากไม่ได้ระบุ
host_ip
จะมีค่าเริ่มต้นเป็น0.0.0.0
หากไม่มีการระบุprotocol
จะใช้ค่าเริ่มต้นเป็น TCP หากต้องการเผยแพร่หลายพอร์ตให้ใช้หลายตัวเลือก-p
ในการแมป TCP พอร์ต 80 (nginx) ในคอนเทนเนอร์เข้ากับพอร์ต 8080 บนโฮสต์โฮสต์อินเตอร์เฟสคุณจะเรียกใช้:
docker container run --name web_server -d -p 8080:80 nginx
คุณสามารถตรวจสอบว่าพอร์ตถูกเผยแพร่โดยการเปิด
http://localhost:8080
ในเบราว์เซอร์ของคุณหรือเรียกใช้คำสั่ง
curl
ต่อไปนี้บนโฮสต์ Docker:
curl -I
ผลลัพธ์จะมีลักษณะดังนี้:
HTTP/1.1 200 OK Server: nginx/1.17.6 Date: Tue, 26 Nov 2019 22:55:59 GMT Content-Type: text/html Content-Length: 612 Last-Modified: Tue, 19 Nov 2019 12:50:08 GMT Connection: keep-alive ETag: "5dd3e500-264" Accept-Ranges: bytes
การแบ่งปันข้อมูล (ปริมาณการติดตั้ง)
เมื่อคอนเทนเนอร์หยุดทำงานข้อมูลทั้งหมดที่สร้างโดยคอนเทนเนอร์จะถูกลบออก ปริมาณ Docker เป็นวิธีที่ต้องการในการทำให้ข้อมูลคงอยู่และใช้ร่วมกันในหลาย ๆ คอนเทนเนอร์
ในการสร้างและจัดการปริมาณใช้ตัวเลือก
-p
ดังนี้:
-v host_src:container_dest:options
-
host_src
สามารถเป็นพา ธ สัมบูรณ์ไปยังไฟล์หรือไดเรกทอรีบนโฮสต์หรือไดรฟ์ข้อมูลที่กำหนดชื่อcontainer_dest
เป็นพา ธ สัมบูรณ์ไปยังไฟล์หรือไดเรกทอรีบนคอนเทนเนอร์ตัวเลือกสามารถเป็นrw
(อ่าน - เขียน) และro
(อ่านอย่างเดียว)) หากไม่มีการระบุตัวเลือกจะมีค่าเริ่มต้นเป็นrw
เพื่ออธิบายวิธีการทำงานให้สร้างไดเรกทอรีบนโฮสต์และวางไฟล์
index.html
ไว้ในนั้น:
mkdir public_html
echo "Testing Docker Volumes" > public_html/index.html
ถัดไปเมาท์ไดเร็กทอรี
public_html
ใน
/usr/share/nginx/html
ในคอนเทนเนอร์:
docker run --name web_server -d -p 8080:80 -v $(pwd)/public_html:/usr/share/nginx/html nginx
แทนที่จะระบุเส้นทางที่แน่นอนไปยังไดเรกทอรี
public_html
เรากำลังใช้คำสั่ง
$(pwd)
ซึ่งจะพิมพ์ไดเรกทอรีการทำงานปัจจุบัน
ตอนนี้ถ้าคุณพิมพ์
http://localhost:8080
ในเบราว์เซอร์ของคุณคุณควรเห็นเนื้อหาของไฟล์
index.html
คุณยังสามารถใช้
curl
:
curl
เรียกใช้คอนเทนเนอร์แบบโต้ตอบ
เมื่อจัดการกับกระบวนการโต้ตอบเช่น
bash
ให้ใช้ตัวเลือก
-i
และ
-t
เพื่อเริ่มต้นคอนเทนเนอร์
ตัวเลือก -it บอกนักเทียบท่าให้เก็บอินพุตมาตรฐานที่แนบมากับเทอร์มินัลและจัดสรรหลอก:
docker container run -it nginx /bin/bash
เชลล์ Bash ของคอนเทนเนอร์จะถูกแนบกับเทอร์มินัลและพรอมต์คำสั่งจะเปลี่ยน:
root@1da70f1937f5:/#
ตอนนี้คุณสามารถโต้ตอบกับเชลล์ของคอนเทนเนอร์และรันคำสั่งใด ๆ
ในตัวอย่างนี้เราได้จัดเตรียมคำสั่ง (
/bin/bash
) เป็นอาร์กิวเมนต์สำหรับคำสั่ง
docker run
ที่ถูกดำเนินการแทนคำสั่งที่ระบุใน Dockerfile
ข้อสรุป
นักเทียบท่าเป็นมาตรฐานสำหรับการบรรจุและปรับใช้แอปพลิเคชันและส่วนประกอบสำคัญของ CI / CD ระบบอัตโนมัติและ DevOps
คำสั่ง
docker container run
ใช้เพื่อสร้างและเรียกใช้คอนเทนเนอร์นักเทียบท่า