Перейти к содержимому

Как перезапустить контейнер docker

  • автор:

Шпаргалка с командами Docker

Прим. перев.: Неделю назад Aymen El Amri, руководящий компанией eralabs и создавший обучающий курс «Безболезненный Docker», опубликовал свой Docker Cheat Sheet — шпаргалку по основным командам Docker. Git-репозиторий этого документа на GitHub уже набрал 1000+ stars и несколько сторонних контрибьюторов, что подтвердило его актуальность и пользу.

Представленные здесь команды описаны минимально (с акцентом на читаемость как есть) и включают в себя установку Docker, работу с реестрами и репозиториями, контейнерами, образами, сетью, Docker Swarm. Ниже представлен перевод шпаргалки в её состоянии на 2 сентября с дополнениями из комментариев ниже.

Установка

Linux

curl -sSL https://get.docker.com/ | sh

Mac

Скачайте dmg по этой ссылке:

https://download.docker.com/mac/stable/Docker.dmg

Windows

Используйте MSI-инсталлятор:

https://download.docker.com/win/stable/InstallDocker.msi

Реестры и репозитории Docker

Вход в реестр

docker login
docker login localhost:8080

Выход из реестра

docker logout
docker logout localhost:8080

Поиск образа

docker search nginx
docker search nginx -- filter stars=3 --no-trunc busybox

Pull (выгрузка из реестра) образа

docker pull nginx
docker pull eon01/nginx localhost:5000/myadmin/nginx

Push (загрузка в реестр) образа

docker push eon01/nginx
docker push eon01/nginx localhost:5000/myadmin/nginx

Первые действия с контейнерами

Создание контейнера

docker create -t -i eon01/infinite --name infinite

Первый запуск контейнера

docker run -it --name infinite -d eon01/infinite

Переименование контейнера

docker rename infinite infinity

Удаление контейнера

docker rm infinite

Обновление контейнера

docker update --cpu-shares 512 -m 300M infinite

Запуск и остановка контейнеров

Запуск остановленного контейнера

docker start nginx

Остановка

docker stop nginx

Перезагрузка

docker restart nginx

Пауза (приостановка всех процессов контейнера)

docker pause nginx

Снятие паузы

docker unpause nginx

Блокировка (до остановки контейнера)

docker wait nginx

Отправка SIGKILL (завершающего сигнала)

docker kill nginx

Отправка другого сигнала

docker kill -s HUP nginx

Подключение к существующему контейнеру

docker attach nginx

Получение информации о контейнерах

Работающие контейнеры

docker ps
docker ps -a

Логи контейнера

docker logs infinite

Информация о контейнере

docker inspect infinite
docker inspect --format '>' $(docker ps -q)

События контейнера

docker events infinite

Публичные порты

docker port infinite

Выполняющиеся процессы

docker top infinite

Использование ресурсов

docker stats infinite

Изменения в файлах или директориях файловой системы контейнера

docker diff infinite

Управление образами

Список образов

docker images

Создание образов

docker build .
docker build github.com/creack/docker-firefox
docker build - < Dockerfile
docker build - < context.tar.gz
docker build -t eon/infinite .
docker build -f myOtherDockerfile .
curl example.com/remote/Dockerfile | docker build -f - .

Удаление образа

docker rmi nginx

Загрузка репозитория в tar (из файла или стандартного ввода)

docker load < ubuntu.tar.gz
docker load --input ubuntu.tar

Сохранение образа в tar-архив

docker save busybox > ubuntu.tar

Просмотр истории образа

docker history

Создание образа из контейнера

docker commit nginx

Тегирование образа

docker tag nginx eon01/nginx

Push (загрузка в реестр) образа

docker push eon01/nginx

Сеть

Создание сети

docker network create -d overlay MyOverlayNetwork
docker network create -d bridge MyBridgeNetwork
docker network create -d overlay \ --subnet=192.168.0.0/16 \ --subnet=192.170.0.0/16 \ --gateway=192.168.0.100 \ --gateway=192.170.0.100 \ --ip-range=192.168.1.0/24 \ --aux-address="my-router=192.168.1.5" --aux-address="my-switch=192.168.1.6" \ --aux-address="my-printer=192.170.1.5" --aux-address="my-nas=192.170.1.6" \ MyOverlayNetwork

Удаление сети

docker network rm MyOverlayNetwork

Список сетей

docker network ls

Получение информации о сети

docker network inspect MyOverlayNetwork

Подключение работающего контейнера к сети

docker network connect MyOverlayNetwork nginx

Подключение контейнера к сети при его запуске

docker run -it -d --network=MyOverlayNetwork nginx

Отключение контейнера от сети

docker network disconnect MyOverlayNetwork nginx

Очистка Docker

