30-минутное руководство по быстрому запуску Docker

Java Docker
30-минутное руководство по быстрому запуску Docker

Оригинальный адрес:Блог Лян Гуйчжао

адрес блога:blog.720ui.com

Добро пожаловать на официальный аккаунт: «Серверное мышление». Группа людей с одинаковой частотой растет вместе, вместе совершенствуется и преодолевает ограничения познания.

30-минутное руководство по быстрому запуску Docker

1. Добро пожаловать в мир Докера

1. Докер и виртуализация

В дни без Docker мы использовали аппаратную виртуализацию (виртуальные машины) для обеспечения изоляции. Здесь виртуальная машина устанавливает промежуточный виртуальный программный уровень Hypervisor в операционной системе и использует ресурсы физической машины для виртуализации нескольких виртуальных аппаратных сред для совместного использования ресурсов хост-машины, а приложения в ней запускаются на виртуальной машине. ядро. Однако существует узкое место в использовании оборудования виртуальными машинами, поскольку виртуальным машинам сложно динамически регулировать занимаемые ими аппаратные ресурсы в соответствии с текущим объемом бизнеса, поэтому технология контейнеризации стала популярной. Среди них Docker — это механизм контейнера приложений с открытым исходным кодом, который позволяет разработчикам упаковывать свои приложения и зависимости в переносимый контейнер, а затем публиковать их на любом популярном компьютере с Linux.

image.png

Контейнер Docker не использует аппаратную виртуализацию, его демон — это процесс на хосте, другими словами, приложение запускается непосредственно на ядре хоста. Поскольку между программой, работающей в контейнере, и операционной системой компьютера нет дополнительного промежуточного уровня, никакие ресурсы не тратятся впустую на запуск избыточного программного обеспечения или эмуляцию виртуального оборудования.

Преимущества Docker не только в этом, давайте сравним их.

характеристика Docker виртуальная машина
скорость запуска секунды минутный уровень
доставка/развертывание Согласованные среды разработки, тестирования и производства нет зрелой системы
представление приблизительная физическая машина Большая потеря производительности
объем Очень маленький (МБ) Больше (ГБ)
Миграция/расширение Кроссплатформенный, воспроизводимый сложнее

2. Образы, контейнеры и репозитории

Docker состоит из трех частей: образа, контейнера и репозитория.

Образ Docker можно просто сравнить с системным диском, используемым для установки системы на компьютер, включая операционную систему и необходимое программное обеспечение. Например, образ может содержать полную среду операционной системы Centos с установленными серверами Nginx и Tomcat. Обратите внимание, что изображения доступны только для чтения. Это также легко понять, точно так же, как системный диск, который мы записываем, на самом деле читаем. мы можем использоватьdocker imagesдля просмотра локального списка зеркал.

Контейнер Docker можно просто понимать как предоставление системной аппаратной среды, которая фактически запускает программы проекта, потребляет ресурсы компьютера и предоставляет услуги. Например, мы можем временно думать о контейнере как о компьютере Linux, который может работать напрямую. Итак, контейнеры запускаются на основе образов, и каждый контейнер изолирован друг от друга. Обратите внимание, что контейнер создает перезаписываемый слой на основе изображения в качестве верхнего слоя при запуске. мы можем использоватьdocker ps -aПросмотр локально запущенных контейнеров.

Репозиторий Docker используется для хранения образов. Это очень похоже на Git. Мы можем загружать изображения из центрального репозитория или из нашего собственного репозитория. В то же время мы можем зафиксировать созданный образ в локальном, а затем отправить его в удаленный репозиторий. Склады делятся на общественные склады и частные склады.Крупнейшим общественным складом является официальный склад Dock Hub.Есть также много вариантов для внутренних общественных складов, таких как Alibaba Cloud.

image.png

3. Docker вносит изменения в процесс разработки

На мой взгляд, влияние Docker на процесс разработки заключается в стандартизации среды. Например, получается, что у нас есть три среды: среда разработки (ежедневная), тестовая среда и производственная среда. Здесь нам нужно развернуть одно и то же программное обеспечение, сценарии и исполнители для каждой среды, как показано. На самом деле содержимое сценария запуска согласовано, но единого обслуживания нет, и часто возникают проблемы. Кроме того, для запуска программ, если базовая операционная среда, от которой они зависят, несовместима, это также вызовет путаницу и исключения.

image.png

