نشر Kubernetes مع Kubeadm على CentOS 7
نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في
عادة ما تتكون تطبيقات PHP من خادم ويب ونظام قاعدة بيانات علائقية ومترجم لغة نفسه. في هذا البرنامج التعليمي ، سنستفيد من مجموعة تطبيقات PHP الكاملة باستخدام عامل إرساء. هذا هو برنامج تعليمي متعمق سنقوم فيه بإنشاء وتنسيق حاويات لـ Nginx (خادم الويب) و MySQL (نظام قاعدة البيانات) و PHP.
من أجل هذا البرنامج التعليمي ، سنكتب تطبيقًا بسيطًا يقرأ قائمة المدن من قاعدة بيانات ويعرضها على صفحة ويب ، وبهذه الطريقة سنعرض تطبيق PHP أساسي ، ولكنه عامل.
يفترض هذا الدليل أن لديك Docker-CE مثبتة بالفعل وأن يكون لديك على الأقل الحد الأدنى من المعرفة العملية عن عامل الميناء. لهذه المسألة يمكنك مراجعة الدروس التالية:
عادة ما يتكون التطبيق القائم على عامل الميناء الحقيقي من عدة حاويات. يمكن أن تصبح إدارة هذه يدويًا بسهولة فوضويًا ومرهقًا. وهنا يأتي دور إنشاء عامل الميناء. يساعدك على إدارة عدد من الحاويات من خلال yaml
ملف تكوين بسيط .
تثبيت Docker-compose.
curl -L https://github.com/docker/compose/releases/download/1.19.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
قم بإنشاء مجلد لاحتواء جميع الملفات الضرورية لهذا المثال ثم cd
في ذلك. من الآن فصاعدًا ، هذا هو دليل العمل لدينا وسيتم تنفيذ كل أمر داخل هذا المجلد وسيتم الرجوع إلى كل مسار بالنسبة إليه. قد تتم الإشارة إلى هذا المجلد لاحقًا باسم WORKING_DIR
.
mkdir ~/docker
cd ~/docker
الآن قم بإنشاء ثلاثة مجلدات أخرى.
mkdir php nginx app
في php
المجلد حيث سنقوم بناء صورتنا PHP العرف، و nginx
سوف تعقد مجلد الملفات الضرورية لصورتنا إنجن إكس العرف و app
المجلد حيث سنكون وضع شفرة المصدر وتكوين تطبيق عينة لدينا.
في هذا المثال ، سنستخدم php-fpm
للاتصال بخادم ويب Nginx. سنستخدم صورة PHP الأساسية الرسمية. ومع ذلك ، نحتاج أيضًا إلى تثبيت بعض الملحقات وتمكينها حتى نتمكن من الوصول إلى قاعدة البيانات. داخل php
المجلد ، قم بإنشاء ملف مسمى Dockerfile
ووضع المحتويات التالية فيه.
FROM php:7.1-fpm-alpine3.4
RUN apk update --no-cache \
&& apk add --no-cache $PHPIZE_DEPS \
&& apk add --no-cache mysql-dev \
&& docker-php-ext-install pdo pdo_mysql
لاحظ أننا نستخدم نسخة جبال الألب من صورة PHP الرسمية. Alpine هو توزيع صغير للغاية يستهدف الحاويات عن طريق توفير آثار أقدام أصغر بكثير. لاحظ أيضًا استخدام الأمر docker-php-ext-install
، حيث توفر صورة PHP الرسمية هذا الأمر لتسهيل عملية تثبيت ملحقات PHP وتكوينها.
الآن ، دعنا نبني صورة Docker هذه من خلال إصدار ما يلي (داخل موقعنا WORKING_DIR
):
docker build -t vultr-php php/
docker-compose.yml
ملفكما ذكرنا من قبل ، docker-compose
يسمح لك بإدارة عدد من الحاويات من خلال ملف تكوين بسيط. عادةً ما يتم تسمية ملف التكوين هذا docker-compose.yml
. قم بإنشاء هذا الملف داخل app
المجلد.
touch app/docker-compose.yml
الآن ضع المحتويات التالية في هذا الملف.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
سنشرح هذا النحو. أولاً ، لاحظ السطر الأول.
version: '2'
يحدد هذا إصدار docker-compose.yml
ملف التكوين المستخدم. يحدد السطر التالي الخدمات ، أو بعبارة أخرى ، الحاويات المراد توفيرها.
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
لاحظ أن كل خدمة لها مفتاح محدد داخل services
الكتلة. سيتم استخدام الاسم المحدد هنا للإشارة إلى هذه الحاوية المحددة لاحقًا. لاحظ أيضًا أنه داخل php
التكوين ، نحدد الصورة المستخدمة لتشغيل الحاوية (هذه هي الصورة التي أنشأناها سابقًا). نحدد أيضًا تعيين حجم.
volumes:
- ./:/app
docker-compose
يشير هذا إلى تعيين الدليل الحالي ( ./
) إلى /app
الدليل داخل الحاوية. يقوم السطر الأخير بتعيين /app
المجلد داخل الحاوية كدليل العمل ، مما يعني أن هذا هو المجلد حيث يتم تنفيذ جميع الأوامر المستقبلية داخل الحاوية افتراضيًا من.
يمكننا الآن تنظيم حاوياتنا.
cd ~/docker/app
docker-compose up -d
يمكنك تشغيل الأمر التالي للتأكد من تنفيذ حاوية PHP:
docker ps
لا يزال داخل app
المجلد ، يمكننا تشغيل أي أمر داخل حاوية خدمة محددة بمساعدة docker-compose
الأمر.
docker-compose exec [service] [command]
و [service]
يشير النائب إلى مفتاح الخدمة. في حالتنا ، كان هذا php
. لنقم بتشغيل أمر داخل الحاوية للتحقق من إصدار PHP الخاص بنا.
docker-compose exec php php -v
سترى الناتج التالي.
PHP 7.1.14 (cli) (built: Feb 7 2018 00:40:45) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
تمامًا مثل حاوية PHP ، نحتاج إلى إنشاء صورة مخصصة لخادم الويب. ولكن في هذه الحالة ، نحن بحاجة فقط إلى توفير تكوين لدينا virtual host
. تأكد من أنك داخل موقعنا WORKING_DIR
وأنشئ المجلد Dockerfile
داخل nginx
:
cd ~/docker
touch nginx/Dockerfile
الآن ضع المحتويات التالية في هذا Dockerfile
:
FROM nginx:1.13.8-alpine
COPY ./default.conf /etc/nginx/conf.d/default.conf
نحن نستخدم صورة Nginx الافتراضية القائمة على Alpine. في ملف Docker هذا ، نقوم ببساطة بنسخ ملف تكوين إلى إعداد التطبيق الخاص بنا. قبل إنشاء هذه الصورة ، قم بإنشاء ملف تكوين.
touch nginx/default.conf
الآن ملأها بهذا المحتوى.
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /app;
index index.php;
#server_name server_domain_or_IP;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
try_files $uri /index.php =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
لاحظ أنه في fastcgi_pass php:9000
السطر نشير إلى حاوية PHP باسمها داخل service
كتلة docker-compose.yml
ملف التكوين. داخليًا docker-compose
إنشاء شبكة وتعيين اسم الخدمة كاسم المضيف لكل من الخدمات المحددة. يمكننا الآن بناء صورة Nginx.
docker build -t vultr-nginx nginx/
docker-compose.yml
الآن قم بتحديث app/docker-compose.yml
الملف.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
لقد أضفنا فقط خدمة جديدة. التكوين هو نفسه تقريبًا ، باستثناء ما يلي.
depends_on:
- php
ports:
- 80:80
بمجرد أن تحتاج حاوية Nginx إلى تهيئة خدمة PHP بالكامل ، فإننا نفرض هذا الشرط في depends_on
الخيار. يعيّن ports
مفتاح التكوين منفذ مضيف إلى منفذ حاوية ، وهنا نقوم بتعيين المنفذ 80
في المضيف إلى المنفذ الموجود 80
في الحاوية.
الآن قم بإنشاء ملف يسمى index.php
داخل app
المجلد ووضع ما يلي فيه.
<?php phpinfo();
تأكد من 80
إمكانية الوصول إلى المنفذ من خلال جدار الحماية الخاص بك وقم بتنفيذ ما يلي.
cd ~/docker/app
docker-compose up -d
مرة أخرى ، تحقق جيدًا من انتهاء الخدمة.
docker ps
افتح متصفحًا وادخل [vultr-instance-ip]
. يمكنك معرفة عنوان IP لمثيل Vultr عن طريق تشغيل ما يلي.
hostname -I
سترى صفحة معلومات PHP.
تسمح لك صورة MySQL الرسمية بتهيئة الحاوية من خلال متغيرات البيئة البسيطة. يمكن القيام بذلك من خلال environment
خيار داخل تعريف كتلة الخدمة. قم بتحديث ~/docker/app/docker-compose.yml
الملف لما يلي.
version: '2'
services:
php:
image: vultr-php
volumes:
- ./:/app
working_dir: /app
web:
image: vultr-nginx
volumes:
- ./:/app
depends_on:
- php
ports:
- 80:80
mysql:
image: mysql:5.7.21
volumes:
- ./:/app
- dbdata:/var/lib/mysql
environment:
- MYSQL_DATABASE=world
- MYSQL_ROOT_PASSWORD=root
working_dir: /app
volumes:
dbdata:
الآن قمنا بتحديد خدمة جديدة لقاعدة البيانات. لاحظ الخط dbdata:/var/lib/mysql
. يؤدي هذا إلى تثبيت المسار على الحاوية /var/lib/mysql
إلى وحدة تخزين ثابتة يديرها Docker ، وبهذه الطريقة تستمر بيانات قاعدة البيانات بعد إزالة الحاوية. يجب تحديد وحدة التخزين هذه في كتلة المستوى الأعلى كما ترى في نهاية الملف.
قبل تنسيق تكويننا الجديد ، لنقم بتنزيل نموذج لقاعدة بيانات MySQL. و ثائق رسمية الخلية يوفر بعض نماذج قواعد البيانات. سنستخدم قاعدة بيانات العالم المعروفة. توفر قاعدة البيانات هذه قائمة بالدول والمدن. لتنزيل هذه العينة ، قم بتنفيذ ما يلي داخل مجلد التطبيق الخاص بنا.
curl -L http://downloads.mysql.com/docs/world.sql.gz -o world.sql.gz
gunzip world.sql.gz
يتيح الآن تنسيق حاوياتنا.
docker-compose up -d
كما لاحظت بالفعل ، docker-compose up
يبدأ الأمر فقط الحاويات التي لم تبدأ بالفعل. يتحقق من الاختلافات بين ملفك docker-compose.yml
والتكوين الحالي للحاويات الجاري تشغيلها.
مرة أخرى ، تحقق من بدء تشغيل حاوية MySQL.
docker ps
الآن ملء قاعدة بيانات العالم.
docker-compose exec -T mysql mysql -uroot -proot world < world.sql
يمكنك التحقق من تعبئة قاعدة البيانات عن طريق تحديد البيانات مباشرة من قاعدة البيانات. قم أولاً بالوصول إلى موجه MySQL داخل الحاوية.
docker-compose exec mysql mysql -uroot -proot world
في موجه MySQL ، قم بتشغيل ما يلي.
select * from city limit 10;
سترى قائمة المدن. الآن قم بإنهاء موجه MySQL.
mysql> exit
الآن بعد أن أصبحت جميع الحاويات الضرورية جاهزة للعمل ، يمكننا التركيز على تطبيقنا النموذجي. قم بتحديث app/index.php
الملف لما يلي.
<?php
$pdo = new PDO('mysql:host=mysql;dbname=world;charset=utf8', 'root', 'root');
$stmt = $pdo->prepare("
select city.Name, city.District, country.Name as Country, city.Population
from city
left join country on city.CountryCode = country.Code
order by Population desc
limit 10
");
$stmt->execute();
$cities = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>
<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Vultr Rocks!</title>
</head>
<body>
<h2>Most Populous Cities In The World</h2>
<table>
<thead>
<tr>
<th>Name</th>
<th>Country</th>
<th>District</th>
<th>Population</th>
</tr>
</thead>
<tbody>
<?php foreach($cities as $city): ?>
<tr>
<td><?=$city['Name']?></td>
<td><?=$city['Country']?></td>
<td><?=$city['District']?></td>
<td><?=number_format($city['Population'], 0)?></td>
</tr>
<?php endforeach ?>
</tbody>
</table>
</body>
</html>
إذا قمت بالوصول [vultr-instance-ip]
في مستعرض ويب ، فسترى قائمة بأكثر المدن اكتظاظًا بالسكان في العالم. تهانينا ، لقد قمت بنشر تطبيق PHP يعمل بشكل كامل باستخدام docker.
في هذا البرنامج التعليمي ، عرضت خطوة بخطوة كيفية تكوين تطبيق PHP يعمل بشكل كامل. قمنا ببناء صور مخصصة لـ PHP و Nginx ، وقمنا بتكوين رصيف الميناء لتنسيق حاوياتنا. على الرغم من كونه بسيطًا وبسيطًا للغاية ، إلا أن هذا الإعداد يعكس سيناريو الحياة الحقيقية.
في هذا الدليل ، قمنا بتصميم صورنا ووضع علامات عليها محليًا. لإعداد أكثر مرونة ، يمكنك دفع هذه الصور إلى سجل عامل الميناء . يمكنك الدفع إلى سجل عامل الميناء الرسمي أو حتى إعداد سجل عامل الميناء الخاص بك. على أي حال ، سيسمح لك هذا ببناء صورك على مضيف واحد واستخدامها على مضيف آخر.
لاستخدام أكثر تفصيلاً docker-compose
، يجب الرجوع إلى الوثائق الرسمية .
بناءً على متطلبات التطبيق وإطار عمل PHP الذي تستخدمه ، قد ترغب في إضافة المزيد من الإضافات. يمكن القيام بذلك بسهولة عن طريق تعديل Dockerfile
المستخدمة لبناء صورة PHP المخصصة لدينا. ومع ذلك ، تحتاج بعض الإضافات إلى تثبيت تبعيات إضافية في الحاوية. يجب عليك الرجوع إلى قائمة الإضافات في وثائق PHP الرسمية لمراجعة المتطلبات الأساسية لكل ملحق.
نظرة عامة تهدف هذه المقالة إلى مساعدتك في إنشاء مجموعة Kubernetes وتشغيلها باستخدام kubeadm في لمح البصر. سيقوم هذا الدليل بنشر خادمين في
مقدمة Docker هو تطبيق يسمح لنا بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب بلغة البرمجة Go الشهيرة
ستوضح لك هذه المقالة كيفية نشر تطبيق Node داخل حاوية Docker. ملاحظة: يفترض هذا البرنامج التعليمي أنك قمت بتثبيت Docker وقراءته
حاويات LXC (حاويات Linux) هي إحدى ميزات نظام التشغيل في Linux والتي يمكن استخدامها لتشغيل العديد من أنظمة Linux المعزولة على مضيف واحد. هذه
Kubernetes هو نظام أساسي مفتوح المصدر تم تطويره بواسطة Google لإدارة التطبيقات في حاويات عبر مجموعة من الخوادم. إنه يبني على عقد و
استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة
تشرح هذه المقالة كيفية تثبيت Docker-compose على CoreOS. في CoreOS ، المجلد / usr / غير قابل للتغيير بحيث لا يتو��ر المسار القياسي / usr / local / bin
نعلم جميعًا ونحب Docker ، وهي منصة لإنشاء وإدارة وتوزيع حاويات التطبيقات عبر أجهزة متعددة. تقدم شركة Docker Inc. خدمة ر
استخدام نظام مختلف؟ مقدمة Rancher هي منصة مفتوحة المصدر لتشغيل الحاويات وبناء خدمة حاويات خاصة. رانشر هو القاعدة
استخدام نظام مختلف؟ مقدمة يحول Docker Swarm خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ، مما يسهل القياس والتوافر العالي
استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. تمت كتابته في برنامج Go
نظرة عامة RancherOS هو نظام تشغيل خفيف الوزن بشكل لا يصدق (حوالي 60 ميجا بايت فقط) يقوم بتشغيل برنامج Docker daemon باسم PID 0 لتشغيل خدمات النظام
استخدام نظام مختلف؟ مقدمة يحول Docker Swarm خوادمك الفردية إلى مجموعة من أجهزة الكمبيوتر ؛ تسهيل التوسع ، وتوافر عالية
يوضح هذا البرنامج التعليمي أساسيات البدء مع Docker. أفترض أن لديك Docker مثبتة بالفعل. ستعمل الخطوات في هذا البرنامج التعليمي على
عند تشغيل تطبيق ويب ، تحتاج عادةً إلى تحقيق أقصى استفادة من مواردك دون الحاجة إلى تحويل البرنامج الخاص بك لاستخدام مؤشرات متعددة
المتطلبات الأساسية محرك Docker 1.8+. 4 جيجابايت على الأقل من مساحة القرص. 4 غيغابايت على الأقل من ذاكرة الوصول العشوائي. الخطوة 1. تثبيت Docker من أجل تثبيت SQL-Server ، Docker mus
استخدام نظام مختلف؟ مقدمة Docker هو تطبيق يسمح بنشر البرامج داخل حاويات افتراضية. هو مكتوب في G
استخدام نظام مختلف؟ Docker هو تطبيق يسمح بنشر البرامج التي يتم تشغيلها كحاويات. وقد كتب في برنامج Go الشهير
مقدمة سيوضح لك هذا الدليل كيفية إنشاء وتكوين سرب Docker باستخدام عدة خوادم Alpine Linux 3.9.0 و Portainer. يرجى الانتباه إلى ذلك
نظرة ثاقبة على 26 أسلوبًا لتحليل البيانات الضخمة: الجزء الأول
يعرف الكثير منكم أن Switch سيصدر في مارس 2017 وميزاته الجديدة. بالنسبة لأولئك الذين لا يعرفون ، قمنا بإعداد قائمة بالميزات التي تجعل "التبديل" "أداة لا غنى عنها".
هل تنتظر عمالقة التكنولوجيا للوفاء بوعودهم؟ تحقق من ما تبقى دون تسليم.
اقرأ المدونة لمعرفة الطبقات المختلفة في بنية البيانات الضخمة ووظائفها بأبسط طريقة.
اقرأ هذا لمعرفة مدى انتشار الذكاء الاصطناعي بين الشركات الصغيرة وكيف أنه يزيد من احتمالات نموها ومنح منافسيها القدرة على التفوق.
لقد أصبح حل CAPTCHA صعبًا جدًا على المستخدمين في السنوات القليلة الماضية. هل ستكون قادرة على أن تظل فعالة في اكتشاف البريد العشوائي والروبوتات في المستقبل القريب؟
مع تطور العلم بمعدل سريع ، واستلام الكثير من جهودنا ، تزداد أيضًا مخاطر تعريض أنفسنا إلى تفرد غير قابل للتفسير. اقرأ ، ماذا يمكن أن يعني التفرد بالنسبة لنا.
ما هو التطبيب عن بعد والرعاية الصحية عن بعد وأثره على الأجيال القادمة؟ هل هو مكان جيد أم لا في حالة الوباء؟ اقرأ المدونة لتجد طريقة عرض!
ربما سمعت أن المتسللين يكسبون الكثير من المال ، لكن هل تساءلت يومًا كيف يجنون هذا النوع من المال؟ دعنا نناقش.
أصدرت Apple مؤخرًا macOS Catalina 10.15.4 تحديثًا تكميليًا لإصلاح المشكلات ولكن يبدو أن التحديث يتسبب في المزيد من المشكلات التي تؤدي إلى إنشاء أجهزة macOS. قراءة هذه المادة لمعرفة المزيد