Удаление работающего контейнера

docker rm nginx

Удаление контейнера и его тома (volume)

docker rm -v nginx

Удаление всех контейнеров со статусом exited

docker rm $(docker ps -a -f status=exited -q)

Удаление всех остановленных контейнеров

docker container prune
docker rm `docker ps -a -q`

Удаление контейнеров, остановленных более суток назад

docker container prune --filter "until=24h"

Удаление образа

docker rmi nginx

Удаление неиспользуемых (dangling) образов

docker image prune
docker rmi $(docker images -f dangling=true -q)

Удаление неиспользуемых (dangling) образов даже с тегами

docker image prune -a

Удаление всех образов

docker rmi $(docker images -a -q)

Удаление всех образов без тегов

docker rmi -f $(docker images | grep "^" | awk "")

Остановка и удаление всех контейнеров

docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q)

Удаление неиспользуемых (dangling) томов

docker volume prune
docker volume rm $(docker volume ls -f dangling=true -q)

Удаление неиспользуемых (dangling) томов по фильтру

docker volume prune --filter "label!=keep"

Удаление неиспользуемых сетей

docker network prune

Удаление всех неиспользуемых объектов

docker system prune

По умолчанию для Docker 17.06.1+ тома не удаляются. Чтобы удалились и они тоже:

docker system prune --volumes

Docker Swarm

Установка Docker Swarm

curl -ssl https://get.docker.com | bash

Прим. перев.: в Docker версий 1.12.0+ ничего дополнительно устанавливать не требуется, т.к. Docker Swarm встроен в Docker Engine в виде специального режима (Swarm mode).

Инициализация Swarm

docker swarm init --advertise-addr 192.168.10.1

Подключение рабочего узла (worker) к Swarm

docker swarm join-token worker

Подключение управляющего узла (manager) к Swarm

docker swarm join-token manager

Список сервисов

docker service ls

Список узлов

docker node ls

Создание сервиса

docker service create --name vote -p 8080:80 instavote/vote

Список заданий Swarm

docker service ps

Масштабирование сервиса

docker service scale vote=3

Обновление сервиса

docker service update --image instavote/vote:movies vote
docker service update --force --update-parallelism 1 --update-delay 30s nginx
docker service update --update-parallelism 5--update-delay 2s --image instavote/vote:indent vote
docker service update --limit-cpu 2 nginx
docker service update --replicas=5 nginx

P.S.

Прим. перев.: Напомню, что оригинальная (англоязычная) версия Docker Cheat Sheet доступна и обновляется в Git-репозитории. Автор будет рад исправлениям/пополнениям от сообщества.

Читайте также в нашем блоге:

  • «Play with Docker — онлайн-сервис для практического знакомства с Docker».
  • «В чём суть проекта Moby и почему главным репозиторием Docker вдруг стал moby/moby?»
  • «Собираем Docker-образы для CI/CD быстро и удобно вместе с dapp (обзор и видео)».
  • Блог компании Флант
  • Системное администрирование
  • Серверное администрирование
  • DevOps

Перезапустите один контейнер с помощью Docker Compose

В этом руководстве мы узнаем, как перезапустить один контейнер Docker с помощью Docker Compose .

2. Команда перезапуска Docker Compose ​

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

docker-compose restart service-name 

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

3. Настройка​

У нас должен быть контейнер Docker для запуска команд Docker Compose. Мы будем использовать предыдущий проект ForEach, spring-cloud-docker , который представляет собой докеризованное приложение Spring Boot. В этом проекте есть два контейнера Docker, которые помогут нам доказать, что мы можем перезапустить одну службу, не затрагивая другую.

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

docker-compose up --detach --build 

Теперь мы должны увидеть обе службы, выполнив команду docker-compose ps :

$ docker ps  Name Command State Ports -------------------------------------------------------------------------------- message-server java -jar /message-server.jar Up 0.0.0.0:18888->8888/tcp product-server java -jar /product-server.jar Up 0.0.0.0:19999->9999/tcp 

Кроме того, мы можем перейти на localhost:18888 или localhost:19999 в нашем браузере и убедиться, что мы видим сообщения, отображаемые службами приложений.

4. Перезапуск одного контейнера​

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

Во-первых, мы рассмотрим, как этого добиться без пересборки контейнера. Однако это решение не будет обновлять службу последним кодом. Затем мы увидим другой подход, при котором мы создаем контейнер с последним кодом перед запуском .

4.1. Перезагрузка без восстановления​

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

docker-compose restart message-server 

После запуска команды в терминале мы должны увидеть следующее сообщение:

Restarting message-server . done 

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

