玩一玩docker自動編排工具——docker compose的介紹和使用

玩一玩docker自動編排工具——docker compose

前言

​ 上兩篇文章都是再玩兒Dockerfile,主要是基於Dockerfile構建各類服務鏡像。而本文將介紹及演示docker的自動編排工具——docker compose的概念和使用。html

什麼是docker compose?

​ 先前咱們在使用Dockerfile構建鏡像時,在編寫好Dockerfile文件以及其餘必要文件後,須要使用docker build 、docker run 等命令操做{建立,啓動,中止等}容器。然而,在微服務架構體系中,一個應用系統通常包含若干個服務器,每一個微服務一般都會部署多個實例,若是每一個服務都要手動啓停,那麼這樣效率過低了,並且維護也很是不方便。nginx

​ 所以,便有了docker compose,它能夠輕鬆、高效地管理容器,是一個用於定義和運行多容器docker的應用程序工具。web

下面結合實際例子來使用如下docker compose工具吧,以後會給出編排文件經常使用的字段介紹以及docker-compose的相關命令介紹。docker

基於docker compose工具構建nginx容器服務

首先,咱們須要建立一個目錄,其中須要包含一個構建Dockerfile的nginx目錄,首頁頁面測試目錄以及docker-compose.yml文件shell

因此,一方面咱們須要docker安裝環境,也須要安裝docker compose工具;centos

再者,依舊是須要編寫nginx服務的Dockerfile和運行腳本,結合指定的頁面目錄來進行測試驗證;bash

接下來,編寫yml格式的docker-compose.yml文件,而且執行對應的命令。服務器

下面是這個案例的目錄結構網絡

[root@localhost opt]# tree compose_nginx/
compose_nginx/
├── docker-compose.yml
├── nginx
│?? ├── Dockerfile
│?? └── nginx.sh
└── wwwroot
    └── index.html

2 directories, 4 files

Dockerfile以及對應的文件都無需更改,咱們須要作的就是編寫一個首頁頁面架構

[root@localhost opt]# cat compose_nginx/wwwroot/index.html 
<h1>this is test web</h1>

接着編寫docke-compose.yml文件

[root@localhost opt]# cat compose_nginx/docker-compose.yml 
version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1216:80
      - 1217:443
    networks:
      - cluster
    volumes:
      - ./wwwroot:/usr/local/nginx/html
networks:
  cluster:

docker-compose.yml文件解釋

version:聲明版本,目前是3
service:具體的服務
nginx:服務名稱
hostname:容器主機名稱
build:建立
context:提供資源和素材提供的目錄,用來建立容器的路徑
dockerfile:Dockerfile文件
ports:提供的端口,至關於執行docker run -p的設置
networks:網絡名稱,若是是羣集那麼這個名稱設置須要一致(同一個網絡環境)
volumes:數據卷,本次案例是提供首頁頁面
networks:services的子選項針對外公開的網絡名稱

啓動運行

[root@localhost opt]# docker-compose -f compose_nginx/docker-compose.yml up -d
#-f——指定文件   -d——後臺 up——啓動
....//第一次執行過程比較久,顯示信息多,這裏就省略了。

運行的結果和一些解釋以下圖

玩一玩docker自動編排工具——docker compose的介紹和使用

若是重複執行上述命令則會出現如下結果,所以這個WARNING是一個比較友好的提示哦!

[root@localhost opt]# docker-compose -f compose_nginx/docker-compose.yml up -d
compose_nginx_nginx_1 is up-to-date

查看鏡像和容器

[root@localhost opt]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx   latest              67f9a64cc32d        5 minutes ago       587MB
centos                7                   5e35e350aded        5 months ago        203MB
[root@localhost opt]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
8f3d48d7c765        compose_nginx_nginx   "/nginx.sh"         5 minutes ago       Up 5 minutes        0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1

測試驗證:

玩一玩docker自動編排工具——docker compose的介紹和使用

Docker compose配置經常使用字段(.yml文件中)

玩一玩docker自動編排工具——docker compose的介紹和使用

Docker compose經常使用命令(bash終端)

玩一玩docker自動編排工具——docker compose的介紹和使用

相關文章
相關標籤/搜索