Docker圖像擴展了官方的InfluxDB,其中_file環境變量與Docker Secrets兼容
此圖像的行為完全按照父映像文檔的描述。唯一的區別是,對於所有密碼環境變量,都有一個相應的password_file環境變量,該變量用於確定文件以從中讀取父級值,如果不設置父。
父母的圖像描述下面。
InfluxDB是一個從頭開始構建的時間序列數據庫,以處理高寫入和查詢負載。 InfluxDB旨在用作任何涉及大量時間戳數據的用例,包括DevOps監視,應用指標,IoT傳感器數據和實時分析。
流入文檔
InfluxDB圖像在/var/lib/influxdb
下公開了共享卷,因此您可以將主機目錄安裝到該點以訪問持久的容器數據。容器的典型調用可能是:
$ docker run -p 8086:8086
-v $PWD:/var/lib/influxdb
influxdb
將$PWD
修改為目錄,您要存儲與InfluxDB容器關聯的數據。
您還可以使用命名卷來控制Docker控制音量架。
$ docker run -p 8086:8086
-v influxdb:/var/lib/influxdb
influxdb
以下端口很重要,並由infuxdb使用。
使用docker run -P
時,HTTP API端口將自動暴露。
使用docker run -P
時,管理員接口不會自動暴露,並且默認情況下被禁用。 Adminstrator接口要求Web瀏覽器與Web瀏覽器的容器中同一端口上的InfluxDB訪問。由於-P
將HTTP端口公開到隨機端口上的主機上,因此管理員接口與此設置不兼容。
管理員界面被棄用為1.1.0,並將在1.3.0中刪除。
在此處查找有關API端點和端口的更多信息。
可以從配置文件或使用環境變量配置InfuluxDB。要安裝配置文件並將其與服務器一起使用,您可以使用此命令:
生成默認配置文件:
$ 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支持石墨行協議,但是默認情況下,服務和端口不會公開。要啟用使用Graphite支持的InfluxDB,您可以使用配置文件或設置適當的環境變量。使用默認的石墨配置運行InfluxDB:
docker run -p 8086:8086 -p 2003:2003
-e INFLUXDB_GRAPHITE_ENABLED=true
influxdb
有關設置石墨服務的更詳細的文檔,請參見GitHub上的Readme。為了利用石墨模板,您應該通過使用上面的步驟輸出默認配置文件並修改[[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的DB:
$ 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#8755中詳細介紹的當前錯誤。
influxdb圖像包含一些額外的功能來初始化數據庫。這些選項不建議生產,但在運行獨立測試實例時非常有用。
數據庫初始化腳本僅在運行influxd
時才調用。運行任何其他程序時,它將不會執行。
InfluxDB圖像使用多個環境變量自動配置服務器的某些部分。它們可能會大大幫助您使用此圖像。
自動將具有此環境變量名稱的數據庫初始化。
啟用身份驗證。必須設置此功能,或者必須在配置文件中設置auth-enabled = true
true以下任何與身份驗證相關的選項的工作。
要創建的管理用戶的名稱。如果尚不確定,則不會創建管理用戶。
使用INFLUXDB_ADMIN_USER
配置的管理用戶的密碼。如果尚不確定,則會生成隨機密碼並打印以標準輸出。
沒有特權的用戶名稱。如果設置了INFLUXDB_DB
,則將為該數據庫授予此用戶的讀寫權限。
用INFLUXDB_USER
配置的用戶的密碼。如果尚不確定,則會生成隨機密碼並打印以標準輸出。
在INFLUXDB_DB
上使用讀取特權創建的用戶名稱。如果未設置INFLUXDB_DB
,則該用戶將沒有授予權限。
用INFLUXDB_READ_USER
配置的用戶的密碼。如果尚不確定,則會生成隨機密碼並打印以標準輸出。
在INFLUXDB_DB
上使用寫入特權創建的用戶名稱。如果未設置INFLUXDB_DB
,則該用戶將沒有授予權限。
用INFLUXDB_WRITE_USER
配置的用戶的密碼。如果尚不確定,則會生成隨機密碼並打印以標準輸出。
如果docker映像在/docker-entrypoint-initdb.d
文件夾中找到了帶有擴展名為.sh
或.iql
的任何文件,它將執行它們。它們執行的順序由外殼確定。這通常是字母順序。
要手動初始化數據庫和退出,可以直接使用/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的秘密密碼創建telegraf
用戶。然後,它將退出並留下其在您安裝的捲中創建的任何文件。
influxdb
圖像有多種口味,每個味道都為特定的用例設計。
influxdb:<version>
這是Defatso圖像。如果您不確定自己的需求是什麼,則可能要使用此需求。它被設計為既用作扔掉容器(安裝源代碼並啟動容器以啟動您的應用程序),也可以用作構建其他圖像的基礎。
influxdb:alpine
該圖像基於alpine
官方圖像中可用的流行高山Linux項目。高山Linux比大多數分佈基本圖像(〜5MB)小得多,因此總體上會導致大量較小的圖像。
強烈建議當最終圖像大小盡可能小時。要注意的主要警告是,它確實使用MUSL LIBC代替GLIBC和朋友,因此某些軟件可能會根據其LIBC要求的深度遇到問題。但是,大多數軟件都沒有問題,因此這種變體通常是一個非常安全的選擇。有關更多討論可能出現的問題以及使用基於高山的圖像的一些Pro/Con比較的更多討論,請參見此黑客新聞評論主題。
為了最大程度地減少圖像尺寸,對於基於高山的圖像中包含的其他相關工具(例如git
或bash
)並不常見。將此圖像作為基礎,在自己的Dockerfile中添加所需的東西(如果您不熟悉,請參見alpine
Image描述,以獲取如何安裝軟件包的示例)。
查看此圖像中包含的軟件的許可證信息。
與所有Docker圖像一樣,這些可能還包含其他軟件,這些軟件可能是其他許可(例如基本分佈中的bash等),以及所包含的主要軟件的任何直接或間接依賴性)。
可以在repo-info
存儲庫的influxdb/
Directory中找到一些能夠自動檢測的其他許可信息。
至於任何預構建的圖像使用情況,圖像用戶的責任是確保此圖像的任何使用都符合其中包含的所有軟件的任何相關許可。