docker進階-初探Docker-compose

enter image description here

什麼是Docker-compose

  compose 翻譯成中文的意思是"構成"和"組成"的意思。Docker我以前把他比做一個大輪船,這個輪船上面能夠放不少不少的箱子。這個箱子咱們能夠看作是一個個的容器(container)。那麼Docker-compose能夠看到是就是把一個個箱子組合在一塊兒成爲一個大總體的意思。能夠統一卸貨,上貨。放在咱們的應用中就是能夠經過Docker-compose管理咱們容器(container)。這裏只是一個通俗的比喻。理論至少能夠參考Docker-compose官方文檔node

爲何要用Docker-compose

  docker-compose 是一個用來把 docker 自動化的東西,有了 docker-compose 你能夠把全部繁複的 docker 操做簡化成一條命令,自動化的完成。他有如下幾個特色:git

  • "一鍵"啓動,中止和重建服務
  • 能夠查看運行服務的狀態
  • 實時的日誌輸出
    使用docker-compose能夠大大減小docker的部署時間。減小加班。比較有時間能夠多多陪陪家人。github

    Docker-compose安裝和使用

    安裝
      要想安裝和使用Docker-compose必須保證當前本機的docker的版本大於1.3。首先檢查當前當前本機docke版本和檢查有沒有安裝Docker-compose:
#檢查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
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
編寫.yml文件

  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

docker-compose.yml文件結構參考
#版本
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

相關文章
相關標籤/搜索