Docker Image ขยายการ influxDB อย่างเป็นทางการด้วยตัวแปรสภาพแวดล้อม _file ที่จะเข้ากันได้กับความลับของนักเทียบท่า
ภาพนี้ทำงานได้อย่างตรงตามที่อธิบายไว้ในเอกสารของภาพผู้ปกครอง ข้อแตกต่างเพียงอย่างเดียวคือสำหรับตัวแปรสภาพแวดล้อมรหัสผ่านทั้งหมดมีตัวแปรสภาพแวดล้อม password ที่สอดคล้องกันที่สอดคล้องกันซึ่งใช้ในการกำหนดไฟล์เพื่ออ่านค่าของผู้ปกครองจากหากไม่ได้ตั้งค่าไว้แล้ว
คำอธิบายภาพของผู้ปกครองด้านล่าง
InfluxDB เป็นฐานข้อมูลอนุกรมเวลาที่สร้างขึ้นจากพื้นดินเพื่อจัดการการเขียนและการสืบค้นสูง InfluxDB มีความหมายที่จะใช้เป็นร้านค้าสำรองสำหรับกรณีการใช้งานใด ๆ ที่เกี่ยวข้องกับข้อมูลที่มีการประทับเวลาจำนวนมากรวมถึงการตรวจสอบ DevOps, ตัวชี้วัดแอปพลิเคชัน, ข้อมูลเซ็นเซอร์ IoT และการวิเคราะห์แบบเรียลไทม์
เอกสารประกอบ
ภาพ InfluxDB เปิดเผยปริมาณที่ใช้ร่วมกันภายใต้ /var/lib/influxdb
ดังนั้นคุณสามารถติดตั้งไดเรกทอรีโฮสต์ไปยังจุดนั้นเพื่อเข้าถึงข้อมูลคอนเทนเนอร์ที่คงอยู่ การภาวนาทั่วไปของคอนเทนเนอร์อาจเป็น:
$ docker run -p 8086:8086
-v $PWD:/var/lib/influxdb
influxdb
แก้ไข $PWD
ไปยังไดเรกทอรีที่คุณต้องการจัดเก็บข้อมูลที่เกี่ยวข้องกับคอนเทนเนอร์ InfluxDB
นอกจากนี้คุณยังสามารถควบคุม Docker ได้ที่ Volume Mountpoint โดยใช้ระดับเสียงที่มีชื่อ
$ docker run -p 8086:8086
-v influxdb:/var/lib/influxdb
influxdb
พอร์ตต่อไปนี้มีความสำคัญและใช้งานโดย InfluxDB
พอร์ต HTTP API จะถูกเปิดเผยโดยอัตโนมัติเมื่อใช้ docker run -P
อินเทอร์เฟซผู้ดูแลระบบจะไม่ถูกเปิดเผยโดยอัตโนมัติเมื่อใช้ docker run -P
และถูกปิดใช้งานโดยค่าเริ่มต้น อินเทอร์เฟซ AdmInstrator ต้องการให้เว็บเบราว์เซอร์สามารถเข้าถึง influxDB บนพอร์ตเดียวกันในคอนเทนเนอร์ได้จากเว็บเบราว์เซอร์ เนื่องจาก -P
เปิดเผยพอร์ต HTTP ไปยังโฮสต์บนพอร์ตสุ่มอินเทอร์เฟซผู้ดูแลระบบจึงไม่สามารถใช้งานได้กับการตั้งค่านี้
อินเทอร์เฟซผู้ดูแลระบบเลิกใช้ ณ 1.1.0 และจะถูกลบออกใน 1.3.0
ค้นหาข้อมูลเพิ่มเติมเกี่ยวกับจุดสิ้นสุด API และพอร์ตที่นี่
InfluxDB สามารถกำหนดค่าได้จากไฟล์กำหนดค่าหรือใช้ตัวแปรสภาพแวดล้อม ในการเมานต์ไฟล์การกำหนดค่าและใช้กับเซิร์ฟเวอร์คุณสามารถใช้คำสั่งนี้:
สร้างไฟล์กำหนดค่าเริ่มต้น:
$ docker run --rm influxdb influxd config > influxdb.conf
แก้ไขการกำหนดค่าเริ่มต้นซึ่งตอนนี้จะพร้อมใช้งานภายใต้ $PWD
จากนั้นเริ่มคอนเทนเนอร์ InfluxDB
$ docker run -p 8086:8086
-v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro
influxdb -config /etc/influxdb/influxdb.conf
แก้ไข $PWD
ไปยังไดเรกทอรีที่คุณต้องการจัดเก็บไฟล์การกำหนดค่า
สำหรับตัวแปรสภาพแวดล้อมรูปแบบคือ INFLUXDB_$SECTION_$NAME
ขีดกลางทั้งหมด ( -
) จะถูกแทนที่ด้วยขีดเส้นใต้ ( _
) หากตัวแปรไม่ได้อยู่ในส่วนให้ละเว้นส่วนนั้น
ตัวอย่าง:
INFLUXDB_REPORTING_DISABLED=true
INFLUXDB_META_DIR=/path/to/metadir
INFLUXDB_DATA_QUERY_LOG_ENABLED=false
ค้นหาเพิ่มเติมเกี่ยวกับการกำหนดค่า InfluxDB ที่นี่
InfluxDB รองรับโปรโตคอลสายกราไฟท์ แต่บริการและพอร์ตจะไม่ถูกเปิดเผยโดยค่าเริ่มต้น ในการเรียกใช้ influxDB ด้วยการเปิดใช้งานการรองรับกราไฟท์คุณสามารถใช้ไฟล์กำหนดค่าหรือตั้งค่าตัวแปรสภาพแวดล้อมที่เหมาะสม เรียกใช้ influxDB ด้วยการกำหนดค่ากราไฟท์เริ่มต้น:
docker run -p 8086:8086 -p 2003:2003
-e INFLUXDB_GRAPHITE_ENABLED=true
influxdb
ดู ReadMe บน GitHub สำหรับเอกสารรายละเอียดเพิ่มเติมเพื่อตั้งค่าบริการกราไฟท์ ในการใช้ประโยชน์จากเทมเพลตกราไฟท์คุณควรใช้ไฟล์การกำหนดค่าโดยการส่งไฟล์การกำหนดค่าเริ่มต้นโดยใช้ขั้นตอนด้านบนและแก้ไขส่วน [[graphite]]
อินเทอร์เฟซผู้ดูแลระบบเลิกใช้ ณ 1.1.0 และจะถูกลบออกใน 1.3.0 มันถูกปิดใช้งานโดยค่าเริ่มต้น หากจำเป็นก็ยังสามารถเปิดใช้งานได้โดยการตั้งค่าตัวแปรสภาพแวดล้อมเช่นด้านล่าง:
docker run -p 8086:8086 -p 8083:8083
-e INFLUXDB_ADMIN_ENABLED=true
influxdb
ในการใช้อินเทอร์เฟซผู้ดูแลระบบทั้ง HTTP API และอินเตอร์เฟสผู้ดูแลระบบ API จะต้องส่งต่อไปยังพอร์ตเดียวกัน
การสร้างฐานข้อมูลชื่อ MYDB:
$ curl -G http://localhost:8086/query --data-urlencode " q=CREATE DATABASE mydb "
แทรกเข้าไปใน DB:
$ curl -i -XPOST ' http://localhost:8086/write?db=mydb ' --data-binary ' cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000 '
อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ในเอกสารอย่างเป็นทางการ
เริ่มคอนเทนเนอร์:
$ docker run --name=influxdb -d -p 8086:8086 influxdb
เรียกใช้ไคลเอนต์การไหลเข้าในภาชนะอื่น:
$ docker run --rm --link=influxdb -it influxdb influx -host influxdb
ในขณะนี้คุณไม่สามารถใช้ docker exec
เพื่อเรียกใช้ไคลเอนต์การไหลเข้าได้เนื่องจาก docker exec
จะไม่จัดสรร TTY อย่างเหมาะสม นี่เป็นเพราะข้อผิดพลาดปัจจุบันใน Docker ที่มีรายละเอียดใน Docker/Docker#8755
ภาพ InfluxDB มีฟังก์ชั่นพิเศษบางอย่างสำหรับการเริ่มต้นฐานข้อมูล ตัวเลือกเหล่านี้ไม่ได้แนะนำสำหรับการผลิต แต่มีประโยชน์มากเมื่อใช้อินสแตนซ์แบบสแตนด์อโลนสำหรับการทดสอบ
สคริปต์การเริ่มต้นฐานข้อมูลจะถูกเรียกเฉพาะเมื่อเรียกใช้ influxd
มันจะไม่ถูกดำเนินการเมื่อเรียกใช้โปรแกรมอื่น ๆ
ภาพ InfluxDB ใช้ตัวแปรสภาพแวดล้อมหลายตัวเพื่อกำหนดค่าบางส่วนของเซิร์ฟเวอร์โดยอัตโนมัติ พวกเขาอาจช่วยคุณในการใช้ภาพนี้อย่างมีนัยสำคัญ
เริ่มต้นฐานข้อมูลโดยอัตโนมัติด้วยชื่อของตัวแปรสภาพแวดล้อมนี้
เปิดใช้งานการรับรองความถูกต้อง จะต้องตั้งค่าหรือ auth-enabled = true
จะต้องตั้งค่าภายในไฟล์กำหนดค่าสำหรับตัวเลือกที่เกี่ยวข้องกับการตรวจสอบความถูกต้องด้านล่างเพื่อทำงาน
ชื่อของผู้ใช้ผู้ดูแลระบบที่จะสร้าง หากนี่คือ UNSET จะไม่มีการสร้างผู้ใช้งานผู้ดูแลระบบ
รหัสผ่านสำหรับผู้ดูแลระบบที่กำหนดค่าด้วย INFLUXDB_ADMIN_USER
หากนี่คือ UNSET รหัสผ่านแบบสุ่มจะถูกสร้างและพิมพ์เป็นมาตรฐาน
ชื่อของผู้ใช้ที่จะสร้างโดยไม่มีสิทธิ์ หากตั้งค่า INFLUXDB_DB
ผู้ใช้รายนี้จะได้รับสิทธิ์อ่านและเขียนสำหรับฐานข้อมูลนั้น
รหัสผ่านสำหรับผู้ใช้ที่กำหนดค่าด้วย INFLUXDB_USER
หากนี่คือ UNSET รหัสผ่านแบบสุ่มจะถูกสร้างและพิมพ์เป็นมาตรฐาน
ชื่อของผู้ใช้ที่จะสร้างด้วยสิทธิ์อ่านบน INFLUXDB_DB
หากไม่ได้ตั้งค่า INFLUXDB_DB
ผู้ใช้รายนี้จะไม่มีสิทธิ์ที่ได้รับอนุญาต
รหัสผ่านสำหรับผู้ใช้ที่กำหนดค่าด้วย INFLUXDB_READ_USER
หากนี่คือ UNSET รหัสผ่านแบบสุ่มจะถูกสร้างและพิมพ์เป็นมาตรฐาน
ชื่อของผู้ใช้ที่จะสร้างด้วยสิทธิ์การเขียนบน INFLUXDB_DB
หากไม่ได้ตั้งค่า INFLUXDB_DB
ผู้ใช้รายนี้จะไม่มีสิทธิ์ที่ได้รับอนุญาต
รหัสผ่านสำหรับผู้ใช้ที่กำหนดค่าด้วย INFLUXDB_WRITE_USER
หากนี่คือ UNSET รหัสผ่านแบบสุ่มจะถูกสร้างและพิมพ์เป็นมาตรฐาน
หากอิมเมจนักเทียบท่าพบไฟล์ใด ๆ ที่มีส่วนขยาย .sh
หรือ .iql
ภายในโฟลเดอร์ /docker-entrypoint-initdb.d
มันจะดำเนินการ คำสั่งที่พวกเขาถูกดำเนินการในเชลล์ นี่คือลำดับตัวอักษร
ในการเริ่มต้นฐานข้อมูลและการออกด้วยตนเองสคริปต์ /init-influxdb.sh
สามารถใช้โดยตรง ต้องใช้พารามิเตอร์เดียวกันกับคำสั่ง influxd run
เป็นตัวอย่าง:
$ docker run --rm
-e INFLUXDB_DB=db0 -e INFLUXDB_ADMIN_ENABLED=true
-e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_USER=supersecretpassword
-e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword
-v $PWD:/var/lib/influxdb
/init-influxdb.sh
ด้านบนจะสร้างฐานข้อมูล db0
สร้างผู้ใช้ผู้ดูแลระบบด้วยรหัสผ่าน supersecretpassword
จากนั้นสร้างผู้ใช้ telegraf
ด้วยรหัสผ่านลับของโทรเลขของคุณ จากนั้นจะออกและทิ้งไฟล์ใด ๆ ที่สร้างขึ้นในระดับเสียงที่คุณติดตั้ง
ภาพ influxdb
มีหลายรสชาติแต่ละภาพออกแบบมาสำหรับกรณีการใช้งานเฉพาะ
influxdb:<version>
นี่คือภาพ defacto หากคุณไม่แน่ใจเกี่ยวกับความต้องการของคุณคุณอาจต้องการใช้อันนี้ มันถูกออกแบบมาให้ใช้ทั้งสองเป็นตู้คอนเทนเนอร์ (ติดตั้งซอร์สโค้ดของคุณและเริ่มคอนเทนเนอร์เพื่อเริ่มแอปของคุณ) รวมถึงฐานเพื่อสร้างภาพอื่น ๆ
influxdb:alpine
ภาพนี้ขึ้นอยู่กับโครงการอัลไพน์ Linux ยอดนิยมซึ่งมีอยู่ในภาพทางการ alpine
อัลไพน์ Linux มีขนาดเล็กกว่าภาพฐานกระจายส่วนใหญ่ (~ 5MB) และนำไปสู่ภาพที่บางกว่าโดยทั่วไป
ตัวแปรนี้ขอแนะนำอย่างยิ่งเมื่อต้องการขนาดภาพสุดท้ายที่มีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ ข้อแม้หลักที่ควรทราบคือใช้ MUSL LIBC แทน GLIBC และเพื่อนดังนั้นซอฟต์แวร์บางตัวอาจพบปัญหาขึ้นอยู่กับความลึกของข้อกำหนด LIBC ของพวกเขา อย่างไรก็ตามซอฟต์แวร์ส่วนใหญ่ไม่มีปัญหากับสิ่งนี้ดังนั้นตัวแปรนี้มักจะเป็นตัวเลือกที่ปลอดภัยมาก ดูหัวข้อความคิดเห็นของแฮ็กเกอร์ข่าวนี้สำหรับการอภิปรายเพิ่มเติมเกี่ยวกับปัญหาที่อาจเกิดขึ้นและการเปรียบเทียบ Pro/Con บางอย่างของการใช้ภาพที่ใช้อัลไพน์
เพื่อลดขนาดภาพมันเป็นเรื่องแปลกสำหรับเครื่องมือที่เกี่ยวข้องเพิ่มเติม (เช่น git
หรือ bash
) ที่จะรวมอยู่ในภาพที่ใช้อัลไพน์ การใช้ภาพนี้เป็นฐานเพิ่มสิ่งที่คุณต้องการใน DockerFile ของคุณเอง (ดูคำอธิบายภาพ alpine
สำหรับตัวอย่างวิธีการติดตั้งแพ็คเกจหากคุณไม่คุ้นเคย)
ดูข้อมูลใบอนุญาตสำหรับซอฟต์แวร์ที่มีอยู่ในภาพนี้
เช่นเดียวกับรูปภาพ Docker ทั้งหมดสิ่งเหล่านี้มีซอฟต์แวร์อื่น ๆ ซึ่งอาจอยู่ภายใต้ใบอนุญาตอื่น ๆ (เช่น Bash ฯลฯ จากการกระจายฐานพร้อมกับการพึ่งพาโดยตรงหรือโดยอ้อมของซอฟต์แวร์หลักที่มีอยู่)
ข้อมูลใบอนุญาตเพิ่มเติมบางอย่างที่สามารถตรวจพบได้โดยอัตโนมัติอาจพบได้ใน influxdb/
ไดเรกทอรีของ repo-info
ที่เก็บข้อมูล
สำหรับการใช้งานภาพที่สร้างไว้ล่วงหน้าเป็นความรับผิดชอบของผู้ใช้รูปภาพเพื่อให้แน่ใจว่าการใช้ภาพนี้เป็นไปตามใบอนุญาตใด ๆ ที่เกี่ยวข้องสำหรับซอฟต์แวร์ทั้งหมดที่มีอยู่ภายใน