docker pull的镜像放在哪里_Docker 安装ELK及Docker常见命令
最近搭建基于Spring Cloud的微服務框架,日志系統當然最佳選擇就是ELK。看著MAC 那緊巴巴的配置,又不想熱情退去而留下一堆軟件,果斷選擇Docker安裝來節省那可憐的資源。當然這只是鵬哥的一點點小心思。
為什么使用docker 這里就不在贅述了,相信就算現在豬肉貴你沒吃過,但是新聞里至少有豬的圖片你應該看過吧。這篇文章的主旨是搭建一個ELK(主要是elasticsearch + kibana,logstash會在spring cloud 繼承ELK的文章中介紹),Docker充其量是一個工具,但是磨刀不誤砍柴工,我們還是先來看看安裝ELK過程中用到的Docker命令吧。
Docker 常見命令
search 命令
下載鏡像之前我們應該先搜索到鏡像,搜索鏡像的命令:
docker search [OPTIONS] TERMOPTIONS說明:
- --automated :只列出 automated build類型的鏡像;
- --no-trunc :顯示完整的鏡像描述;
- -s :列出收藏數不小于指定值的鏡像。

- NAME: 鏡像倉庫源的名稱
- DESCRIPTION: 鏡像的描述
- OFFICIAL: 是否 docker 官方發布
- stars: 類似 Github 里面的 star,表示點贊、喜歡的意思。
- AUTOMATED: 自動構建。
pull 命令
搜索之后找到對應的鏡像,然后我們調用pull命令將鏡像拉到本地:
docker pull [OPTIONS] NAME[:TAG|@DIGEST]OPTIONS說明:
- -a :拉取所有 tagged 鏡像
- --disable-content-trust :忽略鏡像的校驗,默認開啟

run命令
鏡像下來之后,我們的最終目的是要運行這個鏡像,運行鏡像需要用到run命令。
docker run [OPTIONS] IMAGE [COMMAND] [ARG...]OPTIONS說明:
- -a stdin: 指定標準輸入輸出內容類型,可選 STDIN/STDOUT/STDERR 三項;
- -d: 后臺運行容器,并返回容器ID;
- -i: 以交互模式運行容器,通常與 -t 同時使用;
- -P: 隨機端口映射,容器內部端口隨機映射到主機的高端口
- -p: 指定端口映射,格式為:主機(宿主)端口:容器端口
- -t: 為容器重新分配一個偽輸入終端,通常與 -i 同時使用;
- --name="nginx-lb": 為容器指定一個名稱;
- --dns 8.8.8.8: 指定容器使用的DNS服務器,默認和宿主一致;
- --dns-search example.com: 指定容器DNS搜索域名,默認和宿主一致;
- -h "mars": 指定容器的hostname;
- -e username="ritchie": 設置環境變量;
- --env-file=[]: 從指定文件讀入環境變量;
- --cpuset="0-2" or --cpuset="0,1,2": 綁定容器到指定CPU運行;
- -m :設置容器使用內存最大值;
- --net="bridge": 指定容器的網絡連接類型,支持 bridge/host/none/container: 四種類型;
- --link=[]: 添加鏈接到另一個容器;
- --expose=[]: 開放一個端口或一組端口;
- --volume , -v: 綁定一個卷

logs命令
鏡像啟動之后,會在容器里運行,那我們如何查看運行的情況呢?logs命令會幫我們輸出運行的日志。
docker logs [OPTIONS] CONTAINEROPTIONS說明:
- -f : 跟蹤日志輸出
- --since :顯示某個開始時間的所有日志
- -t : 顯示時間戳
- --tail :僅列出最新N條容器日志
ps 命令
鏡像啟動之后,會在有一個容器,如果我們想查看當前容器的信息,需要執行ps命令。
docker ps [OPTIONS]OPTIONS說明:
- -a :顯示所有的容器,包括未運行的。
- -f :根據條件過濾顯示的內容。
- --format :指定返回值的模板文件。
- -l :顯示最近創建的容器。
- -n :列出最近創建的n個容器。
- --no-trunc :不截斷輸出。
- -q :靜默模式,只顯示容器編號。
- -s :顯示總的文件大小。

