docker基礎之compose檔案結構以及安裝工具(範例詳解)

2022-02-07 19:02:07
本篇文章給大家帶來了docker中compose的相關知識,其中包括了compose檔案結構以及安裝docker compose工具的相關知識,希望對大家有幫助。

什麼是docker compose?

docker compose是一個容器編排功能,將執行在不同容器中的不同伺服器進行編排,聯合在一起。

可以用於對多數容器進行統一管理:包括但不限於:網路、埠、掛載等可以用於實現容器的叢集化,相關於容器、映象的一系列操作,compose都可以進行操作,就是一個對於容器進行管理的功能

一、compose檔案結構

1、yml檔案

compose中檔案結構通常是指yml檔案的結構,那什麼是yml檔案?

yml檔案是一種鍵值對格式的檔案。

yml檔案對於格式非常的敏感,需要注意以下幾種事項:

  1. 只識別空格進行的縮排,不識別tab鍵的縮排形式
  2. 通常開頭部分縮排兩個空格
  3. 字元后面縮排一格空格,包括但不限於:冒號、逗號、橫槓等這些字元。字元后面必須縮排一格
  4. 支援使用#來進行註釋
  5. 如果包含特殊字元,需要使用單引號參照起來
  6. 布林值必須使用引號括起來

例如:

  house:
    family:
      name: Doe
      parents: 
        - John
        - Jane
      children: 
        - Paul
        - Mark
        - Simone
    address: 
      number: 34
      street: Main Street
      city: Nowheretown
      zipcode: 1234

yml檔案格式例如上面,需要進行一級級的對應,不同級之間,有兩個空格的間隔。

注:如果在一個層級中,一個鍵有多個值,可以使用在下一個層級,同樣是空餘兩格,以短橫槓起始,有幾個值寫幾個端橫槓

2、Compose設定常用的欄位

欄位描述
build dockerfile centext指定Dockerfile檔名構建映象上下文的路徑
images指定映象
command執行命令,覆蓋預設命令
container name指定容器名稱,由於容器名稱是唯一的。如果指定自定義名稱,則是無法建立scale
deploy指定部署和執行服務相關設定,只能再Swarm模式使用
environment新增環境變數
networks加入網路
ports暴露容器埠,與-p相同,但是埠號必須大於60
volumts掛載宿主機路徑或者命令卷
restart重新啟動策略,預設no,always, on-failure,unless-stoped
hostname容器主機名

build:構造一個映象時候的一個定義方式

dockerfile:方式是使用dockerfile的方式構建

context:服務docerfile檔案的路徑

images:可以指定使用的映象名字,例如:images: 映象名,注意:後面有個空格

command:執行一個語句

container name:用於指定容器的名稱,因為容器名字是唯一的。如果指定自定義名稱,則無法scale(設定副本集)

#副本集:將一個映象製作成多個容器,這多個容器之間,執行環境等方面都是一模一樣。當容器架構中的一個容器掛掉之後,可以直接啟動一個相同的容器,用以保持副本集的數量,這是副本集的概念,同樣也是K8s的核心。可以提高微服務的速度,提高容災,高並行效能

deploy:是一個控制器,在k8s中是控制管理副本集的一個外掛

restart:一種重新啟動策略,預設是關閉之後不啟動,如果always則是不管是手動關閉還是非手動關閉,都會自動把關閉狀態的容器啟動,unless-stoped只拉取關閉狀態的容器,on-failure,只會啟動容器返回碼非零的容器

3、Compose在外部的常用命令

欄位描述
build重新構建一個映象資訊
ps列出容器當前docker compose所控制的容器
up建立以及啟動容器
exec在容器內執行命令
scale指定一個伺服器的啟動數量,相當於副本集的數量
top顯示容器程序,所有docker compose控制的程序啟動的容器
logs檢視容器的輸出資訊
down刪除容器、網路、資料卷和映象
stop/start/restart停止/啟動/重新啟動容器服務

docker compose基本使用格式:docker-compose [options] [COMMAND] [ARGS…]

docker-compose選項

  1. –verbose:輸出更多偵錯資訊
  2. –version:列印版本並退出
  3. -f /–file FILE:使用特定的compose模板檔案,預設為docker-compose.yml
  4. -p /–project-name NAME:指定專案名稱,預設使用目錄名稱

二、安裝docker compose工具

1、下載

curl -L https://github.com/docker/compose/releases/download/1.23.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose

首次連線下載的時候,可能會提示失誤或者連線不上,可能是因為網路原因,可以多試幾次

2、新增許可權

檔案在剛下載之後,預設是沒有執行許可權的,所以需要手動新增執行許可權

chmod +x /usr/local/bin/docker-compos

3、執行docker-compose

docker-compose

可以看到,現在已經正常執行了

三、編譯映象

手動建立下面的檔案(dockerfile檔案之前有的話,直接拉取過來也是可以的)

tree
.
├── docker-compose.yml
├── nginx
│   ├── Dockerfile
│   ├── nginx-1.12.0.tar.gz
└── wwwroot
    └── index.html

其中yml檔案內部

cat docker-compose.yml

version: '3'
services:
  nginx:
    hostname: nginx
    build:
      context: ./nginx
      dockerfile: Dockerfile
    ports:
      - 1321:80
      - 1707:443
    networks:
      - cluster
    volumes:
      - ./wwwroot: /usr/local/nginx/html
networks:
  cluster:

nginx的dockerfile檔案

cat ./nginx/Dockerfile

FROM centos:7
ADD nginx-1.12.0.tar.gz /tmp
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make &> /dev/null \
    && useradd -M -s /sbin/nologin nginx \
    && cd /tmp/nginx-1.12.0/ \
    && ./configure \
    --prefix=/usr/local/nginx \
    --user=nginx \
    --group=nginx \
    --with-http_stub_status_module &> /dev/null \
    && make &> /dev/null \
    && make install &> /dev/null
VOLUME ["/usr/local/nginx/html"]
EXPOSE 80
CMD ["/usr/local/nginx/sbin/nginx","-g","daemon off;"]

index.html檔案中就是自己設定的網頁資訊,就不多做介紹了

確定之後,編譯

docker-compose -f docker-compose.yml up -d

檢視執行結果

docker ps -a

CONTAINER ID   IMAGE                 COMMAND                  CREATED              STATUS                      PORTS                                                                        NAMES
da38007f09ab   dockercompose_nginx   "/usr/local/nginx/sb…"   About a minute ago   Up About a minute           0.0.0.0:666->80/tcp, :::666->80/tcp, 0.0.0.0:667->443/tcp, :::667->443/tcp   dockercompose_nginx_1
#可以看到,這個埠資訊就是我們在yml檔案中設定的埠資訊,直接在這個生效了

docker images

REPOSITORY                TAG       IMAGE ID       CREATED         SIZE
dockercompose_nginx       latest    b1e4b9dfa72d   3 minutes ago   478MB

存取網址埠,檢視該網站頁面

curl 192.168.75.51:666
hello
#顯示結果
cat ./wwwroot/index.html
hello

推薦學習:《》

以上就是docker基礎之compose檔案結構以及安裝工具(範例詳解)的詳細內容,更多請關注TW511.COM其它相關文章!