$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b6541d1c4ddf product-server:latest "java -jar /product-…" 10 minutes ago Up 42 seconds 0.0.0.0:19999->9999/tcp product-server 1d07d2a7ed7d message-server:latest "java -jar /message-…" 10 minutes ago Up 15 seconds 0.0.0.0:18888->8888/tcp message-server 

Наконец, мы можем определить, что команда успешно перезапустила контейнер сервера сообщений , просмотрев столбец STATUS . Мы можем видеть, что служба сервера сообщений была запущена и работала в течение меньшего периода времени, чем служба сервера продукта , которая была запущена с тех пор, как мы выполнили команду docker-compose up в предыдущем разделе.

4.2. Восстановление и перезапуск

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

Когда оба контейнера запущены, давайте сначала изменим код, чтобы подтвердить, что мы обновим службу последним кодом перед перезапуском. В классе DockerProductController давайте изменим оператор return , чтобы он выглядел следующим образом:

 public String getMessage()    return "This is a brand new product";   > 

Теперь давайте соберем пакет Maven:

Как перезапустить контейнер docker

Войти

Войти

Войти Регистрация

Как перезапустить контейнер Docker ? и посмотреть логи

Для запуска контейнера выполните:

docker start $(docker ps -a -q)

Для остановке контейнера:

 docker stop $(docker ps -a -q) 

Просмотр запущенных контейнеров

docker ps -a

Что-бы посмотреть текущие логи Docker

docker logs $(docker ps -lq)

�� Как перезапустить службу docker, не затрагивая запущенные контейнеры

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

Выведем список запущенных контейнеров.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4c644b887440 archivebox/archivebox:master "dumb-init -- /app/b…" 2 weeks ago Up 2 weeks (healthy) 0.0.0.0:8000->8000/tcp archivebox_archivebox_1

Перезапустим службу docker.

$ sudo systemctl restart docker

Обратите внимание, что работающий контейнер также был перезапущен.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46e33e628976 archivebox/archivebox:master "dumb-init -- /app/b…" About a minute ago Up About a minute (healthy) 0.0.0.0:8000->8000/tcp archivebox_archivebox_1

Включим функцию восстановления в реальном времени.

$ cat /etc/docker/daemon.json
$ sudo systemctl reload docker

Перезапустим службу docker.

$ sudo systemctl restart docker

Обратите внимание, что старый контейнер все еще работает.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 46e33e628976 archivebox/archivebox:master "dumb-init -- /app/b…" 4 minutes ago Up 4 minutes (healthy) 0.0.0.0:8000->8000/tcp archivebox_archivebox_1
  • �� Справочное руководство по командам Docker – новые команды по сравнению со старыми
  • �� Как найти файлы по имени без учета регистра на Linux
  • �� Как изменить сохранение истории задач в кластере Docker Swarm
  • �� Как создать контейнер MongoDB с назначенным пользователем
  • �� Как развернуть стек Portainer внутри кластера Docker Swarm
  • �� Как использовать команду Docker run
  • �� Как запустить службу Docker при загрузке системы
itisgood

previous post

�� Как проверить версию Docker приложения
⚓ Создание родительских каталогов с помощью Curl с использованием флага –create-dirs
You may also like

☸️ Автоматизация приостановки Kubernetes CronJobs с помощью find.

�� Копирование переменных между этапами в многоэтапной сборке.

☸️ Получение подробной информации об нодах Kubernetes для.

☸️ Как создать резервную копию и восстановить базу.

�� Git установил значение filemode на false

�� Git ребейз из главной ветки : Руководство.

��️ Как перенести виртуальную машину Proxmox на другой.

�� Простой веб-шаринг с использованием docker

�� Как скачивать релизы с GitHub

�� Переключение пользователя в образе или контейнере Docker

Leave a Comment Cancel Reply

• Свежие записи

  • ☸️ Автоматизация приостановки Kubernetes CronJobs с помощью find и sed
  • �� Поиск содержимого между двумя совпадающими шаблонами на Linux
  • Что такое QoS?
  • Что означает “$

• Категории

• Теги

• itsecforu.ru

• Страны посетителей

IT is good

Этот пример относится к заданиям cron в Kubernetes, но его можно применить к чему угодно! В Kubernetes вы можете установить suspend: true или…

Grep, мощная утилита командной строки в системах Unix и Linux, известна для поиска и фильтрации текста с помощью регулярных выражений. В этой статье…

QoS, или Quality of Service, используется для обозначения способов, с помощью которых ваш маршрутизатор может перераспределять (или отбрасывать) определенные типы трафика в вашей…

В Makefile я часто вижу “$

1. Обзор Функция многоступенчатых сборок в Docker позволяет разработчикам создавать последовательность сборок, каждая из которых имеет свой собственный набор инструкций. Это помогает оптимизировать…

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *