Я буду печатать два варианта: синтаксис и пример. В качестве примера, название моего контейнера будет 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 (докер) - основные команды управления контейнером"
Оставьте свой комментарий первым!