Android

คำสั่งเรียกใช้นักเทียบท่าพร้อมกับตัวอย่าง

ไà¸à¹‰à¸„ำสายเกียน555

ไà¸à¹‰à¸„ำสายเกียน555

สารบัญ:

Anonim

นักเทียบท่าเป็นแพลตฟอร์มที่ช่วยให้คุณพัฒนาทดสอบและปรับใช้แอปพลิเคชั่นเป็นคอนเทนเนอร์แบบพกพาและแบบพอเพียงที่ทำงานได้ทุกที่

คำสั่ง 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

Testing Docker Volumes

เรียกใช้คอนเทนเนอร์แบบโต้ตอบ

เมื่อจัดการกับกระบวนการโต้ตอบเช่น 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 ใช้เพื่อสร้างและเรียกใช้คอนเทนเนอร์นักเทียบท่า

นักเทียบท่า