Docker
технология контейнеризации
Во-первых, решить проблему
- Среды разработчика и тестировщика несовместимы, что приводит к разным результатам работы.
- Развертывание и миграция приложений и сред требует больших усилий.
- Виртуальная машина потребляет много ресурсов и имеет низкую производительность
2. История развития
- Виртуализация. Виртуализируйте аппаратные ресурсы (ЦП, память, жесткий диск, сеть), а затем установите операционную систему через виртуализированное пространство.
- Контейнерные контейнеры - пакеты приложений и среды в единый стандартный контейнер, который можно запускать в управлении контейнером в любой операционной системе - аналогично JVM
3. Основные компоненты
-
Docker Engine (демон) — долго выполняющийся процесс
-
Взаимодействие с клиентом Docker
-
Создавайте, запускайте, распространяйте контейнеры Docker
-
-
Образ Docker — шаблон только для чтения, построенный из последовательности инструкций.
-
Жизненный цикл Docker, этапы сборки и упаковки
-
Когда контейнер запускается с изображения, пишетный слой создается сверху изображения
-
-
Докер-контейнер
-
Запуск, изоляция приложений
-
Жизненный цикл Docker, этапы запуска и запуска
-
-
Докер-репозиторий
- Централизованное хранение определенного типа документов изображений, разные изображения различаются тегами, аналогично проектам в Git
- Сервер регистрации склада (Registry), отвечающий за хранение складов, аналогичный GitHub.
- В зависимости от того, является ли зеркало общедоступным или нет, его можно разделить на общедоступный склад и частный склад.
4. Инструкции
1. Зеркало
-
fetch - вытащить докер NAME[:TAG]
- ИМЯ реестра по умолчанию — register.hub.docker.com.
- TAG по умолчанию последний
-
Добавить теги - Tag Docker Tag [Исходное имя изображения: Tag] [Наименование целевого изображения: Tag] - будут два зеркальных сообщения, но они принадлежат к тому же изображению
-
Подробнее Подробнее - Docker Ispect Название [: TAG]
-
Просмотр информации о слое — идентификатор изображения истории докеров
-
Посмотреть всю информацию об образе — образы докеров — использовать
-f
фильтровать информацию -
search - имя поиска докера
-
удалять
-
docker rmi NAME[:TAG]
-
docker rmi IMAGE_ID
Если в контейнере запущен образ, его нельзя удалить, можно использовать -f для принудительного удаления, но это не рекомендуется
-
-
Загрузить — docker push NAME[:TAG] — загрузить в официальный репозиторий Docker Hub по умолчанию (требуется вход в систему)
-
Создано с помощью DockerFile — docker build [-f путь к файлу Docker] [-t имя изображения:тег] .
2. Контейнер
-
создать - докер создать ИМЯ[:ТЕГ]
-
-i - интерактивный режим
-
-t - псевдотерминал
-
-d - работать в фоновом режиме
-
-e ключ=значение - указать переменную окружения
-
-m размер памяти - максимальное использование памяти - b, k, m, g
-
-v Каталог Linux:каталог Docker[:ro] — сопоставление каталога Linux и тома данных контейнера
Каталог Linux должен существовать
-
-p port:port — сопоставить порты Linux с портами Docker
-
--name имя контейнера - указать имя контейнера
-
--rm - автоматически удалил контейнер после выхода контейнера
-
--network
- bridge - [по умолчанию] мост, обнаружение переадресации на основе MAC-адреса (маршрутизатор основан на обнаружении переадресации IP)
- хост - использовать IP-адрес хоста - больше нельзя использовать
-p
- оверлей — соединяет несколько движков Docker вместе, чтобы кластеры могли взаимодействовать друг с другом.
- macvlan — назначать MAC-адреса контейнерам, отображающимся как физические устройства в сети.
- none - отключить сеть
-
--tmpfs — тома данных монтируются только в память, а не в постоянные
-
-
start — идентификатор стартового контейнера докера
-
Посмотреть статус
- Запуск контейнера — docker ps
- Все контейнеры - docker ps -a
-
проверить детали
- докер проверяет идентификатор контейнера
- идентификатор контейнера статистики докеров
-
Создайте и запустите docker run NAME[:TAG]
Эквивалент создания + запуск
Вы можете использовать параметр options для создания
-
остановка
- docker stop id контейнера -t время — [по умолчанию] 10 секунд
- докер убить контейнер
-
перезапуск — идентификатор контейнера перезапуска докера
-
введите - docker exec -it идентификатор контейнера /bin/bash
-
Удалить — идентификатор контейнера docker rm
Если контейнер запущен, его нельзя удалить, вы можете использовать -f для принудительного удаления
-
pause — идентификатор контейнера паузы в докере
-
возобновление паузы - идентификатор контейнера приостановки докера
3. Склад
- Логин - docker login -u имя пользователя -p пароль
- logout - выход из докера
- Документ аутентификации — скопируйте содержимое документа в Linux, чтобы войти в /root/.docker/config.json без пароля.
4. DockerFile
Состоит из построчных операторов команд
[Цель] Создание имиджа
- FROM NAME[:TAG] – на основе изображения
- MAINTAINER Name Mailbox — имя сопровождающего, почтовый ящик
- COPY Путь Linux Путь Docker — копирование собственных ресурсов в контейнер Docker — поддержка подстановочных знаков, обычный
- Запустите команду команды - запустить команду
- ADD Path 1 Docker Path — получить ресурсы (удаленно) в контейнеры Docker
- [Рекомендуется] Используйте RUN wget для удаленных ресурсов.
- [Рекомендуется] Использовать COPY для нативных ресурсов
- Команда CMD — команда для запуска после запуска Docker — только одна
- Команда ENTRYPOINT — аналогична команде CMD.
- ENV key=value - установить переменную окружения
- VOLUME Docker path — объявляет путь в Docker-контейнере как анонимный том.
- WORKDIR Docker path — сменить каталог
- EXPOSE порт 1 порт 2 - установить порт прослушивания
5. Объем данных
- create - том докера создать имя тома
- Список просмотра - том докера ls
- Просмотр сообщений - проверка тома докера имя_тома
- удалить - том докера rm имя_тома
6. Compose
[Цель] Одновременный запуск нескольких контейнеров Docker с разными образами
Заказ
- запустить (сборка + запуск) - docker-compose up -d
- Просмотр — docker-compose ps
- Просмотр журналов — журналы создания докеров
- Привязка порта службы — порт имени службы порта для составления докеров
- Пересоберите сервис — сборка docker-compose
- Start — запуск docker-compose [название службы]
- stop - docker-compose stop [название службы]
- удалить - docker-compose rm [имя службы]
- остановить и удалить - docker-compose down [имя службы] [-v]
- Команда запуска — команда docker-compose run servicename
настроить
Имя файла по умолчанию — docker-compose.yml.
- версия - 3.0+ требуется для интеграции с Swarm
- сервисы - определить сервисы
- изображение - использовать изображение
- build — собрать образ с помощью DockerFile
- порты - установить сопоставление портов
- volumes - контейнер тома отображаемых данных
- команда — переопределяет команду по умолчанию для запуска после запуска контейнера.
- depend_on — установить порядок запуска службы
- среда - установить переменные среды
- network_mode установить режим сети
version: '2.0' # 版本2.0
services: # 定义服务
mysql: # 服务名称
image: mysql:5.7 # 使用镜像
ports: #端口映射
- 3306:3306
volumes: # 卷映射
- /mydata/mysql/log:/var/log/mysql
- /mydata/mysql/data:/var/lib/mysql
- /mydata/mysql/conf:/etc/mysql
environment:
MYSQL_ROOT_PASSWORD: myPassword
redis:
image: redis:6.0
ports:
- 6379:6379
halo:
image: tony60107/halo:v1
ports:
- 8090:8090
7. Swarm
[Цель] Изменить конфигурацию кластера контейнера Docker без ручного перезапуска.
- Просмотр состояния кластера — информация о докере
- Просмотр информации об узле — docker node ls
- Посмотреть информацию об услуге
- Все услуги - docker service ls
- Служба запущена — служба докеров ps [имя службы]
- Просмотр сообщений с токенами в диспетчере — менеджер токенов присоединения к рою докеров
- Добавить рабочий узел в кластер — токен присоединения к рою докеров
- Добавьте узел менеджера в кластер — токен менеджера присоединения к токену docker swarm
- Выгнать текущую ноду из кластера — docker swarm leave --force
- Опубликовать службу в кластер - Docker Service Создать имя сервиса
- -p порт:порт — сопоставление портов
- --replicas instances - общее количество запущенных экземпляров
- --name name - имя пользовательского сервиса
- Остановить и удалить службу — docker service rm [название службы]
- Служба масштабирования — имя службы масштабирования службы докеров = количество экземпляров
- служба обновления - свойство имени свойства обновления службы докеров