Полный список часто используемых команд Docker (основные, зеркало, контейнер, том данных).
Полный список часто используемых команд Docker (основные, зеркало, контейнер, том данных).

1. основные команды докера

Язык кода:shell
копировать
systemctl start docker     #Запустить докер
systemctl stop docker      #Закрыть докер
systemctl restart docker   #Перезапускаем докер
systemctl enable docker    #Устанавливаем автозапуск при загрузке
systemctl status docker    #Просмотр статуса работы докера
docker version             #Просмотр информации о номере версии докера
docker info
docker --help              #dockerЗаказнамекать

2.команда изображения Docker

2.1 Название изображения

Название изображения состоит из:

  • Имена зеркал обычно состоят из двух частей: репозиторий:тег.
  • Если тег не указан, по умолчанию используется последняя версия изображения.

Как показано на рисунке:

Mysql здесь — это репозиторий, 5.7 — это тег, и вместе они представляют собой имя образа, которое представляет версию 5.7 образа MySQL.

2.2 Команда «Зеркало»

Общие команды управления зеркалом. Как показано на рисунке:

Язык кода:shell
копировать
docker images  #Посмотреть в зеркало


#Извлекаем изображение с сервера Извлекаем изображение
docker pull Название изображения       #Извлекаем последнюю версию образа
docker pull Название изображения:tag   #Вытаскиваем образ и указываем версию
#Отправляем изображение в сервис
docker push Название изображения
docker push Название изображения:tag


docker save -o Имя сохраненного целевого файла Название изображения #Сохраняем изображение как сжатый пакет
docker load -i имя файла    #Загружаем сжатый пакет как изображение

#fromDocker Хаб Зеркало поиска/поиска
docker search [options] TERM      
docker search -f STARS=9000 mysql  #Поиск изображений MySQL с количеством звездочек не менее 10

#Удалить изображение. Текущее изображение не используется ни одним контейнером. удалить
docker rmi Название изображения/зеркалоID     #Удалить изображение 
docker rmi -f Название изображения/зеркалоID  #Принудительное удаление
docker rmi -f Название изображения Название изображения Название изображения     #Удалить несколько Идентификатор зеркала или зеркало могут быть разделены пробелами. 
docker rmi -f $(docker images -aq)  #Удалить все изображения, -a Это значит показать все, -q Это означает только отображаемый идентификатор

docker image rm Название изображения/зеркалоID  #Принудительное удалениезеркало


#отметьте зеркало【Иногда это зависит от бизнеса нуждаться Если вам нужно классифицировать изображение или выполнить операции итерации версий, вам необходимо пометить изображение]
docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

2.3 Случай 1. Вытяните и просмотрите изображение.

Извлеките образ nginx из DockerHub и просмотрите его.

1) Сначала перейдите в хранилище образов и найдите образ nginx.,напримерDockerHub:

2) По названию просмотренного образа вытягиваем нужный вам образ через команду: docker pull nginx

3) Просмотрите полученное изображение с помощью команды: docker images.

2.4 Вариант 2. Сохранение и импорт изображений

Требование: используйте docker save, чтобы экспортировать образ nginx на диск, а затем загрузить его обратно через загрузку.

1) Используйте команду docker xx --help, чтобы просмотреть синтаксис сохранения и загрузки Docker.

Например, чтобы просмотреть использование команды сохранения, вы можете ввести команду:

Язык кода:sh
копировать
docker save --help

Формат команды:

Язык кода:shell
копировать
docker save -o [Имя сохраненного целевого файла] [Название изображения]

2) Используйте сохранение Docker, чтобы экспортировать изображение на диск.

Запустить команду:

Язык кода:sh
копировать
docker save -o nginx.tar nginx:latest

3) Используйте загрузку докера для загрузки изображения.

Сначала удалите локальный образ nginx:

Язык кода:sh
копировать
docker rmi nginx:latest

Затем запустите команду для загрузки локального файла:

Язык кода:sh
копировать
docker load -i nginx.tar

3.команда контейнера docker

3.1 Инструкции для контейнера

Для запуска докер-контейнера требуется поддержка образа.