輸出詳情介紹:
- CONTAINER ID: 容器 ID。
- IMAGE: 使用的鏡像。
- COMMAND: 啟動容器時運行的命令。
- CREATED: 容器的創建時間。
- STATUS: 容器狀態。狀態有7種:created(已創建)restarting(重啟中)running(運行中)removing(遷移中)paused(暫停)exited(停止)dead(死亡)
- PORTS: 容器的端口信息和使用的連接類型(tcpudp)。
- NAMES: 自動分配的容器名稱。
exec 命令
有時候我們需要進入到鏡像的內部,exec 命令會幫助我們在容器內部執行命令。
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]OPTIONS說明:
- -d :分離模式: 在后臺運行
- -i :即使沒有附加也保持STDIN 打開
- -t :分配一個偽終端
start/stop/restart 命令
- docker start :啟動一個或多個已經被停止的容器
- docker stop :停止一個運行中的容器
- docker restart :重啟容器
rm 命令
如果我們認為這個容器已經沒有存在的意義了,我們可以執行rm 命令刪除這個容器。
docker rm [OPTIONS] CONTAINER [CONTAINER...]OPTIONS說明:
- -f :通過 SIGKILL 信號強制刪除一個運行中的容器。
- -l :移除容器間的網絡連接,而非容器本身。
- -v :刪除與容器關聯的卷。
images命令
如果我們長期不使用,就會忘記我們之前拉取過那些,images 命令會列出我們本地所有的鏡像。docker images [OPTIONS] [REPOSITORY[:TAG]]OPTIONS說明:
- -a :列出本地所有的鏡像(含中間映像層,默認情況下,過濾掉中間映像層);
- --digests :顯示鏡像的摘要信息;
- -f :顯示滿足條件的鏡像;
- --format :指定返回值的模板文件;
- --no-trunc :顯示完整的鏡像信息;
- -q :只顯示鏡像ID。

rmi
本地鏡像如果不在需要,放在本地就會占用寶貴的存儲資源,鵬哥就非常在意這個,所以我會定期使用rmi命令清理本地不用的鏡像。
docker rmi [OPTIONS] IMAGE [IMAGE...]OPTIONS說明:
- -f :強制刪除;
- --no-prune :不移除該鏡像的過程鏡像,默認移除;
介紹完我們會用到的docker命令之后,安裝ELK就是水到渠成的事了,下邊我們來安裝ELK。
Docker 安裝 elasticsearch
在elastic 6.0 版本之后 elastic 官方開始維護自己的Docker鏡像包,所以如果我們要搭建elk的花,官方的包當然是首選,我們選用最新的7.5.1 版本來搭建。首先我們執行pull命令 將鏡像拉到本地:
docker pull docker.elastic.co/elasticsearch/elasticsearch:7.5.1執行完pull命令之后,我們起一個容器,為了后邊方便kibana 鏈接,這里最好指定一個名稱:
docker run -d -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" --name elasticsearch docker.elastic.co/elasticsearch/elasticsearch:7.5.1啟動完之后在瀏覽器輸入 http://localhost:9200 ,如果能看到如下的輸出,說明我們已經安裝啟動成功。

Docker 安裝 Kibana
安裝完elasticsearch ,就像安裝了一個命令行的操作系統,如果我們想直觀的查看日志情況,我們需要一個GUI,kibana就是elastic的GUI,這也是elastic的核心競爭力。
同樣的,我們先執行pull 命令拉下來7.5.1 版本的kibana,版本的選擇有一定的要求:我們不能選高于elasticsearch的版本,同時又必須和elasticsearch 保持同樣的大版本。當然簡單起見我們選擇同樣的版本號是不會有問題的。
docker pull docker.elastic.co/kibana/kibana:7.5.1拉完鏡像之后,起一個容器,這里說明一下ELASTICSEARCH_URL 這個參數,鵬哥試下來似乎是沒有作用的,可能是鵬哥不知道怎么用,如果有網友知道,也請幫忙告知一下,不勝感激。
docker run -d -p 5601:5601 --link elasticsearch -e ELASTICSEARCH_URL=http://elasticsearch:9200 --name kibana docker.elastic.co/kibana/kibana:7.5.1我們在起kibana的時候需要知道elasticsearch容器的名稱,ELASTICSEARCH_URL的規則可以是 http://[elasticsearch 容器名稱]:9200,也可以是elasticsearch的無理IP地址,但是不能是localhost, 因為這樣會解析到kibana容器內部,導致無法連接elasticsearch 服務器。
這里我們設置的elasticsearch 容器名稱跟kibana 默認的 名稱重合了,所以我們不用修改任何配置,這個時候打開瀏覽器 輸入 http://localhost:5601 就能看到kibana的歡迎頁面。但是如果我們沒有設置 elasticsearch 的容器名稱或者設置的其他的字符串,那么需要我們修改kibana.yml 來指定這個名稱。
首先使用 exec 進入容器:
docker exec -it [你的容器id] /bin/bash然后使用vim 打開 kibana.yml
vi /usr/share/kibana/config/kibana.yml修改完之后輸入 exit 推出當前的容器。然后使用restart 命令,重啟容器,就能看到效果了。
kibana 默認是英文界面,如果需要支持中文,可以按照上邊的方式修改 kibana.yml ,在最后一行追加:
i18n.locale: zh-CN重啟kibana ,刷新瀏覽器就能看到效果了。

總結
按照這套教程,你可以無腦的安裝ELK而不用修改任何東西,也就是這是最簡單的demo,如果你需要更高級別的配置,可以持續關注鵬哥的文章,因為鵬哥也在開始學習elastic 的東西。這套教程就是鵬哥花了兩天的時間從零摸索出來的。雖然意義不大,但是沒辦法,鵬哥就是這么愛折騰。
總結
以上是生活随笔為你收集整理的docker pull的镜像放在哪里_Docker 安装ELK及Docker常见命令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: unity3d 不规则外发光描边_Sha
- 下一篇: .hpp文件_3 OpenCV的头文件说