Теперь, когда мы представили Docker, нам нужно только поддерживать образ Docker. Другими словами, несколько сред, один образ, одна сборка на системном уровне и запуск везде. На этом этапе мы стандартизируем выполняемые сценарии, зеркально отображаем базовое программное обеспечение, а затем внедряем стандартизированные развертывания для тех же программ, которые должны быть развернуты. Таким образом, Docker предоставляет нам стандартизированную модель эксплуатации и обслуживания, а также закрепляет этапы и процессы эксплуатации и обслуживания.

image.png

Благодаря улучшению этого процесса нам легче достичь цели DevOps, потому что наш образ можно запустить в любой системе после того, как он будет сгенерирован и быстро развернут. Кроме того, большой мотивацией для использования Docker является достижение гибкого планирования на основе Docker для более полного использования машинных ресурсов и сокращения затрат.

Ха-ха, в процессе использования Docker автор тоже нашел большие плюсы, например, когда мы выпускаем откат, нам нужно только переключить TAG и перезапустить. Например, когда мы обновляем среду, нам нужно обновить только базовый образ, после чего вновь созданный образ приложения будет автоматически ссылаться на новую версию. (Добро пожаловать, чтобы добавить~~~)

2. Начните с создания веб-сервера

1. Сначала установите среду, установите Docker

Теперь нам нужно выполнить следующие шаги для установки Docker.

  • Зарегистрируйте аккаунт: наhub.docker.com/Зарегистрировать аккаунт.
  • Загрузить и установить

Официальный адрес загрузки: (Mac):скачать.docker.com/Mac/stable/…Адрес загрузки Alibaba Cloud (Mac):mirrors.aliyun.com/docker-tool…Адрес загрузки Alibaba Cloud (Windows):mirrors.aliyun.com/docker-tool…

  • Инструкция по установке Здесь дважды щелкните установочный пакет Doker.dmg, который вы только что загрузили, чтобы установить его.
    image.png

После завершения установки на верхней панели навигации Mac появляется значок, а такие операции, как настройка докера и выход, можно выполнять через меню.

image.png

Официальное руководство:docs.docker.com/install/Руководство по облаку Alibaba (Linux):Особенно Aliyun.com/articles/11…

  • Настройка сервисов ускорения

На рынке есть много поставщиков акселерационных услуг, таких как: DaoCloud, Alibaba Cloud и т. д. Здесь автор использует Alibaba Cloud. (Обратите внимание, что операционная система автора — Mac. Другие серии операций см. в документации по эксплуатации Alibaba Cloud)

image.png

Щелкните правой кнопкой мыши значок докера на верхней панели рабочего стола, выберите «Настройки» и добавьте список зеркал реестра на вкладке «Демон» (вкладка «Дополнительно» для версий до Docker 17.03).
https://xxx.mirror.aliyuncs.comДобавьте в массив «registry-mirrors», нажмите кнопку «Применить и перезапустить» и подождите, пока Docker перезапустится и применит настроенные ускорители образов.

image.png

Документы по эксплуатации облака Alibaba:Adult.console.aliyun.com/cai-Ханчжоу…

  • Посмотреть версию

На этом мы завершили установку. Вот и проверим версию.

docker version

Просмотрите результаты, как показано ниже.

image.png

2. Практично, начните с создания веб-сервера

Как исполнители, давайте сначала создадим веб-сервер. Затем автор потихоньку поведет вас разбираться, что происходило в этом процессе. Во-первых, нам нужно вытащить образ Centos.

docker run -p 80 --name web -i -t centos /bin/bash

Далее мы устанавливаем сервер nginx и выполняем следующую команду:

rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

После установки исходного кода Nginx вы можете официально установить Nginx.

yum install -y nginx

В этот момент мы входимwhereis nginxкоманда, чтобы увидеть путь установки. Наконец, нам также нужно запустить Nginx.

nginx

Теперь мы выполняемctrl + P +  QПереключиться на фон. Затем, поdocker ps -aчтобы увидеть случайно назначенные порты.

image.png

Здесь назначенный автором порт32769, затем доступ через браузерhttp://127.0.0.1:32769Вот и все.

image.png

Ты закончил, хахаха~

3. Просмотрите и поймите весь процесс

Теперь давайте разберемся с процессом. Во-первых, мы входимdocker run -p 80 --name web -i -t centos /bin/bashкоманда запускает интерактивный контейнер, где-iПараметр сообщает контейнеру Docker о том, что стандартный поток ввода должен оставаться открытым для контейнера, даже если у контейнера нет терминального соединения.-tОпция указывает Docker назначить контейнеру виртуальный терминал, чтобы мы могли установить сервер Nginx дальше. (Примечание автора: Docker также поддерживает ввод-doption указывает Docker запустить демон контейнера в фоновом режиме)

