Изучите Docker с самого простого (1)

Java задняя часть PHP Docker

group_5622_0
group_5622_0

Что такое докер

Docker is the leading Containers as a Service (CaaS) platform

Docker — это ведущая в мире платформа контейнеров программного обеспечения. Разработчики используют Docker для устранения проблем «работает на моей машине» при совместной работе над кодом с коллегами. Операторы используют Docker для параллельного запуска приложений и управления ими в изолированных контейнерах, чтобы повысить эффективность вычислений. Предприятия используют Docker для создания гибких конвейеров доставки программного обеспечения, чтобы быстрее, безопаснее и с уверенностью предоставлять новые функции для приложений Linux, Windows Server и Linux на мэйнфреймах.

Роль докера

Операционная среда максимально стабильна

Независимо от того, в большой компании или в маленькой компании, поскольку код находится под контролем версий, код каждого может быть гарантированно непротиворечивым; но поскольку аппаратное обеспечение для разработки у всех разное (например, некоторым людям нравится разрабатывать в среде Windows, некоторым люди используют компьютеры Mac), неизбежно приведет к несогласованной среде разработки, иногда неправильно понимаемой как проблема с кодом из-за несогласованной среды, например (некоторые языки нечувствительны к регистру в Windows, но чувствительны в Linux), поэтому предоставьте способ обеспечить такое же развитие Операционная среда очень важна.

Когда-то Java предлагал «Написать один раз, запустить где угодно», а Docker предложил «Создать один раз, запустить где угодно, один раз настроить, запустить что угодно».

Очень важной особенностью Java является независимость от платформы, и использование виртуальной машины Java является ключом к достижению этой функции. Виртуальная машина Java скрывает информацию, относящуюся к конкретной платформе, так что компилятору языка Java нужно только сгенерировать объектный код (байт-код), который может работать на виртуальной машине Java, и он может работать на различных платформах без изменений.

Как и виртуальная машина Java, Docker использует механизм контейнера для решения проблемы зависимости от платформы.Он запускает процесс-демон Docker на каждом хосте.Процесс-демон скрывает информацию, относящуюся к конкретной платформе, и обеспечивает унифицированный анализ для приложений верхнего уровня для различные драйверы выполнения на платформе, драйверы хранения и сетевые драйверы для выполнения.

Решите проблему взаимного вмешательства между несколькими локальными проектами и несколькими средами.

Это может быть связано с тем, что для разных проектов требуются разные среды разработки, например, для некоторых проектов требуется PHP 5.6, для некоторых проектов требуется PHP 7.0, для некоторых проектов требуется Apache, а для некоторых проектов требуется Nginx. Необходимо одновременно устанавливать разные версии одного и того же программного обеспечения на один и тот же компьютер или одновременно использовать один и тот же порт (например: 80), и все это не может избежать конфликтов.

Иногда мы не хотим, чтобы на компьютере одновременно устанавливалось много программного обеспечения для разработки, и здесь в игру вступает Docker. В соответствии с разными проектами используйте разные образы Docker для создания среды разработки, и каждое приложение Docker имеет свою независимую рабочую среду, не мешая друг другу.

Docker имеет возможности контроля версий

Контейнеры Docker также могут действовать как репозитории git, позволяя вам фиксировать изменения в образах Docker и управлять ими в разных версиях. Представьте, что вы сделали обновление компонента, и вся ваша среда вышла из строя, Docker позволяет вам легко вернуться к предыдущей версии этого образа. Весь этот процесс можно выполнить за несколько минут, а Docker довольно быстр по сравнению с процессом резервного копирования или создания образа виртуальной машины, что позволяет быстро реплицировать и реализовывать избыточность.

Поскольку тестировщики по-прежнему являются эксплуатационным и обслуживающим персоналом, они также могут тестировать и развертывать новые тестовые среды и производственные среды на основе последней версии образа.

Основное использование Докера

первое зеркало

Для того, чтобы ускорить загрузку образов Docker, можно использовать некоторые отечественные ускорители, например daocloud, например Mac:

