วิธีเรียกใช้อินสแตนซ์ Docker จาก Dockerfile

Withi Reiyk Chi Xin S Taen S Docker Cak Dockerfile



Docker เป็นแพลตฟอร์มแบบเปิดยอดนิยมที่ใช้กันทั่วไปในการสร้าง ทดสอบ ปรับใช้ และจัดส่งแอปพลิเคชันในสภาพแวดล้อมแบบคอนเทนเนอร์ Docker ใช้ระดับ OS ของการจำลองเสมือนและรองรับส่วนประกอบต่างๆ เช่น คอนเทนเนอร์ Docker รูปภาพ เครือข่าย และโวลุ่ม Docker

คอนเทนเนอร์ Docker เป็นหนึ่งในองค์ประกอบสำคัญของแพลตฟอร์ม Docker ที่ทำแพ็กเกจโปรแกรม การตั้งค่าการกำหนดค่า และการขึ้นต่อกันโดยใช้อิมเมจ Docker อิมเมจ Docker เป็นเทมเพลตหรือสแน็ปช็อตอย่างง่ายของคอนเทนเนอร์ที่แนะนำคอนเทนเนอร์เกี่ยวกับวิธีการบรรจุแอปพลิเคชัน รูปภาพเหล่านี้ส่วนใหญ่มีอยู่ในรีจิสตรีฮับ Docker อย่างเป็นทางการ ผู้ใช้ยังสามารถออกแบบอิมเมจเหล่านี้ตามความต้องการของโปรเจ็กต์โดยใช้ Dockerfile

บล็อกนี้จะอธิบาย:







Dockerfile คืออะไร?

Dockerfile เป็นไฟล์ข้อความปกติที่มีคำสั่งและคำแนะนำที่กำหนดโครงสร้างพื้นฐานของคอนเทนเนอร์ Docker คำแนะนำเหล่านี้สามารถดำเนินการได้ในเทอร์มินัลโดยไม่ต้องมีไฟล์ใด ๆ แต่การรันแต่ละคำสั่งทีละคำสั่งถือเป็นงานที่วุ่นวายและซับซ้อน Dockerfile ช่วยให้นักพัฒนาระบุข้อกำหนดและคำแนะนำทั้งหมดไว้ในไฟล์เดียวได้อย่างง่ายดาย ไฟล์นี้จะถูกนำมาใช้เพื่อสร้างเทมเพลตคอนเทนเนอร์ซึ่งเป็นอิมเมจนักเทียบท่า หลังจากนั้น อิมเมจนักเทียบท่าจะถูกดำเนินการเพื่อเริ่มต้นอินสแตนซ์ในคอนเทนเนอร์นักเทียบท่า



คำสั่งพื้นฐานของ Dockerfile

คำสั่งพื้นฐานบางคำสั่งของ Dockerfile ที่ใช้ในการกำหนดสแน็ปช็อตพื้นฐานของคอนเทนเนอร์จะแสดงรายการด้านล่างในรูปแบบตาราง:



คำสั่ง คำอธิบาย
จาก จาก ” ใช้เพื่อกำหนดอิมเมจพื้นฐานสำหรับเทมเพลตคอนเทนเนอร์ รูปภาพเหล่านี้ดึงมาจาก Docker Hub ของรีจิสทรี Docker อย่างเป็นทางการ
ผู้ดูแล ผู้ดูแล ” กำหนดข้อมูลผู้เขียน (ชื่อและอีเมล) ที่กำลังสร้างอิมเมจ Docker
WORKDIR ระบุไดเร็กทอรีการทำงานของแอปพลิเคชันคอนเทนเนอร์
สำเนา ใช้เพื่อคัดลอกไฟล์ต้นฉบับและการกำหนดค่าจากระบบโฮสต์ไปยังเส้นทางที่ระบุของคอนเทนเนอร์ Docker
เพิ่ม เพิ่ม ” คำสั่งจะคล้ายกับคำสั่ง “ สำเนา ” แต่ยังรองรับ URL ระยะไกลเพื่อเพิ่มไฟล์จาก URL ไปยังเส้นทางคอนเทนเนอร์ เช่น จากที่เก็บ GitHub ไปยังเส้นทางคอนเทนเนอร์
วิ่ง วิ่ง ” ใช้เพื่อรันคำสั่งในคอนเทนเนอร์ ใน Dockerfile ส่วนใหญ่จะใช้เพื่อจัดการและติดตั้งการพึ่งพาเพิ่มเติมภายในคอนเทนเนอร์
ซีเอ็มดี ซีเอ็มดี ” กำหนดจุดเริ่มต้นของคอนเทนเนอร์นักเทียบท่า โดยพื้นฐานแล้วจะกำหนดปฏิบัติการและพารามิเตอร์เริ่มต้นของ “ จุดเริ่มต้น '.
จุดเริ่มต้น จุดเริ่มต้น ” ยังใช้เพื่อตั้งค่าปฏิบัติการของคอนเทนเนอร์ Docker โดยพื้นฐานแล้วจะตั้งค่าแอปพลิเคชันเริ่มต้นที่ใช้ในคอนเทนเนอร์ทุกครั้ง คำสั่ง ENTRYPOINT ยังใช้ครั้งเดียวใน Dockerfile
ผู้ใช้ คำสั่งนี้ใช้เพื่อตั้งค่า UID (ชื่อผู้ใช้) เพื่อดำเนินการคำสั่งในคอนเทนเนอร์
ปริมาณ ปริมาณ ” คำสั่งใช้เพื่อผูกหรือเมานต์โวลุ่มภายนอก (ระบบไฟล์) ด้วยคอนเทนเนอร์
อีเอ็นวี อีเอ็นวี ” ใช้เพื่อตั้งค่าตัวแปรสภาพแวดล้อมของคอนเทนเนอร์
เออาร์จี เออาร์จี ” ใช้เพื่อส่งผ่านข้อโต้แย้งภายในคอนเทนเนอร์
เปิดเผย เปิดเผย ” คำสั่งระบุพอร์ตการเปิดเผยที่คอนเทนเนอร์จะถูกดำเนินการ
สร้างใหม่ โดยจะอ่านคำสั่งจากอิมเมจพื้นฐาน แต่ทริกเกอร์คำสั่งเหล่านี้ผ่านอิมเมจดาวน์สตรีม
ฉลาก ฉลาก ” ใช้เพื่อระบุข้อมูลเมตาของสแน็ปช็อตคอนเทนเนอร์

วิธีเรียกใช้อินสแตนซ์ Docker จาก Dockerfile ใน Docker

หากต้องการเรียกใช้อินสแตนซ์หรือคอนเทนเนอร์ Docker โดยใช้ Dockerfile ขั้นแรกให้สร้าง Dockerfile จากนั้นสร้างสแน็ปช็อตพื้นฐานสำหรับคอนเทนเนอร์โดยใช้ Dockerfile หลังจากนั้น ให้เรียกใช้สแน็ปช็อตเพื่อเริ่มอินสแตนซ์ Docker





ปฏิบัติตามคำแนะนำด้านล่างเพื่อดูภาพประกอบ

ขั้นตอนที่ 1: สร้าง Dockerfile

ขั้นแรก สร้าง Dockerfile โปรดจำไว้ว่า Dockerfile ไม่มีนามสกุลไฟล์ใดๆ หลังจากนั้นให้วางคำสั่งต่อไปนี้ลงในไฟล์:



จากโกลัง: 1.8

WORKDIR / ไป / src / แอป

คัดลอก main.go

RUN ไปสร้าง -โอ เว็บเซิร์ฟเวอร์ .

เปิดเผย 8080 : : 8080

จุดเริ่มต้น [ './เว็บเซิร์ฟเวอร์' ]

ขั้นตอนที่ 2: สร้างไฟล์โปรแกรม

จากนั้นสร้างไฟล์ใหม่ชื่อ “ main.go ” ที่มีโปรแกรม Golang อย่างง่าย เพื่อจุดประสงค์นี้ ให้วางโปรแกรมต่อไปนี้ลงในไฟล์:

แพ็คเกจหลัก
นำเข้า (
'เอฟเอ็มที'
'บันทึก'
'เน็ต/http'
)

ตัวจัดการฟังก์ชัน ( ใน http.ResponseWriter, r * http.คำขอ ) {
fmt.Fprintf ( ใน , 'สวัสดี! ยินดีต้อนรับสู่ LinuxHint Tutorial' )
}
ฟังก์ชั่นหลัก ( ) {
http.HandleFunc ( '/' , ผู้จัดการ )
เข้าสู่ระบบร้ายแรง ( http.ListenAndServe ( '0.0.0.0:8080' , ไม่มี ) )
}

ขั้นตอนที่ 3: สร้างภาพรวมคอนเทนเนอร์

ตอนนี้ สร้างสแน็ปช็อต Docker ของคอนเทนเนอร์โดยใช้ “ นักเทียบท่า build -t -f ”:

สร้างนักเทียบท่า -t ไป-img -ฉ ด็อคเกอร์ไฟล์.

ในคำสั่งข้างต้น “ -t ” ตัวเลือกตั้งชื่อหรือแท็กของรูปภาพ “ -ฉ ตัวเลือก ” ระบุเส้นทางไปยัง Dockerfile ที่เอ็นจิ้น Docker จำเป็นต้องอ่านบริบทการสร้าง:

หากต้องการตรวจสอบว่าสร้างรูปภาพสำเร็จหรือไม่ ให้รันคำสั่ง “ รูปภาพนักเทียบท่า <ชื่อรูปภาพ> ' สั่งการ:

ภาพนักเทียบท่า go-img

ผลลัพธ์แสดงให้เห็นว่าเราสร้างสแน็ปช็อตของคอนเทนเนอร์จาก Dockerfile สำเร็จแล้ว:

ขั้นตอนที่ 4: เรียกใช้สแนปชอตเพื่อเริ่มการทำงานของคอนเทนเนอร์

ตอนนี้ ให้เริ่มต้นอินสแตนซ์ของ Docker ในคอนเทนเนอร์ Docker โดยดำเนินการสแน็ปช็อตของคอนเทนเนอร์ที่สร้างขึ้นในขั้นตอนข้างต้น:

นักเทียบท่าวิ่ง -พี 8080 : : 8080 --ชื่อ ไปต่อ -d ไป-img

ในคำสั่งข้างต้น “ -พี ” ตัวเลือกรันคอนเทนเนอร์บน “ 8080 ' ท่าเรือ, ' -ชื่อ ” ตั้งชื่อคอนเทนเนอร์และ “ -d ตัวเลือก ” รันคอนเทนเนอร์ในโหมดเดี่ยว (บริการพื้นหลัง):

หากต้องการตรวจสอบว่าคอนเทนเนอร์กำลังทำงานอยู่หรือไม่ ให้แสดงรายการคอนเทนเนอร์ที่ทำงานอยู่โดยใช้เครื่องหมาย “ นักเทียบท่าปล ' สั่งการ:

นักเทียบท่า ปล

ตอนนี้นำทางไปที่ “ http://localhost:8080 ” และตรวจสอบว่าแอปพลิเคชันทำงานบนพอร์ตที่เปิดเผยหรือไม่:

ผลลัพธ์ข้างต้นบ่งชี้ว่าเราได้เริ่มต้นอินสแตนซ์ Docker อย่างมีประสิทธิภาพโดยใช้ Dockerfile

วิธีเรียกใช้อินสแตนซ์จาก Dockerfile ใน Docker Compose

Docker compose เป็นปลั๊กอินหลักอีกตัวหนึ่งของแพลตฟอร์ม Docker ที่ช่วยให้เราสามารถเรียกใช้หลายอินสแตนซ์ในคอนเทนเนอร์ที่แตกต่างกันได้ในคราวเดียว ผู้ใช้ยังสามารถเรียกใช้อินสแตนซ์ Docker จาก Dockerfile โดยใช้ปลั๊กอินการเขียน Docker สำหรับภาพประกอบ ให้ทำตามขั้นตอนที่กำหนด

ขั้นตอนที่ 1: สร้าง Dockerfile

ขั้นแรก สร้าง Dockerfile ตัวอย่างเช่น เราใช้ไฟล์ Dockerfile และโปรแกรมเดียวกันกับที่ใช้ในหัวข้อด้านบน:

จากโกลัง: 1.8

WORKDIR / ไป / src / แอป

คัดลอก main.go

RUN ไปสร้าง -โอ เว็บเซิร์ฟเวอร์ .

เปิดเผย 8080 : : 8080

จุดเริ่มต้น [ './เว็บเซิร์ฟเวอร์' ]

ขั้นตอนที่ 2: สร้างไฟล์ docker-compose.yml

ต่อไป ให้สร้าง “ นักเทียบท่า-compose.yml ” และคัดลอกคู่คีย์ต่อไปนี้ลงในไฟล์:

รุ่น: '3'

บริการ:

เว็บ:
สร้าง: .
พอร์ต:
- - 8080 : : 8080

ในสนิปที่กล่าวถึงข้างต้น:

  • บริการ ” ใช้เพื่อระบุบริการการเขียนที่จะดำเนินการในคอนเทนเนอร์ที่แยกต่างหาก ยกตัวอย่างเราได้กำหนดค่าบริการเดียวเท่านั้น” เว็บ ” เพื่อให้โค้ดสะอาดและเรียบง่าย
  • สร้าง ” คู่คีย์ใช้เพื่ออ่านบริบทบิลด์จาก Dockerfile ที่นี่นักเทียบท่าจะอ่านคำแนะนำจาก Dockerfile และสร้างคอนเทนเนอร์ตามนั้น
  • พอร์ต ” คีย์กำหนดพอร์ตการเปิดเผยที่คอนเทนเนอร์จะถูกดำเนินการ

ขั้นตอนที่ 3: เริ่มอินสแตนซ์ Docker

ตอนนี้ให้รันอินสแตนซ์ Docker ในคอนเทนเนอร์โดยใช้คำสั่ง “ นักเทียบท่า-เขียนขึ้น ' สั่งการ:

นักเทียบท่า-เขียนขึ้น -d

สำหรับการตรวจสอบ ให้ตรวจสอบรายการคอนเทนเนอร์การเขียนที่ทำงานอยู่โดยใช้เครื่องหมาย “ นักเทียบท่าเขียนป.ล ' สั่งการ:

นักเทียบท่าเขียน ปล

ผลลัพธ์แสดงให้เห็นว่า “ เว็บ ” บริการดำเนินการเรียบร้อยแล้วใน “ golangapp-เว็บ-1 ' คอนเทนเนอร์:

นำทางไปยังพอร์ตการเปิดเผยของบริการการเขียนและตรวจสอบว่าโปรแกรมกำลังทำงานอยู่หรือไม่ ผลลัพธ์ด้านล่างนี้แสดงให้เห็นว่าเราได้เริ่มต้นอินสแตนซ์ Docker จาก Dockerfile ได้สำเร็จโดยใช้ Docker compose:

นั่นคือทั้งหมดที่เกี่ยวกับการเรียกใช้อินสแตนซ์นักเทียบท่าจาก Dockerfile

บทสรุป

หากต้องการดำเนินการอินสแตนซ์ Docker ในคอนเทนเนอร์จาก Dockerfile ขั้นแรกให้สร้าง Dockerfile เพิ่มคำสั่งภายในไฟล์เพื่อสร้างรูปภาพหรือเทมเพลตของคอนเทนเนอร์ Docker จากนั้น สร้างคอนเทนเนอร์อิมเมจหรือสแนปชอตโดยใช้คำสั่ง “ นักเทียบท่า build -t -f ' สั่งการ. ตอนนี้ รันอิมเมจคอนเทนเนอร์เพื่อเริ่มอินสแตนซ์ Docker ผู้ใช้ยังสามารถใช้การเขียนนักเทียบท่าเพื่อเรียกใช้อินสแตนซ์นักเทียบท่าจาก Dockerfile โพสต์นี้ได้อธิบายวิธีการเรียกใช้อินสแตนซ์ Docker จาก Dockerfile