目标 建立如下图所示开发镜像
~ docker -v
Docker version 17.12.0-ce, build c97c6d6
创建一个6G内存的虚拟机,并用阿里镜像代理
docker-machine create --driver virtualbox --virtualbox-memory 6000 --engine-registry-mirror=https://2h3po24q.mirror.aliyuncs.com default
创建完后启动docker-machine
docker-machine start default
docker-machine env
eval $(docker-machine env)
创建kafka镜像
docker run -p 2181:2181 -p 9092:9092 --env ADVERTISED_HOST=`docker-machine ip \`docker-machine active\`` --env ADVERTISED_PORT=9092 spotify/kafka
创建elk镜像
docker run -p 5601:5601 -p 9200:9200 -p 5044:5044 -it --name elk sebp/elk:561
创建portainer镜像,免登陆
docker run -d -p 9000:9000 --restart always -v /var/run/docker.sock:/var/run/docker.sock -v /opt/portainer:/data portainer/portainer --no-auth
常见问题
- 1 docker start <container_name> returns "container <hash> already exists"
这里有个此议题 issues 36145 我的解决方法是:关机前 docker-compose stop default
下次再启动就不会有这个问题了,当然这样做比较麻烦,如果忘记stop 直接关机下次启动就都 exists了。
- 2 elk启动失败问题
在 Kitematic 中start elk镜像在控制台中见如下输出
* Starting Elasticsearch Server G G[ OK ]
...
waiting for Elasticsearch to be up (30/30)
...
[1] bootstrap checks failed
[1]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
解决 :进入到虚拟机中调大max_map_count elk docker-cli-run-prod-mode
docker-machine ssh
sudo sysctl -w vm.max_map_count=262144
常用命令
docker-machine ssh 登录到里面
docker-machine ip 查看docker-machine地址
sudo systemctl status docker
sudo systemctl enable docker
docker images
docker image rm 删除镜像
docker run centos
docker run sebp/elk:561
docker stop 先停止
docker rm 然后删除
docker restart 重启
-d 后台启动