從docker hub下載了一個es的鏡像,版本爲6.4.2,詳細信息如下:
比較重要的就是這兩條,第一個是工作目錄,掛載目錄也需要和這裏對應;第二個是啓動命令,這裏是指定了一個預先寫好的啓動腳本。所以我啓動了一個空容器去查看了下容器內的情況:
容器內部目錄結構如上圖,data是用來存放數據,logs用來存放日誌。
接着查看下啓動腳本
/usr/local/bin/docker-entrypoint.sh |
前半部分我也是看的一知半解,不過真正和掛載目錄相關的是最後這部分,這裏處理了掛載目錄後的操作,大致意思是:
如果是root用戶(docker啓動容器,默認是以root用戶身份),並且 TAKE_FILE_OWNERSHIP 變量存在,則將/usr/share/elasticsearch/{data,logs},這兩個目錄都改變爲1000用戶所屬(這裏也可以看到最終存儲數據的路徑爲data,所以掛載時應該掛載到data下)。
id爲1000的用戶:
正是elasticsearch用戶,所以如果不掛載任何目錄直接啓動容器即可,如果掛載,那麼就添加一個變量,任意賦值,es可以正常啓動。
docker run -itd -v /root/es-data/:/usr/share/elasticsearch/data -e TAKE_FILE_OWNERSHIP=111 -p 9200:9200 --name es elasticsearch:6.4.2