【docker】關於docker 中 鏡像、容器的關係理解

例如,使用docker 拉取下來一個要用的鏡像esdocker

docker pull elasticsearch:5.6.9

此時es的鏡像存在與服務器上bash

docker images

 

對於你運行鏡像爲一個容器的命令,你會使用服務器

docker run -d --name es1 -p 9200:9200 -p 9300:9300 --restart=always elasticsearch:5.6.9

這是最簡單的一個運行命令,只是標明瞭app

1》你要運行的鏡像是  elasticsearch:5.6.9   【鏡像名稱:版本號】elasticsearch

2》--name指定了你是用本鏡像運行起來的容器名字叫 es1rest

3》-p 9200:9200  指定了本容器對外的端口號是多少code

4》--restart=always  指定本容器隨着 docker重啓而重啓blog

 

容器運行後,就是一個獨立的存在,容器內部是有完整的目錄的it

使用命令ast

docker exec -it es1  /bin/bash

命令很簡單  就是

docker exec -it 容器名或者ID  /bin/bash

就能夠進入已經運行起的容器內部。【由於每一個容器都是獨立存在的,因此容器內部的好多命令都不能用,例如vi  例如ll】

 

爲何要進入docker容器內部呢?

由於你若是要使用複雜的啓動容器命令,進行掛載的操做,就須要瞭解es本身的配置文件在容器中的位置

以下命令:

docker run -d --name es1-master -p 9200:9200 -p 9300:9300 --restart=always -v /apps/elasticSearch/es1-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml -v /apps/elasticsearch/es1_data:/usr/share/elasticsearch/data elasticsearch:5.6.9 

 

 除了最基本的命令以外,這個複雜命令進行了配置文件以及data目錄的掛載

-v /apps/elasticSearch/es1-master.yml:/usr/share/elasticsearch/config/elasticsearch.yml

本參數的說明:標識 將 -v  /apps/elasticSearch/es1-master.yml【宿主機的實際自定義配置文件】:【掛載】/usr/share/elasticsearch/config/elasticsearch.yml【docker容器 中默認配置文件】

簡單來講,就是 你使用docker run運行起來的docker容器 es1-master,這個容器實際使用的配置文件是 你宿主機中自定義的配置文件/apps/elasticSearch/es1-master.yml ,使用這個自定義文件替換了容器內默認的配置文件/usr/share/elasticsearch/config/elasticsearch.yml

 同理,-v /apps/elasticsearch/es1_data:/usr/share/elasticsearch/data  的含義就是 你的docker容器es1-master 啓動之後的date數據,是存放在/apps/elasticsearch/es1_data中的,而不是存在默認的容器內的/usr/share/elasticsearch/data目錄下的!!!!

 

而實現掛載的好處,就是你若是想要修改本容器的參數,就不用每次進入容器內部去修改配置文件,而只須要在宿主機上修改自定義的配置文件,而後重啓你的容器就能夠了 

 

 

最後,退出docker容器的命令就是

exit
相關文章
相關標籤/搜索