Команды для операций с контейнером. Как показано на рисунке:

Контейнеры защищают три состояния:

  • Выполняется: процесс работает нормально.
  • Пауза: процесс приостанавливается, процессор больше не работает, а память не освобождается.
  • Остановить: процесс завершается, а память, процессор и другие ресурсы, занятые процессом, перерабатываются.

в:

  • docker run: создать и запустить контейнер в работающем состоянии.
  • имя паузы в докере: приостановить работающий контейнер.
  • имя docker unpause: возобновить работу контейнера из приостановленного состояния.
  • имя остановки docker: остановить работающий контейнер (завершить процесс, освободить память, оставив только файловую систему).
  • стартовое имя докера: снова запустить остановленный контейнер.
  • имя перезапуска докера: перезапустить контейнер
  • docker rm: удалить контейнер (полностью убить процесс, перезапустить память и файловую систему)
Язык кода:sh
копировать
docker ps      #Показать работающие контейнеры
docker ps -a   #-a,--all  Показать все контейнеры, включая остановленные (по умолчанию отображаются только работающие контейнеры)

#Как получить контейнер? docker run Создайте и запустите контейнер в работающем состоянии.
#--name Имя, присвоенное запускаемому контейнеру;   -p Сопоставьте порт хоста с портом контейнера. Левая часть двоеточия — это порт хоста, а правая часть — порт контейнера.   -d Указывает, что контейнер можно запускать в фоновом режиме. (Операция «Страж»). См. конкретные примеры ниже.
docker run --name containerName -p 80:80 -d nginx   

docker pause Имя контейнера/идентификатор контейнера    # Приостановить работающий контейнер
docker unpause name  #Возобновляем работу контейнера из приостановленного состояния
docker stop name     #Остановить работающий контейнер (убить процесс, освободить память, оставить только файловую систему)
docker start name    #Запускаем остановленный контейнер снова
docker restart name  #Перезапустить контейнер
#docker стоп и докер Разница между kill: оба могут завершить работающий докер-контейнер. Похоже на: «убей и убей» в Linux -9 эти две команды, докер стоп похож на kill, докер убить и убить -9 подобных
docker kill Имя контейнера    #Уничтожаем работающий контейнер
docker rename Имя контейнера новый Имя контейнера  #заменять Имя контейнера

#Удалить контейнер
docker rm Имя контейнера/идентификатор контейнера            #Удалить контейнер  
docker rm -f CONTAINER           #Принудительное удаление
docker rm -f Имя контейнера Имя контейнера Имя контейнера   #Удалить несколькоконтейнер Разделяйте удаляемые поля пробелами. контейнераиликонтейнерID
docker rm -f $(docker ps -aq)    #Удалить все контейнеры


docker logs Имя контейнера        #Просмотр журналов работы контейнера         
docker logs -f Имя контейнера     #Непрерывный журнал отслеживания
docker logs -f --tail=20 Имя контейнера  #Проверьте, сколько строк в конце


#Войдите в контейнер для выполнения команды двумя способами docker exec и docker прикрепить, порекомендовать докер exec
#метод1 docker exec。
docker exec -it Имя контейнера/идентификатор контейнера bash
#метод2 docker прикрепить, рекомендуется использовать докер exec
docker attach Имя контейнера/идентификатор контейнера

#Отходим из контейнера на свой сервер (ctrl+C использовать нельзя)
exit      #Выходим напрямую. Не добавлять в-d (постоянно работающий контейнер), выполните этот параметр Контейнер будет закрыт
ctrl+p+q  #Выйдите изящно. Добавлять или нет параметр в-d, контейнер не закроется при выполнении этой команды
Язык кода:sh
копировать
#Устанавливаем автоматический запуск контейнера при загрузке
#Файи Создавайте контейнеры и используйте Docker runЗаказчас,добавить в Параметр --restart=always означает, что контейнер будет запускаться автоматически при запуске службы докеров.
docker run --name mysqlLatest -p 3307:3306 --restart=always -d mysql

#Если контейнер был запущен, вы хотите настроить его автоматический запуск при загрузке.
docker update Имя контейнера/идентификатор контейнера --restart=always

3.2 Случай — создание и запуск контейнера

Команда для создания и запуска контейнера nginx:

Язык кода:sh
копировать
docker run --name containerName -p 80:80 -d nginx

Интерпретация команды:

  • docker run: создать и запустить контейнер
  • --name: дать контейнеру имя, например mn
  • -p: сопоставляет порт хоста с портом контейнера. Левая часть двоеточия — это порт хоста, а правая часть — порт контейнера. Порт хоста может быть произвольным, пока он не занят, порт в контейнере зависит от самого приложения.
  • -d: запустить контейнер в фоновом режиме, обычно добавляется
  • nginx: имя образа, например nginx, если тег не указан, по умолчанию используется последняя версия.

Вот-pпараметр,Он сопоставляет порт контейнера с портом хоста.

По умолчанию контейнер представляет собой изолированную среду. Если мы напрямую обратимся к порту 80 хоста, мы точно не сможем получить доступ к nginx в контейнере.

Теперь свяжите порт 80 контейнера с портом 80 хоста. Когда мы получим доступ к порту 80 хоста, он будет сопоставлен с портом 80 контейнера, чтобы мы могли получить доступ к nginx:

3.3 Случай — войдите в контейнер и измените файл.

нуждаться:ВходитьNginxконтейнер,Изменить содержимое HTML-файла,добавить «Передовое развитие приветствует вас»

намекать:Входитьконтейнернужно использоватьdocker исполнительная команда.

шаг

1) Войдите в контейнер. Команда для входа в только что созданный контейнер nginx:

Язык кода:sh
копировать
docker exec -it mn bash
#docker exec -it mr redis-cli

Интерпретация команды:

  • docker exec: войдите в контейнер и выполните команду [exit для выхода из контейнера]
  • -it: создать стандартный терминал ввода и вывода для текущего введенного контейнера, что позволит нам взаимодействовать с контейнером.
  • mn: имя контейнера для входа
  • bash: команда, выполняемая после входа в контейнер, представляет собой интерактивную команду терминала Linux. Все предыдущие команды cd ls являются частью команды bash redis-cli, которая напрямую подключается к redis;

2) Введите каталог, в котором находится HTML-код nginx, /usr/share/nginx/html (см. официальную документацию).

Внутри контейнера будет смоделирована независимая файловая система Linux, которая выглядит как Linux-сервер:

Окружающая среда, конфигурация и рабочие файлы nginx находятся в этой файловой системе, включая html-файл, который мы хотим изменить.

Просмотрите страницу nginx на веб-сайте DockerHub.,могу знатьnginxизhtmlМестоположение каталога/usr/share/nginx/html

Выполняем команду и входим в каталог:

Язык кода:sh
копировать
cd /usr/share/nginx/html

Просмотрите файлы в каталоге:

3) Измените содержимое index.html.

В контейнере нет команды vi, и ее нельзя изменить напрямую. Для ее изменения мы используем следующую команду:

Язык кода:sh
копировать
sed -i -e 's#Welcome to nginx#Продвинутая разработка приветствует вас#g' -e 's#<head>#<head><meta charset="utf-8">#g' index.html

#или
sed -i 's#Welcome to nginx#Продвинутая разработка приветствует вас#g' index.html
sed -i 's#<head>#<head><meta charset="utf-8">#g' index.html

Получите доступ к адресу вашей собственной виртуальной машины в браузере, например, у меня: http://10.169.112.153:85/, и вы увидите результат:

Остановить контейнер: выйти из контейнера

3.4 Резюме

Каковы общие параметры команды запуска Docker?

  • --name: указать имя контейнера
  • -p: указать сопоставление портов
  • -d: позволить контейнеру работать в фоновом режиме

Команда для просмотра логов контейнера:

  • docker logs
  • Добавьте параметр -f для непрерывного просмотра журнала.

Посмотреть статус контейнера:

  • docker ps
  • docker ps -a Посмотреть все контейнеры, включая остановленные

4. Объем данных

В случае nginx 3.3 при изменении html-страницы nginx вам необходимо ввести nginx. А поскольку редактора нет, редактировать файлы тоже очень хлопотно.

