Docker Compose 容器編排設定詳解!!

2020-09-27 08:01:04


定義

Docker Compose是容器編排工具,用來定義和執行由多個容器組成的應用。使用 compose,可以通過
yaml檔案定義應用程式的各個服務,並由單個命令完成應用的建立和啟動。允許使用者在一個模板(yaml格式)中定義一組相關聯的容器,會根據–link等引數,對啟動的優先順序進行排序。

mark

一:Docker Compos容器編排

YUML是一種 標示語言很直觀的資料序列化格式

檔案格式及編寫注意事項

  • 不支援製表符tab鍵縮排,需要使用空格縮排

  • 通常開頭縮排兩個空格

  • 字元后縮排1個空格,如冒號、逗號、橫杆

  • 用#號註釋

  • 如果包含特殊字元用單引號引起來

  • 布林值必須用引號括起來

1.1:Docker Compose設定常用欄位

mark

1.2:Docker Compose常用命令

docker-compose -h                           # 檢視幫助
docker-compose up                           # 建立並執行所有容器
docker-compose up -d                        # 建立並後臺執行所有容器
docker-compose ps                           # 顯示所用容器資訊
docker-compose -f docker-compose.yml up -d  # 指定模板
docker-compose down                         # 停止並刪除容器、網路、卷、映象。
docker-compose rm                           # 刪除容器
docker-compose logs                         # 檢視容器輸出紀錄檔
docker-compose pull                         # 拉取依賴映象
dokcer-compose config                       # 檢查設定
dokcer-compose config -q                    # 驗證yaml組態檔是否正確,有問題才有輸出
docker-compose pause                        # 暫停容器
docker-compose unpause                      # 恢復暫停
docker-compose restart                      # 重新啟動服務
docker-compose start                        # 啟動服務
docker-compose stop                :         # 停止服務

1.3:Compose命令說明

  • 基本的使用格式
docker-compose [options][COMMAND][ARGS...]
  • docker-compose選項
--verbose    輸出更多偵錯資訊
--version     列印版本並退出
-f,--file FILE使用特定的compose模板檔案,預設為docker-compose.yml
-p,--project-name NAME指定專案名稱,預設使用目錄名稱

二:編排範例

2.1:下載docker-compose

[root@localhost ~]# rz -E
rz waiting to receive.

#給下載好的docker-compose賦予許可權
[root@localhost ~]# chmod +x docker-compose 

#將下載好的docker-compose複製到/usr/local/bin目錄下
[root@localhost ~]# cp -p docker-compose /usr/local/bin/

2.2:建立工作目錄

(將nginx軟體包拷貝到nginx目錄下)

[root@localhost compose_nginx]# mkdir nginx
[root@localhost compose_nginx]# cd nginx/
[root@localhost nginx]# vim Dockerfile

FROM centos:7
RUN yum -y update
RUN yum -y install pcre-devel zlib-devel gcc gcc-c++ make
RUN useradd -M -s /sbin/nologin nginx
ADD nginx-1.12.0.tar.gz /usr/local/src
WORKDIR /usr/local/src
WORKDIR nginx-1.12.0
RUN ./configure \
--prefix=/usr/local/nginx \
--user=nginx \
--group=nginx \
--with-http_stub_status_module && make && make install
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
EXPOSE 443
RUN echo "daemon off;">>/usr/local/nginx/conf/nginx.conf
ADD run.sh /run.sh
RUN chmod 755 /run.sh
CMD ["/run.sh"]

'//編寫啟動指令碼'
[root@localhost nginx]# vim run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx

#把nginx包複製到nginx目錄
[root@localhost nginx]# ls
Dockfile  nginx-1.12.0.tar.gz  run.sh

2.3:建立編輯 yml 檔案

[root@localhost nginx]# cd ..
[root@localhost compose_nginx]# vim 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:  

2.4:執行開啟,tree檢視結構

#執行開啟
[root@localhost compose_nginx]# docker-compose -f docker-compose.yml up -d

[root@localhost compose_nginx]# ls
docker-compose.yml  nginx  wwwroot

#在站點目錄下建立一個網頁,用瀏覽器存取是否可以正常顯示
[root@localhost compose_nginx]# cd wwwroot/
'//編寫站點資訊'
[root@localhost wwwroot]# vim index.html

<h1>this is shuai web</h1>

#下載tree檢視組織結構
[root@localhost compose_nginx]# yum install tree -y

[root@localhost compose_nginx]# tree ./
./
├── docker-compose.yml
├── nginx
   ├── Dockerfile
   ├── nginx-1.12.0.tar.gz
   └── run.sh
└── wwwroot
    └── index.html
  • 檢視映象和容器是否都創意成功:
[root@localhost compose_nginx]# docker images
REPOSITORY            TAG                 IMAGE ID            CREATED             SIZE
compose_nginx_nginx   latest              178d32644ae3        13 minutes ago      480MB
centos                7                   7e6257c9f8d8        6 weeks ago         203MB

#檢視容器
[root@localhost compose_nginx]# docker ps -a
CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                                         NAMES
0874ae4fe802        compose_nginx_nginx   "/run.sh"           13 minutes ago      Up 13 minutes       0.0.0.0:1216->80/tcp, 0.0.0.0:1217->443/tcp   compose_nginx_nginx_1
8fb37f271c31        centos:7              "/bin/bash"         2 hours ago         Up 2 hours                                                      niu

2.5:瀏覽器存取(本機IP地址為):20.0.0.42:1216

mark
本次實驗結束感謝觀看.