花了一个晚上和一个上午的时间学习了一下Docker,Docker的文档算是技术文档中写的最好的吧,有介绍,有操做,还有录像和回顾。node
https://docs.docker.com/get-started/web
下载Docker Toolbox(Docker Desktop for Windows Requires Microsoft Windows 10 Professional or Enterprise 64-bit.)redis
https://docs.docker.com/toolbox/overview/docker
Docker中各个概念的关系:app
Toolbox启动以后,会在本机启动一个Node,拉取boot2docker的image,run一个container。ssh
Docker的集群化部署最终落实在学习
docker stack deploy -c docker-compose.yml getstartedlabui
能够看到getstartedlab为stack名,观察docker-compose.yml,该stack定义了多了service,service的名称为 <stack名>_<service名>,如spa
getstartedlab_web, getstartedlab_visualizer, getstartedlab_redis等:rest
每一个service中定义了image的来源,部署的信息等。因为docker stack deploy指令在一个node中执行,服务会被部署在当前的node中(swarm的话,在Node Manager中执行docker stack deploy指令,服务会被部署在swarm的全部node中)。
version: "3" services: web: # replace username/repo:tag with your name and image details image: mozaiquan/get-started:part2 deploy: replicas: 5 restart_policy: condition: on-failure resources: limits: cpus: "0.1" memory: 50M # 端口映射 宿主机端口:虚拟机端口 ports: - "80:80" networks: - webnet visualizer: image: dockersamples/visualizer:stable ports: - "8081:8080" volumes: - "/var/run/docker.sock:/var/run/docker.sock" deploy: placement: constraints: [node.role == manager] networks: - webnet redis: image: redis ports: - "6379:6379" volumes: - "/home/docker/data:/data" deploy: placement: constraints: [node.role == manager] command: redis-server --appendonly yes networks: - webnet networks: webnet:
一些经常使用指令:
docker stack ls
docker stack ps getstartedlab
docker service ls
docker service ps getstartedlab_web
docker-machine ls
docker-machine env
docker-machine ssh myvm1 "docker node ls"
docker-machine env myvm1