Docker автоматически генерирует случайное имя для каждого создаваемого нами контейнера. На самом деле, хотя этот метод и удобен, его читабельность очень плохая, и стоимость понимания нашего дальнейшего обслуживания будет относительно велика. Поэтому мы проходим--name weboption указывает Docker создать имя, котороеwebконтейнер. Кроме того, мы проходим-p 80Скажите Docker, чтобы он открыл порт 80, тогда Nginx сможет получить доступ и обслуживать извне. Однако наш хост-компьютер автоматически выполнит сопоставление портов.Например, порт, назначенный выше,32769, обратите внимание, что если вы закроете или перезапустите, этот порт изменится, так что как решить проблему фиксированных портов, автор подробно разберет и перенесет вас в реальный бой позже.

Здесь есть еще один очень важный момент знанияdocker run. Docker запускает новый контейнер командой run. Сначала Docker ищет образ на локальном компьютере. Если он не установлен, Docker находит образ в Docker Hub, загружает и устанавливает его на локальный компьютер. Наконец, Docker создает новый контейнер и запускает программу.

image.png

Однако при втором исполненииdocker run, поскольку Docker уже установил образ на эту машину, Docker напрямую создаст новый контейнер и запустит программу.

image.png

Пожалуйста, имейте в виду,docker runНовый контейнер создается каждый раз, когда он используется, поэтому, когда мы снова запустим этот контейнер в будущем, нам нужно будет использовать только командуdocker startВот и все. здесь,docker startРоль заключается в перезапуске существующего образа, в то время какdocker runВключает размещение изображений в контейнерахdocker create, затем запустите контейнерdocker start, как показано на рисунке.

image.png

Теперь, на основании приведенного выше случая, мы можем перейтиexitКоманда для закрытия контейнера Docker. Конечно, если мы запускаем демон в фоновом режиме, мы также можем передатьdocker stop webпрекратить. Пожалуйста, имейте в виду,docker stop и docker kill Немного отличается,docker stopотправляет сигнал SIGTERM, аdocker killОтправьте сигнал SIGKILL. Затем мы используемdocker startперезапустите его.

docker start web

Контейнер Docker будет использоваться после перезапускаdocker runкоманда для запуска с параметрами, указанными в команде, но в это время она все еще работает в фоновом режиме. мы должны пройтиdocker attachкоманда для переключения на запуск интерактивных контейнеров.

docker attach web

4. Более того, команд больше

Docker предоставляет очень богатый набор команд. Изображение стоит тысячи слов, и мы можем многое узнать из приведенных ниже изображений и их предыдущего использования. (Вы можете пропустить чтение напрямую, рекомендуется собирать, легко расширять чтение)

image.png

Если вам нужна дополнительная информация, вы можете прочитать официальную документацию по использованию.

Command Description
docker attach Attach local standard input, output, and error streams to a running container
docker build Build an image from a Dockerfile
docker builder Manage builds
docker checkpoint Manage checkpoints
docker commit Создайте новый образ из изменений контейнера
docker config Manage Docker configs
docker container Manage containers
docker cp Copy files/folders between a container and the local filesystem
docker create Create a new container
docker deploy Deploy a new stack or update an existing stack
docker diff Проверяйте изменения в файлах или каталогах в файловой системе контейнера.
docker engine Manage the docker engine
docker events Get real time events from the server
docker exec Run a command in a running container
docker export Экспорт файловой системы контейнера в виде tar-архива
docker history Show the history of an image
docker image Manage images
docker images List images
docker import Import the contents from a tarball to create a filesystem image
docker info Display system-wide information
docker inspect Return low-level information on Docker objects
docker kill Kill one or more running containers
docker load Load an image from a tar archive or STDIN
docker login Log in to a Docker registry
docker logout Log out from a Docker registry
docker logs Fetch the logs of a container
docker manifest Manage Docker image manifests and manifest lists
docker network Manage networks
docker node Manage Swarm nodes
docker pause Pause all processes within one or more containers
docker plugin Manage plugins
docker port List port mappings or a specific mapping for the container
docker ps List containers
docker pull Pull an image or a repository from a registry
docker push Push an image or a repository to a registry
docker rename Rename a container
docker restart Restart one or more containers
docker rm Remove one or more containers
docker rmi Remove one or more images
docker run Run a command in a new container
docker save Save one or more images to a tar archive (streamed to STDOUT by default)
docker search Search the Docker Hub for images
docker secret Manage Docker secrets
docker service Manage services
docker stack Manage Docker stacks
docker start Start one or more stopped containers
docker stats Display a live stream of container(s) resource usage statistics
docker stop Stop one or more running containers
docker swarm Manage Swarm
docker system Manage Docker
docker tag Create a tag TARGET_IMAGE that refers to SOURCE_IMAGE
docker top Display the running processes of a container
docker trust Manage trust on Docker images
docker unpause Unpause all processes within one or more containers
docker update Update configuration of one or more containers
docker version Show the Docker version information
docker volume Manage volumes
docker wait Block until one or more containers stop, then print their exit codes

Официальная ссылка для чтения:docs.docker.com/engine/ref Э…

5. Расширенный: упрощение репозитория и установки программного обеспечения.

Помните «изображения, контейнеры и склады», которые я представил в начале статьи? Репозиторий Docker используется для хранения образов. Мы можем загружать изображения из центрального репозитория или из нашего собственного репозитория. В то же время мы можем отправить созданный образ из локального в удаленный репозиторий.

Прежде всего, автор вводит точку знания: образ Docker — это его файловая система, образ может быть помещен на верхний слой другого образа, тогда нижний слой — это его родительский образ. Поэтому в Docker будет много слоев изображений, каждый из которых доступен только для чтения и не будет меняться. Когда мы создаем новый контейнер, Docker создает стек образов и добавляет слой для чтения и записи поверх стека, как показано на рисунке.

image.png

Теперь мы можем пройтиdocker imagesкоманда для просмотра локального зеркала.

docker images

Результат запроса показан на рисунке.

image.png

Здесь объясните значение нескольких терминов.

  • РЕПОЗИТОРИЙ: Имя репозитория.
  • TAG: зеркальный тег, где lastest представляет последнюю версию. Обратите внимание, что изображение может иметь несколько тегов, поэтому мы можем управлять полезными тегами версий и функций с помощью тегов.
  • IMAGE ID : уникальный идентификатор изображения.
  • СОЗДАН : Время создания.
  • РАЗМЕР : Размер изображения.

Тогда, если в первый раз мы пройдемdocker pull centos:latestВытащите изображение, затем, когда мы выполнимdocker run -p 80 --name web -i -t centos /bin/bash, в удаленный доступ он уже не пойдет, потому что образ уже установлен на локальной машине, поэтому Docker напрямую создаст новый контейнер и запустит программу.

Фактически, официальный представитель предоставил образ установленного Nginx, мы можем использовать его напрямую. Теперь мы пересобираем веб-сервер, извлекая образ. Во-первых, мы проходимdocker searchнайти зеркала. Получаем список зеркал Nginx.

docker search nginx

Чтобы добавить, мы также можем получить доступ к Docker Hub (hub.docker.com/) обыскать склад, то чем больше звездочек, тем он надежнее, и им можно уверенно пользоваться.

image.png

Теперь мы проходимdocker pull nginxЗагрузите последний образ Nginx. Конечно, мы также можемdocker pull nginx:latestработать.

docker pull nginx

Затем мы создаем и запускаем контейнер. В отличие от предыдущего, мы проходим-doption указывает Docker запустить демон контейнера в фоновом режиме. и через8080:80Сообщите Docker, что порт 8080 — это открытый порт, а порт 80, открытый для внешнего мира, сопоставляется с номером порта в контейнере.

docker run -p 8080:80 -d --name nginx nginx

мы проходимdocker ps -aПроверим и обнаружим, что контейнер работает в фоновом режиме, и команда nginx выполняется в фоновом режиме, а порт 8080 открыт для внешнего мира.

image.png

Поэтому, обратившись кhttp://127.0.0.1:8080Вот и все.

image.png

6. Другие варианты, используйте альтернативный сервер регистрации

Docker Hub — не единственный источник программного обеспечения, мы также можем переключиться на другие альтернативные серверы регистрации в Китае, такие как Alibaba Cloud. мы можем войтиcr.console.aliyun.comИщите и извлекайте общедоступные изображения.

image.png

image.png

Теперь мы входимdocker pullкоманда тянуть.

docker pull registry.cn-hangzhou.aliyuncs.com/qp_oraclejava/orackejava:8u172_DCEVM_HOTSWAPAGEN_JCE

