моя контактная информация
Почтамезофия@protonmail.com
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Compose — это инструментальное программное обеспечение, выпущенное компанией Docker, которое может управлять несколькими контейнерами Docker для формирования приложения. Вам необходимо определить файл конфигурации docker-compose.yml в формате YAML и написать отношения вызовов между несколькими контейнерами.Затем с помощью всего лишь одной команды вы можете запустить/остановить эти контейнеры одновременно.
Docker рекомендует запускать только один сервис в каждом контейнере. Поскольку сам докер-контейнер занимает очень мало ресурсов, лучше всего разделить каждый сервис отдельно. Но тогда мы сталкиваемся с другой проблемой?
Если мне нужно развернуть несколько сервисов одновременно, нужно ли мне писать отдельный Dockerfile для каждого сервиса, а затем создавать образ и контейнер? Это утомительно, поэтому docker официально предоставляет нам инструмент развертывания нескольких сервисов с помощью docker-compose? .
Например, для реализации проекта веб-микросервиса помимо самого контейнера веб-сервиса часто необходимо добавить сервис-контейнер серверной базы данных mysql, сервер Redis, центр регистрации eureka и даже контейнеры балансировки нагрузки и т. д. . . . . .
Compose позволяет пользователям определять набор связанных контейнеров приложений как проект с помощью отдельного файла шаблона docker-compose.yml (формат YAML).
Вы можете легко определить многоконтейнерное приложение с помощью файла конфигурации, а затем использовать одну команду для установки всех зависимостей приложения и завершения сборки. Docker-Compose решает проблему управления контейнерами и их оркестрации.
Адрес ускоренной загрузки
sudo curl -L https://get.daocloud.io/docker/compose/releases/download/1.29.2/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose
Добавить разрешения на исполняемый файл
chmod +x /usr/local/bin/docker-compose
Проверьте, прошла ли установка успешно
docker-compose --version
удалить
sudo rm / usr/ local/ bin/docker-compose
Три шага для использования Compose
Напишите Dockerfile, чтобы определить каждое приложение микросервиса и создать соответствующий файл образа.
Используйте docker-compose.yml, чтобы определить целое бизнес-подразделение и организовать различные контейнерные службы в общем приложении.
Наконец, выполните команду docker-compose up, чтобы запустить все приложение, завершить развертывание одним щелчком мыши и выйти в Интернет.
Составляйте общие команды
docker-compose -h # Посмотреть справку
docker-compose up # Запустить все службы docker-compose
docker-compose up -d # Запустить все службы docker-compose и запустить их в фоновом режиме
docker-compose down # Остановить и удалить контейнеры, сети, тома и изображения.
Идентификатор службы в docker-compose exec yml # Введите внутри экземпляра контейнера
docker-compose exec файл docker-compose.yml, записанный идентификатор службы /bin/bash
docker-compose ps # Отобразить все запущенные контейнеры, управляемые в данный момент docker-compose
docker-compose top # Отобразить текущие процессы контейнера, управляемые docker-compose
Идентификатор службы в журналах docker-compose yml # Просмотр журнала вывода контейнера
docker-compose config # Проверить конфигурацию
docker-compose config -q # Проверяйте конфигурацию и вывод только в случае возникновения проблем
docker-compose restart # Перезапустить службу
docker-compose start # Запустить службу
docker-compose stop # Остановить службу
установка команды docker-machine
base=https://get.daocloud.io/docker/machine/releases/download/v0.14.0 &&
curl -L $base/docker-machine-$(uname -s)-$(uname -m) >/tmp/docker-machine &&
sudo install /tmp/docker-machine /usr/local/bin/docker-machine
1) В виртуальной машине Linux настройте IP-адрес 192.168.90.215 (x — последние 3 цифры вашего студенческого билета, y указывается вами), и виртуальная машина сможет нормально выходить в Интернет;
2) Настройте DNS-сервер, домен cr.com (abc — инициалы вашего имени), после завершения настройки с помощью nslookup проверьте прямое и обратное разрешение;
3) Настройте LEMP (т. е. Nginx + MySQL (MariaDB) + PHP) и зайдите на сайт www.cr.com (abc — ваши инициалы) через реальный хост для доступа к встроенному LEMP. (Вы не можете изменить файл хостов для локального разрешения, но должны использовать свой собственный настроенный DNS)
Сначала настройте статический IP для Linux http://alleniverrui.top/archives/linux-pei-zhi-jing-tai-ip (если его невозможно открыть, измените адрес ниже)
//делать
Отредактируйте файл /etc/named.conf.
vim /etc/named.conf
Измените значения прослушивания и запроса на любые
Настройте DNS для разрешения cr.com до 192.168.90.215.
vim /etc/named.rfc1912.zones
Добавьте в конец файла
zone "cr.com" IN {
type master;
file "cr.com.zone";
allow-update { none; };
};
zone "215.90.168.192.in-addr.arpa" IN {
type master;
file "com.cr.loop";
allow-update { none; };
};
:wq, чтобы сохранить
Отредактируйте соответствующий файл конфигурации vim /var/named/com.cr.loop.
Добавьте следующее
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 127.0.0.1
AAAA ::1
PTR cr.com.
NS ns.cr.com.
ns A 192.168.90.215
201 PTR www.cr.com.
201 PTR email.cr.com.
Отредактируйте vim /var/named/cr.com.zone.
Добавьте следующее
$TTL 1D
@ IN SOA cr.com. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
NS @
A 192.168.90.215
AAAA ::1
NS ns.server.com.
ns IN A 192.168.90.215
www IN A 192.168.90.215
email IN A 192.168.90.215
Перезапустить DNS
systemctl restart named
Посмотреть статус DNS
systemctl status named
Началось успешно
Прямой анализ nslookup cr.com
Обратный анализ nslookup 192.168.90.215
Запишите файл docker-compose.yml в /mydocker/lemp.
vim /mydocker/lemp/docker-compose.yml заполните следующее содержимое
nginx:
build: ./nginx/
ports:
- 80:80
links:
- php
volumes_from:
- app
php:
build: ./php/
expose:
- 9000
links:
- mysql
volumes_from:
- app
app:
image: php:7.0-fpm
volumes:
- .:/var/www/html
command: "true"
mysql:
image: mysql:latest
volumes_from:
- data
environment:
MYSQL_ROOT_PASSWORD: secret
MYSQL_DATABASE: bookmarks
MYSQL_USER: cr
MYSQL_PASSWORD: cr123
data:
image: mysql:latest
volumes:
- /var/lib/mysql
command: "true"
phpmyadmin:
image: phpmyadmin/phpmyadmin
ports:
- 8080:80
links:
- mysql
environment:
PMA_HOST: mysql
Создайте файл nginx/Dockerfile в /mydocker/lemp/.
заполнять
FROM nginx:latest
COPY ./default.conf /etc/nginx/conf.d/default.conf
Создать default.conf
Заполните следующее содержимое
server {
listen 80 default_server;
root /var/www/html;
index index.html index.php;
charset utf-8;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
access_log off;
error_log /var/log/nginx/error.log error;
sendfile off;
client_max_body_size 100m;
location ~ .php$ {
fastcgi_split_path_info ^(.+.php)(/.+)$;
fastcgi_pass php:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
}
location ~ /.ht {
deny all;
}
}
Создайте файл php/Dockerfile в /mydocker/lemp/.
заполнять
FROM php:7.0-fpm
RUN docker-php-ext-install mysqli
Оркестрация докер-контейнеров
docker-compose up -d
Docker ps для просмотра статуса работы контейнера
Успешно началось
Эта машина получает доступ к среде php и среде nginx через IP.
Доступ успешен
Настройте локальный DNS-сервер как виртуальную машину с адресом 192.168.90.215.
Откройте окно cmd и выполните пинг-тест на cr.com.
Пинг успешно выполнен
Доступ к встроенной среде PHP через доменное имя
Изменить файл конфигурации nginx
Окончательное доменное имя напрямую ведет на сайт.