Это следствие связи между контейнером и данными (файлами в контейнере).

Чтобы решить эту проблему, данные необходимо отделить от контейнера, что требует использования томов данных.

4.1 Что такое объем данных

Объем данных (объем)это виртуальный каталог,Указывает на каталог в файловой системе хоста.

  • Контейнерам доступны специальные каталоги, которые можно совместно использовать и повторно использовать между контейнерами.
  • вернообъем Изменения данных вступят в силу немедленно, поскольку объем данныхиз Даженовый Не повлияет на зеркалирование
  • Том будет существовать до тех пор, пока не перестанут использоваться контейнеры.

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

Таким образом, когда мы работаем с каталогом /var/lib/docker/volumes/html на хосте, это эквивалентно работе с каталогом /usr/share/nginx/html в контейнере.

Два файла монтируют один и тот же том данных, и данные являются общими; контейнер обновления удаляется, но том данных не удаляется, а каталог жесткого диска все еще существует.

4.2 Команды работы с объемом данных

4.2.1 Монтирование тома данных

При создании контейнера вы можете использовать параметр -v для подключения тома данных к каталогу в контейнере. Формат команды следующий:

Язык кода:sh
копировать
docker run \
  --name mn \
  -v html:/root/html \
  -p 8080:80
  nginx \

Здесь -v — это команда для монтирования тома данных:

  • -v volumeName:/targetContainerPath Если том не существует во время работы контейнера, он будет создан автоматически.。В большинстве случаев нет необходимости создавать его вручную.объем данные, автоматически завершаемые докером
  • -v html:/root/htm : поместить htmlобъем данные монтируются в каталог /root/html в контейнере

Создание, удаление и изменение файлов в контейнере — синхронизация каталогов, подключенная снаружи хоста.

Удаление контейнера — каталоги, смонтированные снаружи хоста, не будут синхронизироваться.【не из-задляконтейнеризудалить И удалите каталог, смонтированный на внешнем хосте]

4.2.2 Основной синтаксис для операций с объемами данных

Язык кода:sh
копировать
docker volume [COMMAND]

Команда Docker Volume — это операция с объемом данных. Следующая операция определяется в соответствии с командой, следующей за командой:

  • create VolumeName создает том, обычно связанный с каталогом хоста /var/lib/docker/volumes/.
  • проверить имя тома отображает информацию об одном или нескольких томах
  • ls перечисляет все тома
  • prune удаляет неиспользуемые тома
  • rm VolumeName удаляет один или несколько указанных томов

Уведомление

1)docker inspect Точка монтирования, запрошенная имям тома означает, чтообъем данныхсуществоватьКакой каталог на хост-компьютере(Обычно нам не нужно устанавливать),объем данных——Каталог хоста

2)docker -v в запуске означает ВоляКаталог внутри контейнерамонтировать наобъем данных,объем данных——Каталог внутри контейнера

4.2.3 Подключите контейнер к локальному каталогу

Контейнеры могут не только монтировать тома данных, но и напрямую монтировать их в каталог хоста. Связь следующая.

  • приноситьобъем данныхмодель:Каталог хоста --> объем данных ---> Каталог внутри контейнера
  • Каталог хоста ---> Каталог внутри контейнера

Как показано на рисунке:

грамматика

Синтаксис монтирования каталога и тома данных аналогичен: [Ранее монтирование тома данных было -v имя_тома:/targetContainerPath, и файлы можно монтировать напрямую, перезаписывая файлы в контейнере].

  • -v Каталог хоста:Каталог внутри контейнера
  • -v файл хоста: файл в контейнере

Пример

Создайте и запустите контейнер MySQL и смонтируйте каталог хоста непосредственно в контейнер.

1) Вытащите образ MySQL через Docker Pull MySQL: 5.7.25.

2) Создайте каталог /tmp/mysql/data.

3) Создайте каталог /tmp/mysql/conf, создайте в этом каталоге новый файл hmy.cnf и напишите следующее содержимое.

Язык кода:cnf
копировать
[mysqld]
skip-name-resolve
character_set_server=utf8
datadir=/var/lib/mysql
server-id=1000

