Привет всем, я Сяо Цай, Сяо Цай, который хочет быть Цай Буцаем в интернет-индустрии. Она может быть мягкой или жесткой, как она мягкая, а белая проституция жесткая!Черт~ Не забудьте поставить мне тройку после прочтения!
Эта статья в основном знакомит
Docker 的基本使用
При необходимости вы можете обратиться к
Если это поможет, не забудьтеподобно❥
Официальный аккаунт WeChat открыт,Хорошая еда, студенты, которые не обратили внимания, не забудьте обратить внимание!
Введение в Докер
Docker — это движок контейнера приложений с открытым исходным кодом, основанный наПерейти на языкИ следуйте протоколу Apache2.0 с открытым исходным кодом. Docker позволяет разработчикам упаковывать свои приложения и зависимости в легкий портативный контейнер, который затем можно распространять на любой популярный Linux-компьютер, а также можно виртуализировать. Контейнер полностью использует механизм песочницы, и не будет никакого интерфейса между собой (аналогично приложениям iPhone), и что более важно, накладные расходы на производительность контейнера крайне низки.
Сценарии приложений Docker
-
WebАвтоматизированная упаковка и публикация приложений
-
Автоматизированное тестирование и непрерывная интеграция, выпуск
-
Развертывание и настройка баз данных или других фоновых приложений в сервисной среде.
-
Создайте свою собственную среду PaaS, скомпилировав или расширив существующую платформу OpenShift или Cloud Foundry с нуля.
Преимущества Докера
- Доставляйте приложения быстро и последовательно
- Реактивное развертывание и масштабирование
- Запускайте больше рабочих нагрузок на том же оборудовании
Три ядра Docker
- Изображение
Это основа для создания контейнеров, похожих на снэпшоты виртуальных машин.
- контейнер
Работающий экземпляр, созданный из образа, который можно запускать, останавливать и удалять. Каждый контейнер изолирован друг от друга и невидим друг для друга, что обеспечивает безопасность платформы.
- склад
Центральное место для хранения изображений
Картинка вышеDockerЛОГОТИП также интерпретируетDockerКонцепция чего-либо.
DockerОпираясь на концепцию контейнеров,DockerОн используется для транспортировки программного обеспечения и приложений.
Докер архитектура
- Client
Dockerклиент. многоDockerпользователь сDockerосновной способ взаимодействия,DockerКлиенты могут взаимодействовать с несколькими демонами.
- Docker Daemon
Dockerдемон. ответственный за прослушиваниеDocker APIзапрашивать и управлятьDockerТакие объекты, как образы, контейнеры, сети и тома. Демоны также могут общаться с другими демонами для управленияDockerСлужить.
- Registry
Dockerхранилище реестраDockerзеркало.Docker Hubявляется общедоступным реестром, который может использовать каждый.
ВМ против контейнера
характеристика | VM | контейнер |
---|---|---|
уровень изоляции | Уровень ОС | уровень процесса |
Карантинная политика | Hypervisor | CGroups |
системный ресурс | 5~15% | 0~5% |
Время начала | минутный уровень | секунды |
зеркало хранения | GB~TB | KB~MB |
размер кластера | сотни | Тысячи |
Стратегия высокой доступности | Резервное копирование, аварийное восстановление, миграция | упругость, нагрузка, динамика |
- контейнер:Это абстракция прикладного уровня, используемая для объединения кода и зависимых ресурсов.Несколько контейнеров могут работать на одном компьютере, разделяя ядро операционной системы, но каждый из них работает как независимый процесс в пользовательском пространстве. По сравнению с виртуальными машинами контейнеры занимают меньше места (размер образов контейнеров обычно составляет всего несколько десятков мегабайт) и могут быть запущены в одно мгновение.
- Виртуальная машина: это абстракция физического аппаратного уровня, используемая для превращения одного сервера в несколько серверов. Гипервизор позволяет запускать несколько виртуальных машин на одной машине. Каждая виртуальная машина содержит полный набор операционной системы, одно или несколько приложений, необходимые бинарные файлы и библиотечные ресурсы, поэтому занимает много места.
Начало работы с Докером
1. Работа с зеркалом
1. Список зеркал
Заявление: docker images
-
REPOSITORY: Представляет источник репозитория изображения.
-
TAG: этикетка зеркала
-
IMAGE ID: идентификатор изображения
-
CREATED: время создания изображения
-
SIZE: Размер изображения
2. Найдите зеркало
Заявление: docker search ${image_name}
- NAME: имя источника зеркального репозитория.
- DESCRIPTION: описание зеркала
- starts: оценка пользователей, отражающая популярность изображения.
- OFFICIAL: выпущен ли докер официально
- auto commit: автоматическая сборка, указывающая, что образ созданDocker HubСоздано автоматизированным процессом сборки
3. Потяните изображение
Заявление: docker pull ${image_name}:${image_version}
4. Удалить зеркало
-
Удалить сингл:
docker rmi ${image_name} (or ${id})
-
Удалить несколько:
docker rmi ${image_name}/${id} ${image_name}/${id} ...
-
удалить все:
docker rmi
`docker images -q`
5. Просмотр метаданных изображения
docker inspect ${image_name}
docker inspect -f ='{{.NetworkSettings.IPAddress}}' ${image_name}
- -f: доступный-formatзаменять
2. Контейнерная операция
1. Создайте контейнер
docker run [option] --name=${name} image command [args...]
вариант вариант:
-
-i
: интерактивный контейнер -
-t
:терминал, терминал -
-d
: запустить в фоновом режиме и распечатать контейнерid
Пример:
docker run -i -t -d --name=centOS1 centos /bin/bash
=
docker run -itd --name=centOS1 centos /bin/bash
Примечание:Имя созданного контейнера не может повторяться
2. Войдите в контейнер
Способ 1:
docker attach ${name}/${id}
- Пример:
docker attach centOS1
Примечание:использовать в контейнереexitПри выходе из контейнераконтейнер остановится
Способ 2:
docker exec -it ${name}/${id} /bin/bash
- Пример:
docker exec -it centOS1 /bin/bash
Примечание:использовать в контейнереexitПри выходе из контейнераКонтейнер не останавливается
3. Просмотр контейнера
- Просмотр запущенных контейнеров
docker ps
- Просмотр истории запущенных контейнеров
docker ps -a
- Просмотр последнего запущенного контейнера
docker ps -l
4. Остановите контейнер
docker stop ${name}/${id}
5. Запустите контейнер
docker start ${name}/${id}
6. Удалите контейнер
- удалить контейнер
docker rm ${name}/${id}
- удалить несколько контейнеров
docker rm ${name1}/${id1} ${name2}/${id2} ...
- удалить несколько контейнеров
docker rm
` docker ps -a -q`
7. Просмотр метаданных контейнера
docker inspect ${name}
docker inspect -f ='{{.NetworkSettings.IPAddress}}' ${name}
- -f: доступный-formatзаменять
8. Просмотр журналов контейнера
docker logs ${name}/${id}
9. Копирование файлов
docker cp 需要拷贝的文件或目录 容器名称:容器目录
Пример:
docker cp 1.txt c2:/root
10. Установка каталога
Монтирование каталога заключается в сопоставлении каталога хоста с усилиями в контейнере, поэтому, когда мы изменим содержимое каталога монтирования хоста, каталог в соответствующем каталоге монтирования в контейнере также изменится.
Заявление:использовать-vустанавливатьdocker run ‐id ‐‐name=centOS1 ‐v /opt/:/usr/local centos
Если разрешений недостаточно, мы должны использовать:
docker run ‐id ‐‐privileged=true ‐‐name=c4 ‐v /opt/:/usr/local/myhtml centos
3. Зеркальное производство
Мы можем не толькоDocker HubПотяните изображение, чтобы создать контейнер, мы также можем настроить его вручную.dockerСуществует два способа создания образа системы:
- использовать
docker commit
Заказ - использовать
docker build
СотрудничатьDockerfile
документ
1. docker commit
1)сделать зеркало
использоватьdocker commit
Перед созданием образа нам нужен работающий контейнер:
- шаг 1
Нам нужно сначала вытащить одинcentOSВ качестве нашего базового изображения:docker pull centos
- Шаг 2
Запустите образ, который вы только что вытащили:docker run -it --name=centOS1 centos:latest
- Шаг 3
Устанавливаем среду в контейнер:
- tomcat
загрузитьtomcatПакет установки:
docker cp apache‐tomcat‐8.5.54.tar.gz centOS1:/root/
Установитьtomcat:
tar ‐zxvf apache‐tomcat‐8.5.54.tar.gz ‐C /usr/local/
редактироватьtomcatвниз/bin/setclsspath.shфайл, добавьте следующее:
export JAVA_HOME=/usr/local/jdk1.8.0_161
export JRE_HOME=/usr/local/jdk1.8.0_161/jre
- JDK
загрузитьJDKПакет установки:
docker cp jdk‐8u161‐linux‐x64.tar.gz centOS1:/root/
УстановитьJDK:
tar ‐zxvf jdk‐8u161‐linux‐x64.tar.gz ‐C /usr/local/
Отредактируйте файл **/etc/profile** и добавьте следующее:
JAVA_HOME=/usr/local/jdk1.8.0_161
export PATH=$JAVA_HOME/bin:$PATH
- Шаг 4
Зафиксируйте наш работающий контейнер как новый образ
docker commit centOS1 cbucImage
2)Сопоставление портов
- шаг 1
Запустите контейнер:docker run ‐itd ‐‐name=t1 ‐p 8888:8080 cbucImage /bin/bash
- Шаг 2
Запустите кота:docker exec t1 /usr/local/apache‐tomcat‐7.0.47/bin/startup.sh
Таким образом, мы можем пройтиhttp://ip:port
заходите на страницу
3)Упаковка изображения
образ пакета:
docker save ‐o /mnt/myImage.tar cbucImage
Использовать зеркалирование на других серверах:
docker load -i myImage.tar
4)контейнерная упаковка
Упаковочный контейнер:
docker export ‐o /mnt/mycentos.tar centOS1
Импортируйте контейнер:
docker import mycentos.tar centOS2:latest
2. docker builder
Dockerfileиспользовать основныеDSLсинтаксис для создания образа Docker, а затем использоватьdocker builderкоманда, основанная наDockerfileИнструкции по созданию нового образа
1)Синтаксис DSL
Ключевые слова | объяснять |
---|---|
FROM | базовое изображение |
MAINTAINER | информация о сопровождающем |
RUN | установить программное обеспечение |
ADD | файл COPY, который будет автоматически распакован |
WORKEDIR | cd изменить рабочий каталог |
VOLUME | монтирование каталога |
EXPOSE | Внутренний сервисный порт |
CMD | Выполните команду в Dockerfile |
ENV | Установить переменные среды |
Разобрать:
- 1. FROM
указанная основаimage. должны быть указаны и должны бытьDockerfileперед другими инструкциями. Последующие инструкции зависят отimage.FROMБазовый образ, указанный командой, может находиться в официальном удаленном репозитории или в локальном репозитории. Команда FROM сообщаетdockerНа каком образе (дистрибутива) основан образ, который мы создаем. если в том жеDockerfileПри создании нескольких изображений вFROMинструкция.
Формат:
FROM <image>
илиFROM <image>:<tag>
- 2. MAINTAINER
Указывает информацию о создателе изображения. дляimageИнформация о производителе записывается вimageсередина. когда мыimageвоплощать в жизньdocker inspectкоманды, в выходных данных есть соответствующее поле для записи этой информации.
Формат:
MAINTAINER <name>
- 3. RUN
Установите программное обеспечение для использования. Может запускать любой базовый образПоддерживаемые команды. в качестве основногоimageвыбранныйubuntu, так мягко Часть управления файлами может использоваться толькоubuntuКоманда.
Формат:
RUN <command>
- 4. CMD
настраиватьcontainerДействие, выполняемое при запуске. Действием может быть выполнение пользовательского сценария или выполнение системной команды. Эта инструкция может существовать в файле только один раз, если их несколько, будет выполнена только последняя.
Формат:
CMD command param1 param2
- 5. ENTRYPOINT
настраиватьcontainerДействие, которое будет выполняться при запуске. Его можно задавать несколько раз, но действует только последнее.
Формат:
ENTRYPOINT command param1 param2
Сцена 1:
При использовании отдельно, если вы также используетеCMDкоманда иCMDявляется полной исполняемой командой, тоCMDинструкция иENTRYPOINTперезапишут друг друга, только последниеCMDилиENTRYPOINTэффективный.
Пример: только в этот разENTRYPOINTбудет выполнять
CMD ls -l
ENTRYPOINT ls ‐l
Сценарий 2:
а такжеCMDдирективы используются вместе для указанияENTRYPOINTпараметры по умолчанию, тоCMDДиректива — это не полная исполняемая команда, а только часть параметра.ENTRYPOINTИнструкции можно использовать толькоJSONМетод указывает команду выполнения, но не параметры.
пример:
CMD ["‐l"]
ENTRYPOINT ["/usr/bin/ls"]
- 6. USER
настраиватьcontainerПользователь контейнера, по умолчаниюrootПользователь
Формат:
# 指定memcached的运行用户
ENTRYPOINT ["memcached"]
USER daemon
或者
ENTRYPOINT ["memcached", "‐u", "daemon"]
- 7. EXPOSE
Указывает порт, который контейнер должен сопоставить с хост-компьютером. Когда вам нужно получить доступ к контейнеру, вам не нужно использовать контейнерIPВместо этого используйте адрес хост-машиныIPадрес и сопоставленный порт. Для завершения всей операции требуется два шага, сначала в Dockerfile используйтеEXPOSEУстановите порт контейнера, который необходимо сопоставить, а затем укажите его при запуске контейнера.-Испуганныйвариант плюсEXPOSEставь такой портEXPOSEУстановленный номер порта будет случайным образом сопоставлен с номером порта на хост-компьютере. Вы также можете указать порт, который необходимо сопоставить с хост-компьютером.В этом случае убедитесь, что номер порта на хост-компьютере не используется.EXPOSEКоманда может задавать несколько номеров портов одновременно, и когда соответствующий контейнер запущен, ее можно использовать несколько раз.-Испуганныйопции.
Формат:
EXPOSE <port> [<port>...]
# 映射一个端口
EXPOSE port1
# 相应的运行容器使用的命令
docker run ‐p port1 image
# 映射多个端口
EXPOSE port1 port2 port3
# 相应的运行容器使用的命令
docker run ‐p port1 ‐p port2 ‐p port3 image
# 还可以指定需要映射到宿主机器上的某个端口号
docker run ‐p host_port1:port1 ‐p host_port2:port2 ‐p host_port3:port3 image
- 8. ENV
Используется для установки переменных среды. После настройки последующиеRUNможно использовать команды,containerПосле запуска можно пройтиdocker inspectЧтобы просмотреть эту переменную среды, также можноdocker run --env ключ=значениеПри установке или изменении переменных среды.
Формат:
ENV <key> <value>
# 假如你安装了JAVA程序,需要设置JAVA_HOME,那么可以在Dockerfile中这样写:
ENV JAVA_HOME /path/java/jdk
- 9. ADD
отsrcскопировать файл вcontainerизdestдорожка. В основном используется для добавления файлов с хоста в образ.
Формат:
# <src> 是相对被构建的源目录的相对路径,可以是文件或目录的路径,也可以是一个远程的文件url; <dest> 是container中的绝对路径
ADD <src> <dest>
- 10. VOLUMN
Укажите точку монтирования. Сделать каталог в контейнере функцией постоянного хранения данных, каталог может использоваться самим контейнером, Его также можно использовать совместно с другими контейнерами.
Формат:
VOLUME ["<mountpoint>"]
# 例:VOLUME ["/tmp/data"]
пройти через этоDockerfileгенерироватьimageконтейнер,/tmp/dataДанные в каталоге все еще существуют после закрытия контейнера.
- 11. WORKDIR
Переключение каталогов, вы можете переключаться несколько раз (эквивалентноcdкоманда), даПУСК, CMD, ТОЧКА ВХОДАэффективный.
Формат:
WORKDIR /path/to/workdir
# 在/p1, /p2下执行vim a.txt
WORKDIR /p1 WORKDIR p2 RUN vim a.txt
- 12. ONBUILD
Выполнить в подзеркале
Формат:
# 指定的命令在构建镜像时并不执行,而是在它的子镜像中执行
ONBUILD <Dockerfile关键字>
2)Создать образ
мы редактировалиDockerfileфайл, вDockerfileВведите команду в директорию, где она находится:
docker build ‐t cbucImage:v1.0.0 ‐‐rm=true .
Примечание:
-
-онУказывает, что вы решили указать имя пользователя, имя репозитория и тег для создания образа.
-
‐‐rm=trueУказывает, что временный контейнер, созданный в процессе создания образа, удален.
-
Последнее в команде сборки выше.Не пропустите символ, это означает использование текущего каталогаDockerfileпостроить образ
3. Запустите образ
После того, как мы создали образ, мы можем запустить его с помощью следующей команды:
docker run ‐itd ‐‐name centos1 ‐p 8888:80 cbucImage /bin/bash
Войдите в контейнер с помощью следующей команды:
docker exec -it centos1 /bin/bash
[END]
ВышеупомянутоеDockerПриблизительные очки знаний, после прочтения попробуйте упаковать собственный проект вdockerПрактика зеркального отображения! Дорога длинная, Сяокай будет искать ее вместе с тобой~
Если вы будете усердно работать сегодня, завтра вы сможете сказать на одну вещь меньше, чтобы попросить о помощи!
Я Сяо Цай, человек, который учится у вас.
💋
Официальный аккаунт WeChat открыт,Хорошая еда, студенты, которые не обратили внимания, не забудьте обратить внимание!