例如,使用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