4) Заходим в DockerHub, чтобы проверить информацию, создаем и запускаем контейнер MySQL, требования такие:

① Подключите /tmp/mysql/data к каталогу хранения данных в контейнере MySQL.

② Подключите /tmp/mysql/conf/hmy.cnf к файлу конфигурации контейнера MySQL.

③Установить пароль MySQL

Язык кода:sh
копировать
docker run --name mm -e MYSQL_ROOT_PASSWORD=123 -p 3307: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

Окончание .d указывает каталог, -e устанавливает переменную среды.

4.3 Случай

4.3.1 Создание и просмотр томов данных

нуждаться:Создайтеобъем данных,и просмотретьобъем расположение каталога данных на хост-машине

① Создать том данных

Язык кода:sh
копировать
docker volume create html

② Просмотр всех данных

Язык кода:sh
копировать
docker volume ls

③ Просмотр сведений об объеме данных

Язык кода:sh
копировать
docker volume inspect html

Как видите, HTML-код, который мы создали, имеет объем. данныхассоциацияиз Каталог хостадля/var/lib/docker/volumes/html/_dataОглавление。

4.3.2 Подключите том данных к nginx

нуждаться:Создайтеnginxконтейнер,Измените содержимое index.html в каталоге html контейнера.

анализировать:3.3Случайсередина,Входим внутрь контейнера nginx,Уже знаюnginxизhtmlОглавление Местосуществовать Расположение/usr/share/nginx/html , нам необходимо смонтировать этот каталог к ​​тому данных html, чтобы облегчить работу с его содержимым.

намекать:бегатьконтейнерчас使用 -v Параметры для подключения Fifer тома данных

шаг:

① Создайте контейнер и смонтируйте том данных в каталог HTML в контейнере.

Язык кода:sh
копировать
docker run --name mn -v html:/usr/share/nginx/html -p 80:80 -d nginx      

② Введите местоположение тома данных HTML и измените содержимое HTML.

Язык кода:sh
копировать
# Посмотреть htmlобъем данныхиз Расположение
docker volume inspect html
# Войдите в этот каталог
cd /var/lib/docker/volumes/html/_data  #объем данные здесь, контейнер выше -v справа
# Изменить файлы
vi index.html

Найден после тестирования

  • Создание, удаление и изменение файлов в контейнере — синхронизация каталогов, подключенная снаружи хоста.
  • Удаление контейнера — каталоги, смонтированные снаружи хоста, не будут синхронизироваться.

4.3.3 Подключите локальный каталог для Redis

Язык кода:sh
копировать
docker run -p 6379:6379 --name redis -v /mydata/redis/data:/data \
-v /mydata/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf

#Используйте образ redis для выполнения команды redis-cli для подключения
docker exec -it redis redis-cli

Конфигурация Redis по умолчанию не сохраняется (на жестком диске). Все данные хранятся в памяти. Если вы перезапустите Redis (докер перезапустите Redis), данные исчезнут — добавьте в redis.conf только добавление (последняя версия). по умолчанию используется постоянство, в этой операции нет необходимости)

4.4 Резюме

  • объем данныхизэффект:
    • Отделите и отделите контейнер от данных, чтобы облегчить работу с данными в контейнере и обеспечить безопасность данных.
  • объем данныхдействовать:
    • docker volume create VolumeName: создать объем данных
    • docker volume ls: просмотреть весь объем данных
    • docker volume inspect VolumeName: Просмотр объема данные, включая связанный Каталог хоста Расположение
    • docker volume rm VolumeName: удалить указанный том данных
    • docker volume prune: удалить весь неиспользуемый объем данных
  • docker Передано в команде запуска -v параметр挂载文件или Оглавлениеприезжатьконтейнерсередина:
    • -v volumeимя:Каталог внутри контейнера
    • -v файл хоста: файл в контейнере
    • -v Каталог хоста:Каталог внутри контейнера
  • объем данныхмонтировать с Оглавление Монтировать напрямуюиз
    • объем данные имеют низкую связанность при монтировании, и докер управляет каталогом, но каталог глубок и его трудно найти (автоматическое подробности скрыты)
    • Связь с монтированием каталога высока, и нам нужно самостоятельно управлять каталогом, но каталог легко найти и просмотреть (детали можно управлять и реализовать самостоятельно) никакой автоматизации)