Здесь автор продолжает добавлять пункт знаний: адрес сервера регистрации. Фактически существует набор спецификаций адреса сервера регистрации. Полный формат: [хост репозитория/][имя пользователя/]короткое имя контейнера[:тег]. Здесь хост репозитория — register.cn-hangzhou.aliyuncs.com, имя пользователя — qp_oraclejava, краткое имя контейнера — orackejava, а имя тега — 8u172_DCEVM_HOTSWAPAGEN_JCE. На самом деле мы прошли вышеdocker pull centos:latestВытяните изображение, которое эквивалентноdocker pull registry.hub.docker.com/centos:latest.

3. Создайте свой образ

Благодаря приведенному выше исследованию я считаю, что у вас есть общее представление об использовании Docker, точно так же, как мы установили систему через VMware и позволили ей работать, тогда мы можем запускать в этой системе Linux (CentOS или Ubuntu) все, что мы хотим. На самом деле, мы часто делаем резервные копии наших установленных систем VMware и клонируем их для нашей следующей быстрой копии. Здесь Docker также может создавать образы Docker с настраиваемым содержимым, например, мы использовали официальные образы Docker с установленным выше Nginx. Обратите внимание, что мы создаем новое изображение только путем добавления слоя изображения поверх существующего базового изображения.

Подводя итог, Docker предоставляет возможность настраивать образы, что позволяет нам сохранять изменения в базовом образе и использовать его снова. Затем мы можем упаковать операционную систему, операционную среду, сценарии и программы вместе и предоставить внешние службы на хосте.

Docker создает образы двумя способами.docker commitкоманда, еще один способ использованияdocker buildкоманда иDockerfileдокумент. Среди них не рекомендуется использоватьdocker commitКоманда для сборки, потому что она не стандартизирует весь процесс, поэтому более рекомендуется на предприятии.docker buildкоманда иDockerfileфайл для создания нашего образа. Мы используемDockerfileфайлы могут сделать сборку образов более воспроизводимой, обеспечивая при этом стандартизацию сценариев запуска и запуска программ.

1. Соберите первый Dockerfile

Теперь давайте перейдем к реальному бою. Здесь мы создаем образ веб-сервера, который мы создали в начале. Во-первых, нам нужно создать пустой Dokcerfile.

mkdir dockerfile_test
cd dockerfile_test/
touch Dockerfile
nano Dockerfile

Далее нам нужно написать файл Dockerfile, листинг кода выглядит следующим образом

FROM centos:7
MAINTAINER LiangGzone "lianggzone@163.com"
RUN rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
RUN yum install -y nginx
EXPOSE 80

Наконец, мы проходимdocker buildкоманда построить.

docker build -t="lianggzone/nginx_demo:v1" .

Теперь давайте пройдемсяdocker imagesОцените наше новое изображение.

image.png

2. Поймите весь процесс Dockerfile

Вау, мы успешно создали новый образ, написав Dockerfile. Процесс невероятно прост. Теперь давайте разберемся во всем процессе. Во-первых, FROM centos:7является необходимым первым шагом Dockerfile, он запустит контейнер из существующего образа, другими словами, Docker должен полагаться на базовый образ для сборки. Здесь мы указываем Centos в качестве базового образа версии 7 (CentOS 7). Затем мы проходимMAINTAINER LiangGzone "lianggzone@163.com"Укажите, что автор зеркала — LiangGzone, а адрес электронной почты — lianggzone@163.com. Это помогает информировать пользователей об авторе и контактных данных. Затем мы выполняем две инструкции RUN для загрузки и установки Nginx и, наконец, передаемEXPOSE 80Откройте порт 80 контейнера Docker. Обратите внимание, что порядок выполнения Docker выполняется сверху вниз, поэтому нам нужно уточнить порядок выполнения всего процесса. Кроме того, Docker создает новый слой образа и фиксирует его после выполнения каждой команды.

Мы используем docker buildкоманду построить, указав- tСообщите Docker имя и версию образа. Обратите внимание: если теги не указаны, Docker автоматически установит для образа последний тег. Еще один момент, у нас наконец есть еще один.Это должно заставить Docker перейти в текущий локальный каталог, чтобы найти файл Dockerfile. Обратите внимание, что Docker будет отправлять результат в виде изображения на каждом этапе сборки, а затем обрабатывать предыдущий слой изображения как кеш, поэтому, когда мы пересобираем аналогичный слой изображения, мы будем напрямую повторно использовать предыдущий образ. Если нам нужно пропустить, мы можем использовать--no-cacheoption говорит Docker не кэшировать.

3. Детали инструкций Dockerfile

Dockerfile предоставляет множество инструкций. Автор специально составил здесь список, который рекомендуется к сбору и просмотру.

image.png

Официальный адрес:docs.docker.com/engine/ref Э…

Идентификация команды 1: RUN, CMD, ENTRYPOINT

RUN,CMD,ENTRYPOINTЦель трех инструкций очень знакома, разница в том,RUNДирективы — это команды, запускаемые при сборке контейнера.CMD,ENTRYPOINTэто команда оболочки, выполняемая при запуске контейнера, иRUN Будетdocker runпереопределение команды, ноENTRYPOINTне будет перезаписан. По факту,docker runЛюбые параметры, указанные командой, будут снова переданы в качестве параметров дляENTRYPOINTинструкция.CMD,ENTRYPOINTЕго также можно использовать вместе между двумя командами. Например, мы можем использоватьENTRYPOINTФорма exec устанавливает фиксированную команду и параметры по умолчанию, а затем использует любую формуCMDдля установки других значений по умолчанию, которые могут быть изменены.

FROM ubuntu
ENTRYPOINT ["top", "-b"]
CMD ["-c"]

Идентификация инструкции 2: ДОБАВИТЬ, КОПИРОВАТЬ

ADD,COPYИспользование команды такое же, единственное отличиеADDПоддерживает извлечение и распаковку архивных файлов (tar, gzip, bzip2 и т. д.). Пожалуйста, имейте в виду,COPYКаталог, который будет скопирован инструкцией, должен находиться в каталоге того же уровня, что и файл Dockerfile.

4. Отправьте образ в удаленный репозиторий.

Удаленный репозиторий: Docker Hub

После создания образа мы можем загрузить его в Docker Hub. Сначала нам нужно пройтиdocker loginУбедитесь, что мы вошли в систему. Далее мы используемdocker pushкоманда нажать.

docker push lianggzone/nginx_demo:v1

Здесь мы понимаем его использование, форматdocker push [OPTIONS] NAME[:TAG], где автор устанавливает имя lianggzone/nginx_demo и TAG v1. (Примечание автора: скорость загрузки Docker Hub очень низкая, пожалуйста, терпеливо подождите) Наконец, после завершения загрузки, посетите:Hubei.docker.com/U/ два слова, ох ты.../, как показано на рисунке.

image.png

Удаленный склад: Alibaba Cloud

В то же время мы также можем использовать внутренние склады, такие как Alibaba Cloud. Сначала войдите в экземпляр реестра, введя свои учетные данные для доступа в терминале. Если вы не знаете какой, вы можете посетитьAdult.console.aliyun.com/cai-Ханчжоу….

docker login --username=帐号 registry.cn-hangzhou.aliyuncs.com

Теперь отправьте образ в репозиторий образов Alibaba Cloud. в,docker tag [IMAGE_ID] registry.cn-hangzhou.aliyuncs.com/[命名空间]/[镜像名称]:[版本] иdocker push registry.cn-hangzhou.aliyuncs.com/[命名空间]/[镜像名称]:[版本]Использование команды следующее.

docker tag 794c07361565 registry.cn-hangzhou.aliyuncs.com/lianggzone/nginx_demo:v1
docker push registry.cn-hangzhou.aliyuncs.com/lianggzone/nginx_demo:v1

Наконец, после завершения загрузки посетите:Adult.console.aliyun.com/cai-Ханчжоу…, как показано на рисунке.

image.png

5. Адрес источника Dockerfile на Github

Здесь прилагается репозиторий скомпилированного мной Dockerfile. Позже автор будет обновлять некоторые часто используемые файлы один за другим, добро пожаловать, обратите внимание.

GitHub.com/две зоны/…

Прикрепленный: Ссылки

(Конец, перепечатка с указанием автора и источника.)

напиши в конце

[Мышление на стороне сервера]: давайте поговорим об основных технологиях на стороне сервера, а также обсудим структуру проекта и практический опыт первой линии Интернета. В то же время семья «заднего круга», в которой много технических экспертов, с нетерпением ждет вашего присоединения, группы людей с одинаковой частотой, которые вместе растут, вместе совершенствуются и ломают ограничения познания.

Еще больше интересных статей в разделе «Серверное мышление»!