คอนเทนเนอร์ Docker เป็นหนึ่งในองค์ประกอบสำคัญของแพลตฟอร์ม Docker ที่ทำแพ็กเกจโปรแกรม การตั้งค่าการกำหนดค่า และการขึ้นต่อกันโดยใช้อิมเมจ Docker อิมเมจ Docker เป็นเทมเพลตหรือสแน็ปช็อตอย่างง่ายของคอนเทนเนอร์ที่แนะนำคอนเทนเนอร์เกี่ยวกับวิธีการบรรจุแอปพลิเคชัน รูปภาพเหล่านี้ส่วนใหญ่มีอยู่ในรีจิสตรีฮับ Docker อย่างเป็นทางการ ผู้ใช้ยังสามารถออกแบบอิมเมจเหล่านี้ตามความต้องการของโปรเจ็กต์โดยใช้ Dockerfile
บล็อกนี้จะอธิบาย:
- Dockerfile คืออะไร?
- คำสั่งพื้นฐานของ Dockerfile
- วิธีเรียกใช้อินสแตนซ์จาก Dockerfile ใน Docker
- วิธีเรียกใช้อินสแตนซ์จาก Dockerfile ใน Docker Compose
- บทสรุป
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
ในคำสั่งข้างต้น “ -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.8WORKDIR / ไป / 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