Хочу рассказать Вам все о сайтах, что узнал сам за 10 лет.
Блог Виталия Жукова Vitalik.WS Свой сайт с нуля - легко!
Обо мне, как об авторе блога.
Подробнее
Vitalik.WSЗаметки → Docker (докер) - основные команды управления контейнером

Docker (докер) - основные команды управления контейнером
Заметка на тему: Linux, Docker, Контейнер

Последнее время мне часто приходится сталкиваться с Docker контейнерами, и, поэтому, я решил составить некий справочник по основным командам управления докер контейнером. Это минимум команд, который необходим мне в повседневной работе с докером, и который будет полезен и Вам, уважаемые читатели. Ну что же, начнём.

Я буду печатать два варианта: синтаксис и пример. В качестве примера, название моего контейнера будет vitalikws-docker-container. За основной образ буду брать Linux Debian 9. Но, с помощью данных команд, можно взять и построить контейнер любой операционной системы.

Как создать Docker контейнер?


Создать докер контейнер просто вот такой командой:
docker run --name НАЗВАНИЕ_НОВОГО_КОНТЕЙНЕРА -i -t НАЗВАНИЕ_ОБРАЗА /bin/bash


В качестве названия образа можете указать любой, который есть на Docker Hub'е. Докер сам его скачает и сделает контейнер на его основе. Для создания моего контейнера под названием vitalikws-docker-container с Linux Debian 9 внутри нужно выполнить команду:
docker run --name vitalikws-docker-container -i -t debian /bin/bash


Докер контейнер - изолированная среда, то есть всё, что выполняется внутри контейнера, не выходит на наружные порты. Нужно пробрасывать IP и порты при создании контейнера (-p айпи:внешний_порт:порт_внутри_контейнера), например вот так:
docker run -p 37.140.192.36:80:80 -p 37.140.192.36:443:443 --name vitalikws-docker-container -i -t debian /bin/bash

Такой командой я открыл http (80) и ssl (443) порты для сайта. Можно указывать диапазон портов, например так:
docker run -p 37.140.192.36:80-90:80-90 -p 37.140.192.36:443-453:443-453 --name vitalikws-docker-container -i -t debian /bin/bash

В данном примере я открою больше 20 портов (80-90 и 443-453).

Можно так же в дополнение через -e указать переменные окружающей среды контейнера (environment):
docker run -e PYTHONIOENCODING=utf-8 -e LANG=ru_RU.utf8 -p 37.140.192.36:80-90:80-90 -p 37.140.192.36:443-453:443-453 --name vitalikws-docker-container -i -t debian /bin/bash

В данном случае это PYTHONIOENCODING=utf-8 и LANG=ru_RU.utf8.

Если, всё-таки, нужно полностью открыть контейнер для всех IP и портов, то просто добавляете --net=host заместо перечисления портов. Тогда докер становится не изолированным. Но я не рекомендую так делать - может начать возникать много конфликтов по занятым портам. Но тем не менее, делается это вот так:
docker run --net=host --name vitalikws-docker-container -i -t debian /bin/bash


Как создать docker образ из контейнера? (сохранить текущий контейнер в образ)


Если нужно создать докер образ из контейнера, то необходимо просто "сохранить" версию текущего контейнера следующей командой:
docker commit id_контейнера имя_образа

например вот так:
docker commit le75df7324f7 vitalikws-docker-save

где le75df7324f6 - ID контейнера vitalikws-docker-container.

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


Стартовать контейнер в докере можно следующей командой:
docker start НАЗВАНИЕ_ИЛИ_ID_КОНТЕЙНЕРА

например:
docker start vitalikws-docker-container

При наборе команд в Linux можно пользоваться кнопкой Tab для подбора подходящих вариантов дальнейшей печати. Например, вы можете напечатать docker start vit и нажать Tab - система сама подставит название контейнера vitalikws-docker-container полностью. Если же вариантов больше одного, то можно нажать Tab 2 раза - система выведет список доступных вариантов. Это очень удобно.


