Докер — ворота в Новый Свет

Linux Командная строка Docker Nginx

введение

Я полагаю, что многие технические студенты будут использовать виртуальные машины во время разработки, после настройки среды разработки им нужно будет только запустить виртуальную машину в будущем. Но виртуальная машина часто занимает несколько гигабайт, а то и сотни гигабайт, и если какой-либо из файлов виртуальной машины поврежден, всю виртуальную машину запустить невозможно. Вы можете сказать, что вам следует часто выполнять резервное копирование, и это хорошая идея. Но есть ли лучший способ? Сегодня 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

Эпилог

Докер вещь хорошая, больше, чем просто какие-то общие операции, но это как дверь, ведущая в Новый Мир, дает возможность масштабного развертывания кластера, расстановки контейнеров после времени написания статьи, так что следите за новостями!


王方钢 | 智叟网络