花了一個晚上和一個上午的時間學習了一下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