Как подключиться к докер контейнеру?


Присоединиться к контейнеру в докере можно следующей командой:
docker attach НАЗВАНИЕ_ИЛИ_ID_КОНТЕЙНЕРА

например:
docker attach vitalikws-docker-container

Эта команда сработает, если Вы создавали контейнер (docker run ...) с /bin/bash в конце строки. Тогда вы сможете присоединиться к консоли и выполнять команды внутри контейнера.

Если же, если в конце строки создания контейнера был указан стартовый скрипт (например, /opt/start.sh), то присоединиться к ssh консоли (терминалу) можно вот такой командой:
docker exec -ti НАЗВАНИЕ_КОНТЕЙНЕРА /bin/bash

например:
docker exec -ti vitalikws-docker-container /bin/bash


Как остановить докер контейнер?


Остановить docker контейнер можно следующей командой:
docker stop {НАЗВАНИЕ_ИЛИ_ID}

например:
docker stop vitalikws-docker-container


Как посмотреть список docker контейнеров?


Посмотреть список docker контейнеров можно следующей командой:
docker ps -a


Как посмотреть список образов в докере?


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


Как удалить docker контейнер?


Удалить докер контейнер можно следующей командой:
docker rm ID_контейнера

например:
docker rm le75df7324f6

где le75df7324f6 - ID контейнера vitalikws-docker-container.

Как удалить образ докера?


Удалить образ докера можно следующей командой:
docker rmi ID_образа

например:
docker rm w375de4368u6

где w375de4368u6 - ID образа vitalikws-docker-save.

Как копировать файл в докер контейнер?


Копировать (или загрузить) файл в докер контейнер можно командой:
docker cp путь_к_данным_на_хосте имя_контейнера:путь

например:
docker cp /root/test-archive.tar vitalikws-docker-container:/home/test-archive.tar

где /root/test-archive.tar - путь к данным на основной машине, а /home/test-archive.tar - путь к месту назначения для копирования внутри контейнера.

Как сохранить docker образ в файл (архив), выгрузить резервную копию (бекап)?


Сохранить docker образ в файл (архив) или выгрузить резервную копию (бекап) можно командой:
docker save название_контейнера > название_архива.tar

например:
docker save vitalikws-docker-container > vitalikws-docker.tar

Архив сохранится в текущую директорию.

Как загрузить docker образ из файла (архива), загрузить резервную копию (бекап)?


Загрузить docker образ из файла (архива), загрузить резервную копию (бекап) можно командой:
docker load < название_архива.tar

например:
docker load < vitalikws-docker.tar


Как посмотреть логи в docker контейнере?


Посмотреть логи в docker контейнере можно командой:
docker logs название_контейнера

например:
docker logs vitalikws-docker-container


На этом основные команды управления докер контейнером можно завершить. Есть ещё несколько, которые так же будут полезны, но если Вам они понадобятся, то всегда можете посмотреть в официальной документации Docker. По мере использования постараюсь дополнять информацию. Удачных экспериментов с Docker контейнерами! Надеюсь, что помог Вам. Если есть мысли, как можно улучшить данный список команд - обязательно пишите в комментариях.

Все комментарии к заметке "Docker (докер) - основные команды управления контейнером"

  • Комментариев еще нет.
    Оставьте свой комментарий первым!
Написать свой комментарий:
Отправить
ВНИМАНИЕ! Пожалуйста НЕ пишите в комментариях рекламу, оскорбления, бессмыслицу и прочие проявления интернет-нечисти, так как эти сообщения всеравно не будут опубликованы. Пишите исключительно по теме и ваш комментарий обязательно будет опубликован, а возможно и прокомментирован.
 Подписывайтесь на мой блог
Хотите первыми узнавать о самом интересном? Тогда подпишитесь на рассылку новостей.
Подписаться
Подписавшись на рассылку, Вы всегда будете в первую очередь узнавать о самой важной и полезной для блоггеров и веб-мастеров информации.