Docker разделен на две основные версии: CE и EE. CE — это версия для сообщества (бесплатная, период поддержки 7 месяцев), EE — это корпоративная версия, в которой особое внимание уделяется безопасности, она платная за использование и имеет период поддержки 24 месяца.
Docker CE разделен на stable
test
и nightly
Три канала обновления.
На официальном сайте есть различные среды. Руководство по установке,Здесь мы в основном представляем Docker CE существовать Установка на CentOS.
Docker CE поддерживать 64 битовая версия CentOS 7, а версия ядра должна быть не ниже 3.10, CentOS 7 Соответствуем минимальным требованиям ядра, чтобы существовала CentOS 7. Установите Докер.
① Удаление (необязательно)
Если вы ранее устанавливали более старую версию Docker, вы можете удалить ее с помощью следующей команды:
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine \
docker-ce
②Установить докер
Во-первых, каждому необходимо подключить виртуальную машину к Интернету и установить инструмент yum.
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2 --skip-broken
Затем обновите источник локального зеркала:
# Настройка источника зеркала Docker
yum-config-manager \
--add-repo \
https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
sed -i 's/download.docker.com/mirrors.aliyun.com\/docker-ce/g' /etc/yum.repos.d/docker-ce.repo
yum makecache fast
Затем введите команду:
yum install -y docker-ce
docker-ce — бесплатная версия, распространяемая сообществом. Подождите немного, и докер будет успешно установлен.
③ Запустить докер
Приложения Docker должны использовать различные порты и изменять настройки брандмауэра один за другим. Это очень хлопотно, поэтому предлагаю сразу отключить брандмауэр!
Перед запуском докера обязательно отключите брандмауэр! !
Перед запуском докера обязательно отключите брандмауэр! !
Перед запуском докера обязательно отключите брандмауэр! !
# закрытие
systemctl stop firewalld
# Отключить запуск брандмауэра при загрузке
systemctl disable firewalld
# Проверьте, заблокирован ли статус брандмауэра закрытием
systemctl status firewalld
Запустите докер с помощью команды:
systemctl start docker # Запустить докер Сервис
systemctl stop docker # Остановить службу докера
systemctl restart docker # Перезапустить докер Сервис
Затем введите команду для просмотра версии докера:
docker -v
Как показано на рисунке:
Хотя микросервисы удобны, они также создают некоторые проблемы: 1. Между программным обеспечением слишком много зависимостей, и могут возникать проблемы совместимости. 2. Существуют различия в средах производства, тестирования и разработки.
Например: в проекте развертывание должно зависеть от node.js, Redis, RabbitMQ, MySQL и т. д. Библиотеки функций и зависимости, необходимые для развертывания этих сервисов, различаются и могут даже конфликтовать. Это создает большие трудности при развертывании.
Как Docker решает проблемы совместимости сложных зависимостей и зависимостей от разных компонентов в больших проектах?
Как Docker решает проблему различий между средами разработки, тестирования и производства?
Docker — это технология быстрой доставки и запуска приложений. Она имеет следующие преимущества:
Расширение: разница между Docker и виртуальной машиной.
виртуальная машина(virtual machine)дасуществовать Операционная системасерединамоделированиеАппаратное оборудование,Затем запустите другую операционную систему,напримерсуществовать Windows Запуск в системе Ubuntu системы, чтобы вы могли запускать любое приложение Ubuntu.
Dockerтолькотолькода Инкапсуляциябиблиотека функций,Полноценной модели операционной системы не существует.,Как показано на рисунке:
Для сравнения:
краткое содержание:
Dockerивиртуальная Отличия машины:
Зеркало:
контейнер:
Структура докера:
DockerHub:
В Docker есть несколько важных концепций:
Изображение:DockerРазместите приложение и егонеобходимыйизполагаться、библиотека функций、среда、Конфигурацияждатьдокумент Пакетсуществовать Вместе,Называется зеркало.
Контейнер:зеркалосерединаизприложениебегатьназадсформированный Этот процессдаконтейнер,Просто Docker сделает изоляцию процесса контейнера.,Невидимый для внешнего мира.
Все приложения в конечном итоге состоят из кода,Вседажесткий дисксерединаизодин за другимизбайтсформированныйдокумент。толькобегатьчас,будет загружен в память,процесс формирования。
изеркало,Сразуда Подать заявкусуществоватьна жестком дискедокумент、ибегатьсреда、Частичная системабиблиотека функцийдокумент Вместе Пакетсформированныйдокумент Сумка。этотдокумент Сумкадатолько чтениеиз。
контейнерШерстяная ткань,Это значит загрузить эти программы и функции, написанные в документе, в память, чтобы позволить,процесс формирования,Просто вставай. Поэтому зеркало можно запускать несколько раз.,Сформируйте несколько контейнерных процессов.
Например, вы создали QQ,если мы будемQQсуществоватьна дискеизбегатьдокументибегатьиз Операционная системаполагаться Пакет,Форма QQзеркало. Затем вы можете начать несколько раз,Двойное или даже тройное открытие QQ,Общайтесь с несколькими девушками.
Существует множество приложений с открытым исходным кодом, и упаковка этих приложений часто является повторяющейся задачей. Чтобы избежать такого дублирования работы, люди будут размещать свои собственные упакованные образы приложений, такие как образы Redis и MySQL, в сети и делиться ими, точно так же, как совместное использование кода GitHub.
С одной стороны, мы можем публиковать собственные изображения в DockerHub, а с другой стороны, мы также можем извлекать изображения из DockerHub:
Если мы хотим использовать Docker для работы с изображениями и контейнерами, мы должны установить Docker.
Docker — это программа на базе CS, состоящая из двух частей:
Как показано на рисунке:
Название изображения состоит из:
Как показано на рисунке:
Mysql здесь — это репозиторий, 5.7 — это тег, и вместе они представляют собой имя образа, которое представляет версию 5.7 образа MySQL.
Общие команды управления зеркалом. Как показано на рисунке:
Требование: извлеките образ nginx из DockerHub и просмотрите его.
1) Сначала зайдите на склад зеркал и найдите зеркало nginx.,напримерDockerHub:
2) По названию просмотренного образа вытягиваем нужный вам образ через команду: docker pull nginx
3) Просмотрите полученное изображение с помощью команды: docker images.
Требование: используйте docker save, чтобы экспортировать образ nginx на диск, а затем загрузить его обратно через загрузку.
1) Используйте докер xx --help команда для просмотра докера saveиdocker Синтаксис загрузки
Например, чтобы просмотреть использование команды сохранения, вы можете ввести команду:
docker save --help
результат:
Формат команды:
docker save -o [Название сохраненного целевого документа] [зеркалоимя]
2) Используйте сохранение Docker, чтобы экспортировать изображение на диск.
Запустить команду:
docker save -o nginx.tar nginx:latest
результат Как показано на рисунке:
3) Используйте загрузку докера для загрузки изображения.
Сначала удалите локальный образ nginx:
docker rmi nginx:latest
Затем запустите команду для загрузки локального файла:
docker load -i nginx.tar
результат:
Требование: перейдите в DockerHub, чтобы найти и получить образ Redis.
Цель:
1) Перейдите в DockerHub для поиска образа Redis.
2) Проверьте имя и версию зеркала Redis.
3) Используйте команду docker pull, чтобы вытащить образ.
4) Используйте команду docker save, чтобы упаковать redis:latest в пакет redis.tar.
5) Используйте docker rmi для удаления локального redis:latest.
6) Используйте загрузку Docker, чтобы перезагрузить файл redis.tar.
контейнер Операционная команда Как показано на рисунке:
Контейнеры защищают три состояния:
в:
Каковы общие параметры команды запуска Docker?
Команда для просмотра логов контейнера:
Посмотреть статус контейнера:
Команда для создания и запуска контейнера nginx:
docker run --name containerName -p 80:80 -d nginx
Интерпретация команды:
Вот-p
параметр,Это значит сопоставить порт контейнера с портом хоста.
По умолчанию контейнер представляет собой изолированную среду. Если мы напрямую обратимся к порту 80 хоста, мы точно не сможем получить доступ к nginx в контейнере.
сейчассуществовать,Свяжите 80 контейнера с 80 хост-машины.,Когда мы получаем доступ к порту 80 хост-машины,будет сопоставлен с 80 контейнерами,Таким образом вы можете получить доступ к nginx:
нуждаться:ВходитьNginxконтейнер,Изменить содержимое HTML-документа,добавить «Chuanzhi Education приветствует вас»
намекать:Входитьконтейнер Чтобы использоватьdocker исполнительная команда.
шаг:
1) Войдите в контейнер. Команда для входа в только что созданный контейнер nginx:
docker exec -it mn bash
Интерпретация команды:
2) Введите существующий HTML-каталог nginx. /usr/share/nginx/html
Внутри контейнера будет смоделирована независимая файловая система Linux, которая выглядит как Linux-сервер:
nginxизсреда、Конфигурация、бегатьдокументвсесуществоватьэтотдокументсистемасередина,Включая html-документ, который мы хотим изменить.
Просмотрите страницу nginx на веб-сайте DockerHub.,могу знатьnginxизhtmlрасположение каталогасуществовать/usr/share/nginx/html
Выполняем команду и входим в каталог:
cd /usr/share/nginx/html
Просмотрите файлы в каталоге:
3) Измените содержимое index.html.
В контейнере нет команды vi, и ее нельзя изменить напрямую. Для ее изменения мы используем следующую команду:
sed -i -e 's#Welcome to nginx#chuanzhieducation приветствует вас#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html
существующий браузер для доступа к собственной виртуальной машинаадрес,Напримеряизда:http://192.168.150.101:80,Вы можете увидеть результат:
Роль томов данных (управление данными контейнеров): отделять и отделять контейнеры от данных, облегчать работу с данными в контейнере и обеспечивать безопасность данных. В команде запуска docker используйте параметр -v для монтирования файлов или каталогов в контейнер: [Если файл тома не обнаружен при создании контейнера, он будет создан автоматически]
Два метода монтирования данных: монтирование тома данных и прямое монтирование каталога.
Введение:
существовать предыдущий случай nginx,При изменении html-страницы nginx,Нужно ввести внутренности nginx. А потому что редактора нет,Изменение документа также является хлопотным.
Это следствие связи между контейнером и данными (файлами в контейнере).
Чтобы решить эту проблему, данные необходимо отделить от контейнера, что требует использования томов данных.
Объем данных (объем)давиртуальный Оглавление,Указывает на каталог в хост-системе.
После завершения объема монтирование данных, все операции с контейнером будут затронуты существующим объектом Каталог хоста, соответствующий данным.
Таким образом, когда мы работаем с каталогом /var/lib/docker/volumes/html на хосте, это эквивалентно работе с каталогом /usr/share/nginx/html в контейнере.
Операции с объемами данных:
Операции с объемами данныхизбазовыйграмматикаследующее:
docker volume [COMMAND]
docker Команда громкости — Операции. с объемами данных, определите следующую операцию по команде, следующей за командой:
нуждаться:Создайтеобъем данных,и просмотретьобъем данныесуществовать расположение каталога хоста
① Создать том данных
docker volume create html
② Просмотр всех данных
docker volume ls
результат:
③ Просмотр сведений об объеме данных
docker volume inspect html
результат:
Как видите, HTML-код, который мы создали, имеет объем. данныхассоциацияиз Хозяин Оглавлениедля/var/lib/docker/volumes/html/_data
Оглавление。
Мы существуемсоздаем контейнер -v Параметры для монтирования тома данныхдо определенногоконтейнер Внутри Оглавление,Формат командыследующее:\ Это означает продолжение
docker run \
--name mn \
-v html:/root/html \
-p 8080:80
nginx \
Здесь -v — это команда Подключить том данных:
-v html:/root/htm
: поместить htmlобъем данные монтируются в каталог /root/html контейнера.нуждаться:Создайтеnginxконтейнер,Измените содержимое index.html в каталоге html в контейнере.
анализировать:Предыдущий случайсередина,Зайдём внутрь nginxконтейнера,Уже знаюnginxизhtmlОглавление Местосуществовать Расположение/usr/share/nginx/html , нам необходимо смонтировать этот каталог к тому данных html, чтобы облегчить работу с его содержимым.
намекать:бегатьконтейнерчас使用 -v параметр Подключить том данных
шаг:
① создаватьконтейнери Подключить том данныхприезжатьконтейнер ВнутриизHTMLОглавление
[Если файл тома html не обнаружен при создании контейнера, он будет создан автоматически]
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx
② Введите htmlобъем данные существуют и изменяют HTML-контент.
# Посмотреть htmlобъем данныхиз Расположение
docker volume inspect html
# Войдите в этот каталог
cd /var/lib/docker/volumes/html/_data
# Исправлятьдокумент
vi index.html
Контейнер можно не только установить, но и смонтировать непосредственно в каталог хоста. Отношения следующие:
Как показано на рисунке:
грамматика:
Синтаксис монтирования каталога и тома данных аналогичен:
нуждаться:создаватьибегатьодинMySQLконтейнер,Подключите каталог хоста непосредственно к контейнеру
Идея реализации следующая:
1) Загрузите документ mysql.tar из материалов предварительного курса на виртуальную машину и загрузите его как зеркало с помощью команды загрузки.
2) Создайте каталог /tmp/mysql/data.
3) Создайте каталог /tmp/mysql/conf и загрузите файл hmy.cnf, указанный в материалах предварительного курса, в /tmp/mysql/conf.
4) Заходим в DockerHub, чтобы проверить информацию, создаем и запускаем контейнер MySQL, требования такие:
docker run \
--name mysql5.7.25 \
-e MYSQL_ROOT_PASSWORD=123456 \
-p 3306:3306 \
-v /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf \
-v /tmp/mysql/data:/var/lib/mysql \
-d mysql:5.7.25
① Подключите /tmp/mysql/data к каталогу хранения данных в контейнере MySQL.
② Подключите /tmp/mysql/conf/hmy.cnf к файлу конфигурации контейнера MySQL.
③Установить пароль MySQL
краткое содержание:
Общее зеркалосуществовать DockerHub можно найти,нодая们自己写из项目Сразу必须自己Строитьзеркало Понятно。
Образ — это пакет приложения и необходимых библиотек системных функций, среды, конфигурации и зависимостей.
Давайте возьмем MySQL в качестве примера, чтобы посмотреть на структуру изображения:
Проще говоря,Зеркало основано на существующей библиотеке системных функций и операционной среде.,добавить в документ приложения, документ конфигурации, документ зависимости и другие комбинации,Затем напишите сценарий запуска Пакетсуществовать, чтобы сформировать документ.
Когда мы создаем образ, мы фактически реализуем описанный выше процесс упаковки.
При создании собственного образа вам не нужно копировать и упаковывать каждый файл. Нам нужно только сообщить Docker состав нашего образа, какие BaseImages нужны, какие файлы нужно скопировать, какие зависимости нужно установить и какой скрипт запуска поможет нам собрать образ в дальнейшем. Файл, описывающий приведенную выше информацию, — это файл Dockerfile.
DockerfileСразудаодин文本документ,Чтосередина Сумка含один за другимизИнструкция,Используйте инструкции, чтобы описать, какие операции необходимо выполнить.Строитьзеркало。Каждая инструкция будет формировать слойLayer。
Обновленные подробные инструкции по синтаксису можно найти в официальной документации сайта: https://docs.docker.com/engine/reference/builder
Требования: Создайте новый образ на основе образа Ubuntu и запустите Java-проект.
Содержание следующее:
# Назначенное базовое зеркало
FROM ubuntu:16.04
# Настройте переменные среды и каталог установки JDK.
ENV JAVA_DIR=/usr/local
# Скопируйте пакет проекта jdkиjava.
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar
# Установить JDK
RUN cd $JAVA_DIR \
&& tar -xf ./jdk8.tar.gz \
&& mv ./jdk1.8.0_144 ./java8
# Настройка переменных среды
ENV JAVA_HOME=$JAVA_DIR/java8
ENV PATH=$PATH:$JAVA_HOME/bin
# открытый порт
EXPOSE 8090
# Ввод, команда запуска Java-проекта
ENTRYPOINT java -jar /tmp/app.jar
Шаг 5. Войдите в docker-demo
Загрузите подготовленную docker-demo в любую директорию виртуальной машины, а затем войдите в директорию docker-demo.
шаг6:Запустить команду:
#buildконтейнер
docker build -t javaweb:1.0 .
#runконтейнер
docker run --name web -p 8090:8090 -d javaweb:1.0
последний раз посещал http://192.168.150.101:8090/hello/count, измените IP на IP вашей виртуальной машины.
Хотя мы можем использовать зеркало Ubuntu, добавьте в Что бы вам ни понадобилосьиз Установить Сумка,Строитьзеркало,Но это более хлопотно. Так что в большинстве случаев,мы все можемсуществовать Некоторый Установить Понятно Некоторое программное обеспечениеиз Базазеркалоделать ремонт。
Например,зеркало для создания Java-проектов,Вы можете построить на основе уже подготовленного JDK.
Требования: Создайте проект Java как зеркало на основе зеркала java:8-alpine.
Идея реализации следующая:
① Создайте новый пустой каталог.,Затем создайте новый документ в существующем каталоге.,Именованный файл Dockerfile
② Скопируйте файл docker-demo.jar, предоставленный в материалах предварительного курса, в этот каталог.
③ Напишите Dockerfile:
а) На основе java:8-alpine в качестве базового образа.
б) Скопируйте app.jar в изображение.
в) Открытый порт
г) Введите запись ENTRYPOINT.
Содержание следующее:
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
EXPOSE 8090
ENTRYPOINT java -jar /tmp/app.jar
④ Используйте команду docker build для сборки образа.
⑤ Используйте docker run, чтобы создать контейнер и запустить его.
Docker Compose может помочь нам быстро развернуть распределенные приложения на основе документа Compose без необходимости вручную создавать и запускать их одно за другим!
Файл компоновки — это текстовый файл, который с помощью инструкций определяет, как должен работать каждый контейнер в кластере. Формат следующий:
version: "3.8"
services:
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "/tmp/mysql/data:/var/lib/mysql"
- "/tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf"
web:
build: .
ports:
- "8090:8090"
Приведенный выше файл Compose описывает проект, который содержит два контейнера:
mysql:5.7.25
зеркало Строитьизконтейнер,и смонтировал два каталогаdocker build
临час Строитьиззеркалоконтейнер,8090 при сопоставлении портаDockerComposeизподробныйграмматика Обратитесь на официальный сайт:https://docs.docker.com/compose/compose-file/
Фактически, файл DockerCompose можно рассматривать как запись нескольких команд запуска Docker в один файл, но синтаксис немного отличается.
Установите Docker Compose на CentOS7
① Скачать
Под Linux скачать его нужно через команду:
# Установить
curl -L https://github.com/docker/compose/releases/download/1.23.1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
Если скорость загрузки низкая или загрузка не удалась, вы можете использовать файл docker-compose, представленный в материалах перед курсом:
загрузитьприезжать/usr/local/bin/
Оглавление ХОРОШО。
② Изменить права доступа к файлу.
Измените права доступа к файлу:
# Изменить разрешения
chmod +x /usr/local/bin/docker-compose
③ Базовая команда автозаполнения:
# Полная команда
curl -L https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose
Если здесь возникает ошибка, вам необходимо изменить файл хостов:
echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts
нуждаться:научусь раньшеизcloud-demoИспользование микросервисного кластераDockerComposeразвертывать
Идеи реализации:
① Проверьте папку cloud-demo, указанную в материалах предварительного занятия. В ней записан файл docker-compose.
② Измените свой облачный демонстрационный проект и назовите адреса базы данных и nacos как имена служб в docker-compose.
③ Используйте инструмент упаковки maven, чтобы упаковать каждый микросервис в проекте как app.jar.
④ Скопируйте упакованный файл app.jar в каждый соответствующий подкаталог в Cloud-Demo.
⑤ Загрузите облачную демонстрацию на виртуальную машину и разверните ее с помощью docker-compose up -d.
Проверьте папку cloud-demo, указанную в материалах предварительного занятия. В ней записан файл docker-compose и для каждого микросервиса подготовлен независимый каталог:
Содержание следующее:
version: "3.2"
services:
nacos:
image: nacos/nacos-server
environment:
MODE: standalone
ports:
- "8848:8848"
mysql:
image: mysql:5.7.25
environment:
MYSQL_ROOT_PASSWORD: 123
volumes:
- "$PWD/mysql/data:/var/lib/mysql"
- "$PWD/mysql/conf:/etc/mysql/conf.d/"
userservice:
build: ./user-service
orderservice:
build: ./order-service
gateway:
build: ./gateway
ports:
- "10010:10010"
Как видите, он содержит 5 сервисов:
nacos
:作для注册середина Сердцеи Конфигурациясередина Сердце image: nacos/nacos-server
: Построено на базе nacos/nacos-серверкалоenvironment
:средапеременная MODE: standalone
:Запуск в одноточечном режимеports
:сопоставление портов,Здесь открыт порт 8848.mysql
:база данных image: mysql:5.7.25
:зеркало Версиядаmysql:5.7.25environment
:средапеременная MYSQL_ROOT_PASSWORD: 123
:настраиватьбаза Пароль для учетной записи dataroot — 123.volumes
:объем данныхустанавливать,Здесь монтируются каталоги data и conf MySQL.,Есть данные, которые я подготовил заранееuserservice
、orderservice
、gateway
:Вседана основеDockerfile临час СтроитьизЗаглянув в каталог mysql, вы увидите, что таблицы cloud_order и cloud_user подготовлены:
Глядя на каталог микросервисов, вы можете видеть, что все они содержат файлы Dockerfile:
Содержание следующее:
FROM java:8-alpine
COPY ./app.jar /tmp/app.jar
ENTRYPOINT java -jar /tmp/app.jar
Потому что микросервисы в будущем будут разворачиваться как докер-контейнеры, а взаимосвязь между контейнерами происходит не через IP-адреса, а через имена контейнеров. Здесь мы изменяем адреса mysql и nacos служб заказов, пользовательских служб и шлюзов для доступа на основе имен контейнеров.
Как показано ниже:
spring:
datasource:
url: jdbc:mysql://mysql:3306/cloud_order?useSSL=false
username: root
password: 123
driver-class-name: com.mysql.jdbc.Driver
application:
name: orderservice
cloud:
nacos:
server-addr: nacos:8848 # адрес службы НАКОС
Далее нам нужно упаковать каждый из наших микросервисов. Поскольку все имена пакетов jar в файле Dockerfile, который мы видели ранее, — это app.jar, каждый из наших микросервисов должен использовать это имя.
Этого можно добиться, изменив имя пакета в pom.xml. Необходимо изменить каждый микросервис:
<build>
<!-- Окончательное название пакета услуги -->
<finalName>app</finalName>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
После упаковки:
Скомпилированный и упакованный файл app.jar необходимо поместить в тот же каталог, что и файл Dockerfile. Примечание. Файл app.jar каждого микросервиса размещается в каталоге, соответствующем имени сервиса, не ошибитесь.
user-service:
order-service:
gateway:
Наконец, нам нужно загрузить всю папку cloud-demo на виртуальную машину для развертывания DockerCompose.
Загрузить в любую директорию:
развертывать:
Войдите в каталог cloud-demo и выполните следующую команду:
docker-compose up -d
# Поскольку nacos запустился слишком поздно, другие службы вышли из строя, поэтому другие службы были перезапущены. Убедитесь, что Nacos запускается первым
docker-compose restart gateway userservice orderservice
# Просмотр журналов службы
docker-compose logs -f userservice
Построить зеркальный склад можно на основе DockerRegistry, официально предоставленного Docker.
Официальный сайтадрес:https://hub.docker.com/_/registry
〇 Настройте доверительный адрес Docker.
Наш частный сервер использует протокол http, которому Docker по умолчанию не доверяет, поэтому нам необходимо выполнить настройку:
# Откройте файл, который хотите изменить
vi /etc/docker/daemon.json
# добавить в Содержание:
"insecure-registries":["http://192.168.194.131:8080"]
# Перезагрузить
systemctl daemon-reload
# Перезапустить докер
systemctl restart docker
① Упрощенная версия зеркального склада [не рекомендуется]
DockerОфициальныйDocker Реестр — базовая версия Хранилища. образов Docker,Оснащен полным набором функций управления складом.,Но графического интерфейса нет.
Метод построения относительно прост, команды следующие:
docker run -d \
--restart=always \
--name registry \
-p 5000:5000 \
-v registry-data:/var/lib/registry \
registry
Команда монтирует том данных реестра данных в каталог /var/lib/registry в контейнере, который является каталогом, в котором частная библиотека изображений хранит данные.
Посетите http://YourIp:5000/v2/_catalog, чтобы просмотреть изображения, включенные в текущий частный сервис изображений.
② Версия с графическим интерфейсом [рекомендуется]
Используйте DockerCompose для развертывания DockerRegistry с графическим интерфейсом. Команда выглядит следующим образом:
Создайте папку docker-ui, а затем создайте файл docker-compose.yml. Поместите следующее Внутри Способность писать。Перепечаткадокументпапкасерединаосуществлять:
docker-compose up -d
version: '3.0'
services:
registry:
image: registry
volumes:
- ./registry-data:/var/lib/registry
ui:
image: joxit/docker-registry-ui:static
ports:
- 8080:80
environment:
- REGISTRY_TITLE=Частный репозиторий Конана
- REGISTRY_URL=http://registry:5000
depends_on:
- registry
Тогда посетите:http://192.168.194.131:8080/ Вы можете увидеть только что развернутый частный склад.
Чтобы отправить изображение в частную службу изображений, вы должны сначала пометить его. Для этого выполните следующие действия:
① Переназначьте локальный образ, а префиксом имени станет адрес частного склада: 192.168.194.131:8080/
docker tag nginx:latest 192.168.194.131:8080/nginx:1.0
② Нажмите на изображение
docker push 192.168.194.131:8080/nginx:1.0
③ Извлеките изображение (перед извлечением можно удалить локальное изображение)
docker pull 192.168.194.131:8080/nginx:1.0