Docker速學(四) 編排、叢集和常見命令總結
我們之前介紹了Docker學習的基本方法和原理,以及基礎三大件:映象、容器、倉庫。還有Dockerfile和資料卷等等,如果你對前面的內容還不瞭解,可以進行再次回顧。
預覽:
Docker小白入門建議及基本原理介紹
Docker速學(一) 映象和容器
Docker速學(二) Dockerfile和資料卷
Docker速學(三) 網路、使用者和程序
這篇內容是Docker速學系列的最後一篇內容,對docker的編排、叢集做了梳理,在文章最後,還總結了一些常見的命令。
讓我們開始今天的內容吧!
編排
編排就是將多個執行的容器串聯起來,最常見的編排工具是 Docker Compose。
範例
下面是 OnlyOffice 安裝所用的 docker-compose 配置檔案:
version: '2' services: onlyoffice-communityserver: container_name: onlyoffice-communityserver image: onlyoffice/communityserver:latest environment: - MYSQL_SERVER_HOST="127.0.0.1" - MYSQL_SERVER_PORT="3306" - MYSQL_SERVER_DB_NAME="onlyoffice" - MYSQL_SERVER_USER="onlyoffice" - MYSQL_SERVER_PASS="123456" - DOCUMENT_SERVER_PORT_80_TCP_ADDR=onlyoffice-documentserver stdin_open: true restart: always networks: - onlyoffice volumes: - /data/wwwroot/onlyoffice/CommunityServer/logs:/var/log/onlyoffice - /data/wwwroot/onlyoffice/CommunityServer/data:/var/www/onlyoffice/Data - /data/wwwroot/onlyoffice/CommunityServer/DocumentServer/data:/var/www/onlyoffice/DocumentServerData ports: - '80:80' - '443:443' - '5222:5222' onlyoffice-documentserver: container_name: onlyoffice-documentserver image: onlyoffice/documentserver:latest stdin_open: true restart: always networks: - onlyoffice ports: - '9002:80' - '9003:443' volumes: - /data/wwwroot/onlyoffice/DocumentServer/logs:/var/log/onlyoffice - /data/wwwroot/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data networks: onlyoffice: driver: 'bridge'
注意:
- volumes 設定中的前面部分是宿主機的目錄,後面是容器的目錄,宿主機的目錄無需提前建立
- 容器可以很方便的連線宿主機建立的資料庫,上面的onlyoffice-communityserver中的MySQL連線配置就是宿主機連線範例
指令用法
下面重點描述重要指令的用法:
command
command 指令會覆蓋 Dockerfile 中定義的 CMD 變數對應的值。
例如: command: bundle exec thin -p 3000
除了支援上述單一指令之外,也支援多指令的編寫。
多指令
version: '3.1' services: db: image: postgres web: build: . command: - /bin/bash - -c - | python manage.py migrate python manage.py runserver 0.0.0.0:8000 volumes: - .:/code ports: - "8000:8000" links: - db
以上編排中的 command 相當於 docker run 下的:command: bash -c "python manage.py migrate && python manage.py runserver 0.0.0.0:8000"
如果多指令涉及變數,也可以寫成:
command: - /bin/bash - -c - | var=$$(echo 'foo') echo $$var # prints foo
entrypoint
entrypoint 用法與 command 類似,也支援多命令。
叢集
容器技術不僅僅可以執行在單臺宿主機上,它也支援執行在多個主機叢集上。有兩種型別的流行叢集工具:
- Docker Swarm:Docker 官方出品的容器的叢集和排程工具。藉助 Swarm,IT 管理員和開發人員可以將 Docker 節點叢集建立和管理為單個虛擬系統。
- Kubernetes(k8s):跨主機叢集的自動部署、擴充套件以及執行應用程式容器的開源平臺,這些操作包括部署,排程和節點叢集間擴充套件。
常見命令
下面是使用Docker可能需要用到的常見命令
systemctl start/stop docker 執行/停止 docker 服務 systemctl enable docker 使 docker 開機自啟 docker pull 從映象庫拉取容器映象 docker ps 檢視正在執行的容器列表(可以看到容器ID,所對映的埠號等等) docker ps -a 檢視所有的容器(不管是否執行都能看到) docker start/stop CONTAINER ID 開始/停止容器(CONTAINER ID 是容器的ID) docker rm CONTAINER ID 刪除容器 docker stop $(docker ps -aq) 停止所有容器 docker rm $(docker ps -aq) 刪除所有容器 docker kill CONTAINER ID 直接關閉容器 docker rmi $(docker images -q) -f 刪除所有映象 docker images # 查詢已下載映象
到這裡,我們的Docker速學基礎入門系列就結束了,在全文裡,我們系統地介紹了docker的入門學習方法和應該掌握的各種知識和內容,還介紹了一個視覺化工具。我們也製作了相關軟體的安裝教程以及使用過程中的故障處理問題等文章,以便你的使用。
文章:
Docker視覺化工具——Portainer全解
視覺化Docker快速安裝部署教程
相信在學習之後,我們都有或多或少的收穫,而在日後的操作過程中,也歡迎大家和小九一起發現問題、提出問題、解決問題!我們將不斷進步!期待你的討論~
本文由Websoft9原創釋出,轉載請註明出處。