compose 翻譯成中文的意思是"構成"和"組成"的意思。Docker我以前把他比做一個大輪船,這個輪船上面能夠放不少不少的箱子。這個箱子咱們能夠看作是一個個的容器(container)。那麼Docker-compose能夠看到是就是把一個個箱子組合在一塊兒成爲一個大總體的意思。能夠統一卸貨,上貨。放在咱們的應用中就是能夠經過Docker-compose管理咱們容器(container)。這裏只是一個通俗的比喻。理論至少能夠參考Docker-compose官方文檔 。node
docker-compose 是一個用來把 docker 自動化的東西,有了 docker-compose 你能夠把全部繁複的 docker 操做簡化成一條命令,自動化的完成。他有如下幾個特色:git
實時的日誌輸出
使用docker-compose能夠大大減小docker的部署時間。減小加班。比較有時間能夠多多陪陪家人。github
#檢查docker版本 sudo docker -v #檢查Docker-compose的版本。 sudo docker-compose -v #安裝Docker-compose命令。安裝完成以後再次使用上面命令檢查版本。 https://github.com/docker/compose/releases/download/1.6.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose #若是提示Permission denied。執行如下語句賦權 sudo chmod +x /usr/local/bin/docker-compose
#如下全部命令須要和d.yml在同一目錄。也能夠經過 -f 執行.yml文件 #查看當前容器運行的狀態。顯示容器名稱|執行腳本|當前運行狀態|當前監聽端口信息。 指定.yml文件用法 sudo docker-compose -f ./docker-compose.yml ps sudo docker-compose ps #重啓或者重啓某個服務 sudo docker-compose restart ||sudo docker-compose xxxx sudo docker-compose restart #構建服務 sudo docker-compose build #顯示日誌 sudo docker-compose logs #-d表示後臺。up命令會構建,(從新)建立,啓動,連接一個服務相關的容器。默認狀況下若是容器已經存在,將會中止並嘗試從新建立他們。並使用以前掛載的卷。 # --no-recreate參數可讓容器不被中止或者從新建立 sudo docker-compose up -d #stop和start中止當前運行的某個容器 sudo docker-compose stop xxxx sudo docker-compose start xxxx #中止全部容器,並刪除容器 docker-compose down
docker-compose的配置文件是以.yml爲後綴的。通常文件名默認爲docker-compose.yml。固然也能夠本身定義。首先咱們須要建立一個.yml文件,我這裏仍是之前docke入門那個images爲例。這裏推薦一個插件。如何你用的是vscode的話,能夠試試。地址 他能夠很方便的幫咱們編寫Dockerfile和docker-compose.yml文件。docker
mkdir docker-compose cd docker-compose touch docker-compose.yml vi docker-compose.yml
而後寫入如下內容。npm
version: '2.1' services: docker_demo: image: docker_demo build: . environment: NODE_ENV: production ports: - 8000:3000
保存完成以後。在當前目錄下面運行瀏覽器
#啓動命令 robin:docker-compose robin$ sudo docker-compose up -d Recreating dockercompose_docker_demo_1 ... done #查看當前容器運行狀態 robin:docker-compose robin$ sudo docker-compose ps Name Command State Ports ----------------------------------------------------------------------------------- dockercompose_docker_demo_1 /bin/sh -c npm start Up 0.0.0.0:9000->3000/tcp robin:docker-compose robin$ #顯示logs robin:docker-compose robin$ sudo docker-compose logs Attaching to dockercompose_docker_demo_1 docker_demo_1 | docker_demo_1 | > docker_demo@0.1.0 start /usr/src/app docker_demo_1 | > node server.js docker_demo_1 | robin:docker-compose robin$
而後帶來瀏覽器輸入http://localhost:9000 就能夠看到咱們熟悉的"Hello docker"。app
#版本 version: '2.1' #服務部門 services: #服務名稱 docker_demo: #鏡像名稱或者images id 。若是本地不存在本身會下載 image: docker_demo #使用up命令啓動時會執行構建任務。能夠指向 Dockerfile 文件。 build: . #環境變量 environment: NODE_ENV: production #監聽端口。對外暴露端口:容器內端口 ports: - 8000:3000
以上這個.yml的執行的結果和咱們以前使用 docker run -d -p 9000:3000 docker_demo
的效果一致。上面的docker-compose.yml比較簡單。也沒有用到volumes。只是用來入門。下篇會繼續詳細講解docker-compose。tcp