Docker For Mac
Щелкните правой кнопкой мыши значок докера на верхней панели рабочего стола, выберите «Настройки» и добавьте следующий адрес зеркала в список зеркал реестра на вкладке «Демон» (вкладка «Дополнительно» для версий до Docker 17.03):

40974b5e.m.daocloud.io

Нажмите кнопку «Применить и перезапустить», чтобы настройки вступили в силу.
Больше ссылок:
Ууху. Отнеси в чайхану. IO/mirror#Угадай...

WX20170910-211235@2x
WX20170910-211235@2x

Создайте Dockerfile в проекте PHP

FROM daocloud.io/php:5.6-cli
COPY . /usr/src/myapp
WORKDIR /usr/src/myapp
CMD [ "php", "./hello.php" ]

написать привет.php

<?php 
  echo "hello yemeishu";    
?>

Создать образ

docker build -t my-php-app .

WX20170910-212504@2x
WX20170910-212504@2x

зеркало запросов

docker images

WX20170910-212700@2x
WX20170910-212700@2x

первый контейнер

С первым образом вы можете использовать этот образ, создавать контейнеры и запускать код.

docker run -it --rm --name my-running-app my-php-app

WX20170910-213651@2x
WX20170910-213651@2x

объем данных

Как было сказано ранее, код имеет версии, и одна из целей зеркалирования — сделать нашу среду выполнения согласованной. Поэтому наш подход заключается в том, чтобы максимально отделить код от изображения.

В это время вам нужно использовать «объем данных». Том данных — это специальный каталог, который может использоваться одним или несколькими контейнерами и имеет следующие характеристики:

1. Объемы данных можно совместно использовать и повторно использовать между контейнерами;
2. Измените содержимое тома данных, это вступит в силу немедленно;
3. Содержимое тома данных не входит в образ, поэтому на изображение это не повлияет;

При использовании команды запуска docker используйте флаг -v для создания тома данных или укажите каталог для монтирования локального хоста в контейнер.Например, мы монтируем локальный hello.php в контейнер и модифицируем hello.php

<?php
    $file_path = "public/test.txt";
    if(file_exists($file_path)){
        $fp = fopen($file_path,"r");
        $str = fread($fp,filesize($file_path));//指定读取大小,这里把整个文件内容读取出来
        echo $str = str_replace("\r\n","<br />",$str);
    }
?>

Смонтируйте локальную общедоступную папку, содержащую test.txt, в контейнер и прочитайте содержимое файла:

docker run -it --rm --name my-running-app -v /Users/ye/docker/learning/demo/public:/usr/src/myapp/public my-php-4

WX20170910-222305@2x
WX20170910-222305@2x

Суммировать

Есть еще много вещей, которые нужны Docker и которым можно научиться.Мы начинаем с написания простого Dockerfile для создания образа, создания контейнера, монтирования тома данных, а также шаг за шагом изучаем и используем Docker.

Далее мы начнем с того, как использовать существующий laradock (GitHub.com/Лара док/ла…), чтобы запустить проект Laravel для дальнейшего освоения Docker.

Вложение: Общий том данных команд Docker

id Заказ значение
1 docker kill $(docker ps -a -q) убить все запущенные контейнеры
2 docker rm $(docker ps -a -q) удалить все остановленные контейнеры
3 docker images Посмотреть локальное зеркало
4 docker ps Просмотр локальных контейнеров
5 docker build -t name:tag Путь к файлу Docker Создать образ
6 docker exec -it ИДЕНТИФИКАТОР ИЗОБРАЖЕНИЯ или ИМЕНА /bin/bash в контейнер
7 docker stop ИДЕНТИФИКАТОР КОНТЕЙНЕРА или ИМЕНА закрыть контейнер
8 docker start ИДЕНТИФИКАТОР КОНТЕЙНЕРА или ИМЕНА Перезапустить закрытый контейнер
9 docker rm ИДЕНТИФИКАТОР КОНТЕЙНЕРА или ИМЕНА удалить локальный контейнер

coding01 с нетерпением ждет вашего внимания

qrcode
qrcode


спасибо, что увидели это

qrcode
qrcode