在docker中,透過執行一個YAML文件,將文件中所定義的多個容器依序啟動,這就是容器編排;實作容器編排的工具是「docker-compose」。 YAML檔案會定義一系列的容器以及容器執行時間的屬性,Compose會根據這些設定來管理容器。
本教學操作環境:linux5.9.8系統、docker-1.13.1版、Dell G3電腦。
#用來實作容器編排的工具
docker-compose
可以透過安裝Docker Compose工具來實現基於YAML檔案的容器編排,YAML檔案會定義一系列的容器以及容器執行時間的屬性,Docker Compose會根據這些配置來管理容器。
安裝docker-compose
[root@worker1 ~]# yum install epel-release -y [root@worker1 ~]# yum install docker-compose -y
docker-compose指令的使用
格式:docker-compose [選項]
-f x.yaml:指定docker-compose所要讀取的yaml檔案
-d:在背景執行動作ps:查看基於docker-compose所啟動的容器的狀態
logs:查收啟動容器過程中的日誌訊息,用於排除錯誤1)準備環境
重啟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
# 编写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
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 down3)在第二步驟的基礎上編輯yaml文件,啟動php服務
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運作是否正常,如沒有請安裝
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中文網其他相關文章!