boy illustration
Углубленный анализ переполнения памяти CUDA: OutOfMemoryError: CUDA не хватает памяти. Попыталась выделить 3,21 Ги Б (GPU 0; всего 8,00 Ги Б).
boy illustration
[Решено] ошибка установки conda. Среда решения: не удалось выполнить первоначальное зависание. Повторная попытка с помощью файла (графическое руководство).
boy illustration
Прочитайте нейросетевую модель Трансформера в одной статье
boy illustration
.ART Теплые зимние предложения уже открыты
boy illustration
Сравнительная таблица описания кодов ошибок Amap
boy illustration
Уведомление о последних правилах Points Mall в декабре 2022 года.
boy illustration
Даже новички могут быстро приступить к работе с легким сервером приложений.
boy illustration
Взгляд на RSAC 2024|Защита конфиденциальности в эпоху больших моделей
boy illustration
Вы используете ИИ каждый день и до сих пор не знаете, как ИИ дает обратную связь? Одна статья для понимания реализации в коде Python общих функций потерь генеративных моделей + анализ принципов расчета.
boy illustration
Используйте (внутренний) почтовый ящик для образовательных учреждений, чтобы использовать Microsoft Family Bucket (1T дискового пространства на одном диске и версию Office 365 для образовательных учреждений)
boy illustration
Руководство по началу работы с оперативным проектом (7) Практическое сочетание оперативного письма — оперативного письма на основе интеллектуальной системы вопросов и ответов службы поддержки клиентов
boy illustration
[docker] Версия сервера «Чтение 3» — создайте свою собственную программу чтения веб-текста
boy illustration
Обзор Cloud-init и этапы создания в рамках PVE
boy illustration
Корпоративные пользователи используют пакет регистрационных ресурсов для регистрации ICP для веб-сайта и активации оплаты WeChat H5 (с кодом платежного узла версии API V3)
boy illustration
Подробное объяснение таких показателей производительности с высоким уровнем параллелизма, как QPS, TPS, RT и пропускная способность.
boy illustration
Удачи в конкурсе Python Essay Challenge, станьте первым, кто испытает новую функцию сообщества [Запускать блоки кода онлайн] и выиграйте множество изысканных подарков!
boy illustration
[Техническая посадка травы] Кровавая рвота и отделка позволяют вам необычным образом ощипывать гусиные перья! Не распространяйте информацию! ! !
boy illustration
[Официальное ограниченное по времени мероприятие] Сейчас ноябрь, напишите и получите приз
boy illustration
Прочтите это в одной статье: Учебник для няни по созданию сервера Huanshou Parlu на базе CVM-сервера.
boy illustration
Cloud Native | Что такое CRD (настраиваемые определения ресурсов) в K8s?
boy illustration
Как использовать Cloudflare CDN для настройки узла (CF самостоятельно выбирает IP) Гонконг, Китай/Азия узел/сводка и рекомендации внутреннего высокоскоростного IP-сегмента
boy illustration
Дополнительные правила вознаграждения амбассадоров акции в марте 2023 г.
boy illustration
Можно ли открыть частный сервер Phantom Beast Palu одним щелчком мыши? Супер простой урок для начинающих! (Прилагается метод обновления сервера)
boy illustration
[Играйте с Phantom Beast Palu] Обновите игровой сервер Phantom Beast Pallu одним щелчком мыши
boy illustration
Maotouhu делится: последний доступный внутри страны адрес склада исходного образа Docker 2024 года (обновлено 1 декабря)
boy illustration
Кодирование Base64 в MultipartFile
boy illustration
5 точек расширения SpringBoot, супер практично!
boy illustration
Глубокое понимание сопоставления индексов Elasticsearch.
boy illustration
15 рекомендуемых платформ разработки с нулевым кодом корпоративного уровня. Всегда найдется та, которая вам понравится.
boy illustration
Аннотация EasyExcel позволяет экспортировать с сохранением двух десятичных знаков.