введение
Я полагаю, что многие технические студенты будут использовать виртуальные машины во время разработки, после настройки среды разработки им нужно будет только запустить виртуальную машину в будущем. Но виртуальная машина часто занимает несколько гигабайт, а то и сотни гигабайт, и если какой-либо из файлов виртуальной машины поврежден, всю виртуальную машину запустить невозможно. Вы можете сказать, что вам следует часто выполнять резервное копирование, и это хорошая идея. Но есть ли лучший способ? Сегодня Brother Gang расскажет вам о Docker (контейнере) и увидит, подходит ли он нам больше, чем традиционные виртуальные машины.
Что такое контейнер?
Как следует из названия, контейнеры используются для хранения вещей. Чашка, которую мы обычно пьем, — это контейнер, но «контейнер» чашки используется для хранения воды, а контейнер здесь — это приложение.
Каковы характеристики контейнера?
- Автономный: он упаковывает все зависимости приложения и может запускаться напрямую;
- Портативность: контейнеры могут работать одинаково практически в любом месте, что гарантирует, что среды разработки, тестирования и производства могут иметь точно такую же среду выполнения;
- Взаимная изоляция: несколько контейнеров по умолчанию изолированы друг от друга, даже если они работают на одном хосте;
- Легкие функции: запускаются за секунды, занимают меньше ресурсов;
В чем разница между контейнером и виртуальной машиной?
Многие студенты подумают, что то, что может делать контейнер, может делать и виртуальная машина.
虚拟机
Недостатки
- Занимает много ресурсов;
- Есть много избыточных шагов;
- медленный старт;
容器
Преимущества
- Занимают меньше ресурсов;
- упомянуть малый;
- начать быстро;
Нижеофициальный сайт докераСкриншот (позже объясняет, что такое Docker)
Из этой картинки видно, что традиционные виртуальные машины очень тяжелые, и каждая виртуальная машина представляет собой независимую операционную систему. Docker отличается тем, что он повторно использует существующие системные ресурсы хоста и в то же время прекрасно изолирует различные контейнеры, поэтому его очень легко внедрить и легко стандартизировать. Некоторые студенты скажут, что это принципиально не отличается от традиционной виртуальной машины, просто новая виртуальная машина. По сути, именно эта «облегченная» функция дает ему возможность стать новым стандартизированным методом выпуска приложений.
Контейнеры появились в 1950-х и 1960-х годах, и в них, казалось, не было особого технического содержания. Но именно потому, что контейнеры являются стандартизированным методом логистики, глобальные морские, наземные и воздушные перевозки, терминальная погрузка и разгрузка и т. д. сформировали вокруг контейнеров целую эффективную логистическую систему, которая в конечном итоге изменила мировую торговлю и способствовала глобализации.
GoogleKubernetes(K8) теперь стал готовым стандартом оркестрации контейнеров, а другие основные инструменты оркестровки контейнеров включаютDocker Swarmа такжеMarathon/Mesos.
Что такое Докер?
Наконец, вернемся к нашей сегодняшней теме: что такое Docker? Docker — это контейнерный пакет Linux, разработанный на языке Go, который обеспечивает простой в использовании интерфейс и в настоящее время является самым популярным контейнерным решением для Linux.
Сценарии использования докера
- Создание согласованных сред разработки, тестирования и производства;
- Создайте изолированную от ресурсов среду выполнения;
- Создание многопользовательской инфраструктуры «платформа как услуга» (PaaS);
- Создание приложений «программное обеспечение как услуга» (SaaS);
- Высокопроизводительное сверхкрупномасштабное развертывание хоста;
Как установить Докер
Docker — это коммерческий продукт с открытым исходным кодом, который поставляется в двух версиях: Community Edition (сокращенно CE) и Enterprise Edition (сокращенно EE). Корпоративная версия включает в себя некоторые платные услуги, которые обычно не используются отдельными разработчиками. Следующие описания относятся к версии для сообщества.
Установка Docker CE очень проста, конкретные шаги можно найти в официальной документации.
Общие команды докера
Посмотреть версию докера
docker version
Зеркальный вытягивающий Docker
мы можем пойтиDocker HubСайт загружает общедоступный образ Docker. Например: поискnginx
, вытащите официальный образ nginx.
docker pull nginx
Просмотр образов Docker
docker images
Запустите образ Docker
docker run -it -v /Users/kwang/docker:/usr/share/nginx/html/hello -p 80:80 -d nginx:latest
-i
Запустите контейнер в интерактивном режиме, обычно с ключом -t;-t
Перераспределить псевдотерминал ввода для контейнера, обычно используемый с -i;-p
собственный порт: сопоставление портов контейнера;-d
Работает в фоновом режиме и возвращает идентификатор контейнера;-v
Собственный каталог может быть сопоставлен внутри контейнера. Например, здесь я помещаю свой локальный/home/kwang/docker
каталог сопоставляется с/usr/share/nginx/html/hello/
Под содержанием;
я здесь
/home/kwang/docker/
Создание каталога статической страницыindex.html
, содержимое выводится толькоhello world!
. и/usr/share/nginx/html/
Каталог — это корневой каталог веб-страницы nginx внутри контейнера, цель этого параметра — продемонстрировать сопоставление каталогов.
После успешного запуска командная строка возвращает идентификатор контейнера Docker (этот идентификатор генерируется случайным образом, поэтому то, что вы видите, определенно не совпадает с моим).
Просмотр запущенных контейнеров Docker
docker ps -a
Вы можете видеть, что наш образ только что был успешно запущен, и машина0.0.0.0:80
Порт был успешно сопоставлен на80
порт, первые несколько цифр идентификатора контейнера7fcac910ad6a
Откройте родной браузер и введите:http://localhost:80
, вы можете видеть, что nginx был запущен
Если вы измените адрес браузера:http://localhost/hello/
, вы можете видеть, что я подготовилindex.html
.
Приостановить работающий контейнер Docker
docker stop 7fcac910ad6a
7fcac910ad6a
это идентификатор контейнера, который нужно приостановить, вы можете видеть, что состояние контейнера сталоExited
Выход из состояния.
Запустите приостановленный контейнер Docker
docker start 7fcac910ad6a
Удалить работающий контейнер Docker
docker rm -f 7fcac910ad6a
-f
Параметр принудительно удален.
Войдите в контейнер в режиме командной строки
Вы можете использовать режим командной строки для ввода контейнера внутри, как если бы вы войти в новый Linux.
docker exec -it 9ca4f91d4027 bash
exec
заключается в запуске команды в работающем контейнере, который принимает два аргумента. Первый — идентификатор контейнера (здесь9ca4f91d4027
), вторым параметром является команда для выполнения (здесьbash
). После выполнения используемbash
Режим командной строки идет внутри контейнера.
Конечно, вы всегда можете использовать
exit
Команда выходит из контейнера.
Создайте образ Docker из работающего контейнера Docker.
docker commit -m "kenny nginx" -a "kenny" 9ca4f91d4027 kenny/nginx:1.0
-m
описательная информация-a
это информация о пользователеkenny/nginx:1.0
Это имя пользователя, имя репозитория и информация тега зеркала соответственно.
Вы можете видеть, что образ Docker был успешно сгенерирован.
Сгенерировать образ Docker на основе Dockerfile
Мы можем создатьDockerfile
файл, отредактируйте содержимое следующим образом:
# 基于哪个Docker镜像生成新镜像
FROM nginx:latest
# 构建者的基本信息
MAINTAINER kenny.wang
# 在build这个镜像时执行的操作
RUN apt-get update
# 拷贝本地文件到镜像中
COPY ./index.html /usr/share/nginx/html/
воплощать в жизньbuild
Команда для создания образа Docker.
docker build -t="kenny/nginx:2.0" .
-t
Используется для указания информации о пользователе, тега и т. д..
текущий каталог, используемый для поиска Dockerfile
использовать сноваdocker images
Убедитесь, что новое изображение было успешно сгенерировано.
Удалить образ Docker
docker rmi -f 83a85d2939a2
-f
значит принудительно удалил83a85d2939a2
это идентификатор образа докера
Сохраните образ Docker в виде tar-файла.
docker save -o kenny_nginx.tar kenny/nginx:2.0
Загрузите образ Docker
docker load -i kenny_nginx.tar
Эпилог
Докер вещь хорошая, больше, чем просто какие-то общие операции, но это как дверь, ведущая в Новый Мир, дает возможность масштабного развертывания кластера, расстановки контейнеров после времени написания статьи, так что следите за новостями!