首頁 > 運維 > Docker > 主體

什麼是docker 容器編排

青灯夜游
發布: 2021-12-30 16:24:57
原創
4882 人瀏覽過

在docker中,透過執行一個YAML文件,將文件中所定義的多個容器依序啟動,這就是容器編排;實作容器編排的工具是「docker-compose」。 YAML檔案會定義一系列的容器以及容器執行時間的屬性,Compose會根據這些設定來管理容器。

什麼是docker 容器編排

本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。

Docker容器編排

什麼是容器編排
  • 透過執行一個文件,將文件中所定義的多個容器依序啟動,這就是容器編排
  • 這個檔案就是yaml檔案

#用來實作容器編排的工具

  • docker-compose

    可以透過安裝Docker Compose工具來實現基於YAML檔案的容器編排,YAML檔案會定義一系列的容器以及容器執行時間的屬性,Docker Compose會根據這些配置來管理容器。

安裝docker-compose

  • #docker-compose在epel來源中
[root@worker1 ~]# yum install epel-release -y
[root@worker1 ~]# yum install docker-compose -y
登入後複製

docker-compose指令的使用

  • 格式:docker-compose [選項]

##up:啟動定義在yaml檔案中的容器
down:關閉定義在yaml檔案中的容器

-f x.yaml:指定docker-compose所要讀取的yaml檔案

-d:在背景執行動作

ps:查看基於docker-compose所啟動的容器的狀態

logs:查收啟動容器過程中的日誌訊息,用於排除錯誤
  • #案例:
編寫docker-compose.yaml檔案來啟動兩個容器:nginx,php

1)準備環境
  • #安裝epel
安裝docker-compose

重啟docker

重啟防火牆

[root@master ~]# yum install docker -y
[root@master ~]# yum install epel-release -y
[root@master ~]# yum install docker-compose -y
[root@master ~]# systemctl restart docker
[root@master ~]# systemctl restart firewalld
登入後複製

2)建立yaml檔案
  • # 编写yam文件,在文件实现自动启动nginx容器
    [root@worker1 ~]# vim docker-compose.yaml
    登入後複製
    version: '2'
    services:
      web:
        image: nginx:1.17.10
        ports:
          - 80:80
        volumes:
          - /opt/html:/web
          - /opt/conf/nginx.conf:/etc/nginx/nginx.conf
    登入後複製
version:指定版本號,2

services:設定要啟動服務,一個服務就是一個docker容器

2)nginx 啟動容器

[root@worker1 ~]# docker-compose up -d
登入後複製

查看基於yaml檔案啟動的容器的狀態

[root@master ~]# docker-compose ps
   Name            Command          State         Ports       
--------------------------------------------------------------
root_web_1   nginx -g daemon off;   Up      0.0.0.0:80->80/tcp
登入後複製

狀態主要是state:如果是UP,表示正常

查看啟動容器過程中的日誌訊息

[root@worker1 ~]# docker-compose logs
登入後複製

關閉基於yaml檔案所啟動的容器

[root@worker1 ~]# docker-compose down
登入後複製

3)在第二步驟的基礎上編輯yaml文件,啟動php服務

  • 第一步:修改yaml檔
version: '2'services:
  web:
    image: nginx
    ports:
      - 80:80
    volumes:
      - /opt/html:/web
      - /opt/conf/nginx.conf:/etc/nginx/nginx.conf
    links:               # 指定php容器的名称
      - php
  php:                   # 此处需要和links中的值保持一致
    image: php:5.6-fpm
    container_name: php   # 此处需要和links中的值保持一致
    volumes:
      - /opt/php:/php
登入後複製

第二步:修改nginx的設定檔
  • [root@master ~]# vi /opt/conf/nginx.conf 
            location ~ \.php$ {
                root           /php;
                fastcgi_pass   php:9000;    # 指定php容器名称,docker会自动将名称转换成ip
                fastcgi_index  index.php;     
                fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                include        fastcgi_params;
            }
    登入後複製
第三步:啟動服務

[root@master ~]# docker-compose up -d
[root@master ~]# docker-compose ps
Name         Command                        State         Ports       
-----------------------------------------------------------------------
php          docker-php-entrypoint php-fpm   Up           9000/tcp          
root_web_1   nginx -g daemon off;            Up           0.0.0.0:80->80/tcp
登入後複製

容器編排應用問題1

1 準備一台Centos7的伺服器,偵測網路正常

2 檢查伺服器docker運作是否正常,如沒有請安裝

  • #3 請撰寫wordpress.yml模板文件,格式正確

4 請新建服務mysql和wordpress,wordpress的啟動依賴mysql服務5 將/opt/wordpress/data目錄掛載到到mysql容器的/var/ lib/mysql目錄下,做持久儲存!

###6 MySQL初始資訊包括:root密碼,建立的資料庫,普通用戶,普通用戶的密碼######7 wordpress資料庫配置正確######8 wordpress做連接埠映射,將wordprss的80埠對映在宿主機的8000埠上###
# 这个yaml文件要启动两个容器
version: '2'
services:
  # 第一个容器:wordpress容器
  wordpress:
    # 指定镜像名称
    image: wordpress
    # 将容器的80端口映射到宿主机的8000
    ports:
      - 8000:80
    # 设置将mysql容器的名称解析程序mysql容器的IP
    links:
      - mysql
    # 设置容器之间依赖关系,设置成必须先启动mysql容器才启动wordpress容器
    depends_on:
      - mysql
  # 第二个容器:MySQL容器
  mysql:
    # 指定镜像名名称是mysql
    image: mysql:5.6
    # 设置容器的名称的是mysql
    container_name: mysql
    # 设置逻辑卷挂载
    volumes: 
      - /opt/wordpress/data:/var/lib/mysql 
    # 设置mysql容器的环境变量
    environment:
      # 设置mysql容器中mysql的root密码为123
      MYSQL_ROOT_PASSWORD: 123
      # 为wordpress创建一个数据库,库名是wordpress
      MYSQL_DATABASE: wp   
      # 创建一个普通用户wp
      MYSQL_USER: wp
      # 为上面的普通用户设置密码是wp
      MYSQL_PASSWORD: wp
登入後複製
###9 docker-compose成功啟動各個容器,成功存取到wordpress頁面###
[root@master ~]# docker-compose up -d
[root@master ~]# docker ps
登入後複製
#######瀏覽器存取:http:/ /ip:8000#########推薦學習:《###docker影片教學###》###

以上是什麼是docker 容器編排的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!