Что такое докер
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):Нажмите кнопку «Применить и перезапустить», чтобы настройки вступили в силу.
Больше ссылок:
Ууху. Отнеси в чайхану. IO/mirror#Угадай...
Создайте 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 .
зеркало запросов
docker images
первый контейнер
С первым образом вы можете использовать этот образ, создавать контейнеры и запускать код.
docker run -it --rm --name my-running-app my-php-app
объем данных
Как было сказано ранее, код имеет версии, и одна из целей зеркалирования — сделать нашу среду выполнения согласованной. Поэтому наш подход заключается в том, чтобы максимально отделить код от изображения.
В это время вам нужно использовать «объем данных». Том данных — это специальный каталог, который может использоваться одним или несколькими контейнерами и имеет следующие характеристики:
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
Суммировать
Есть еще много вещей, которые нужны 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 с нетерпением ждет вашего внимания
спасибо, что увидели это