是什麼html
Docker Compose 是一個容器編排的工具,經過編寫一個簡單的 yml 配置文件來定義應用程序所須要的全部服務(如 web 應用的 lamp),而後經過一個簡單的 docker-compose up 命令就能夠標準化的建立全部容器並啓動服務。mysql
docker-compose.ymlweb
一個簡單的示例sql
version: '3' # 版本,有1.x,2.x,3.x 跟docker 版本有對應關係,配置也有些差別,用新版就行了 services: # 定義一組服務 web: # 第一個服務 hostname: webapp # 給容器起個名字 build: # 指定鏡像來源,這是其中一種,使用 dockerfile 構建 context: ../ # docker run 運行的上下文路徑 dockerfile: build/Dockerfile # dockerfile 文件位置,注意跟上一個配置對應,不指定默認是當前目錄的 Dockerfile networks: # 指定網絡 - dev-local-network # 網絡名稱,須要先定義 depends_on: # 指定依賴服務,服務會在依賴服務啓動後再開啓 - mysql # 服務名稱 ports: # 端口映射 - "80:80" # 宿主機端口到容器端口的映射 volumes: # 宿主機的數據卷或文件掛載到容器裏 - ../:/var/www/html # 宿主機路徑:容器裏的路徑 environment: # 環境變量,有兩種方式,直接鍵值對或者 env_file OMS_DB_HOST: ${OMS_DB_HOST} # ${} 表示取配置文件裏的值,默認文件是當前默認的.env,也能夠--env-file 指定路徑 command: ["/usr/bin/supervisord", "-c", "/etc/supervisord.conf", "--nodaemon"] # 這是容器啓動後的第一個命令,注意是要在前臺的命令,不能執行完就結束了,否則容器啓動就關閉了 mysql: # 第二個服務了 image: "mysql:5.7" # 指定鏡像源的第二種方式,直接指定 image,這是是官方的 mysql 5.7版本 networks: # 定義網絡 dev-local-network: # 網絡名稱,上面用到的網絡就是這裏定義的
啓動docker
docker-compose -f .\build\docker-compose.yml --env-file .\build\.env up -d
-f 指定 yml 文件路徑,不指定默認爲當前目錄下的 docker-compose.yml 文件
--env-file 指定變量配置路徑,就是上面說到的 ${}, 默認當前目錄的 .env 文件,沒有也不要緊,就沒有配置
-d 表示後臺啓動網絡
中止app
docker-compose -f .\build\docker-compose.yml stop
服務中止,可是建立的容器仍然保留,下次能夠繼續使用webapp
銷燬工具
docker-compose -f .\build\docker-compose.yml down
服務中止後,一併把容器也刪除掉ui
volume 權限
volume 掛載的目錄默認與縮主機屬主和權限也相同,縮主機中屬主是 root,那在容器中對應的也是root,可是並非完整的縮主機的 root 權限,若是要以特權模式運行,能夠指定 --privileged 參數(慎用)。