Docker
Краткий конспект по курсу на Stepik
Контейнеры в docker - это полностью изолированные среды, в них свои процессы и службы, собственные сетевые интерфейсы, собственные средства монтирования.
Docker образ - это пакет или шаблон, аналогичный шаблону виртуальной машины. Он используется для создания одного или нескольких контейнеров. Docker запускает экземпляры образов, которые изолированы и имеют собственные среды и процессы.
Установка Docker на Linux (Ubuntu)
Ссылка на официальную документацию по установке на Ubuntu
Перед установкой необходимо удалить старые версии докера. Для этого в терминале вводим команду
sudo apt-get remove docker docker-engine docker.io containerd runc
Установка репозитория и зависимостей Docker
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Если не установлен curl, то установить командой
sudo apt install -y curl
Добавить своего пользователя в группу Docker, чтобы работать с образами и контейнерами без sudo
sudo usermod -aG docker @USER
Убеждаемся, что установка Docker прошла успешно
service docker start docker run hello-world
Должно появится следующее окно
Чтобы проверить какая версия докера установлена, нужно набрать команду:
docker version
Чтобы обновить Docker, нужно повторить всю процедуру сначала, то есть удалить старую версию и установить новую. В этом случае данную инструкцию повторить сначала.
Если необходимо удалить без переустановки, то действовать по следующим шагам, описаны ниже.
Удаление Docker, CLI, контейнеров и Docker Compose:
sudo apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
Удаление images, containers и volumes из пользовательских библиотек
sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
Команды Docker
docker run название образа - используется для запуска контейнера из образа
docker ps - просмотреть список запущенных контейнеров и информацию о них
docker ps -a - показывает весь список контейнеров и запущенных и нет
docker stop id контейнера или его имя - остановить работающий контейнер
docker rm название контейнера - удалить существующий контейнер (rm сокращенно от remove)
docker images - показывает все доступные на хосте образы, их id, теги и размеры
docker rmi название образа - удаление образов
docker pull название образа - скачает образ, но не будет его запускать
docker exec название или id контейнера cat /etc/название образа - используется для выполнения команд в работающем докер контейнере
ctrl + c - для выхода (для остановки работы контейнера)
docker run -d название контейнера - для запуска контейнера в фоновом режиме
docker attach id или имя контейнера - прикрепить контейнер к консоли
docker stats - посмотреть статистику по контейнерам (какой объем памяти потребляют и т.п.)
docker run -it --name webserver nginx - запустить контейнер с названием webserver
с образом nginx
в интерактивном режиме
docker update --restart always redis - используется для обновления restart policy контейнера redis в значение always
docker container cp webapp:/etc/nginx /tmp/ - скопировать директорию nginx
из контейнера webapp
на хост по пути /tmp/
docker system info - проверить драйвер логирования по умолчанию
docker run -it -d --log-driver none redis - запустить контейнер redis
и быть уверенным, что для него не будет настроено логов
sudo systemctl status docker - проверить статус службы docker
на хосте
-p 8080:80/udp - настроит Docker на проброс порта 80 UDP в контейнере на порт 8080 докер-хоста
docker run -p 80:5000 nginx/webapp - пользователи смогут получить доступ по http://10.0.0.13:80 весь трафик, полученный на порт 80 будет маршрутизироваться на порт контейнера(5000).
docker inspect webapp - получить сводку важной информации о контейнере webapp
(например сетевые адреса, переменные окружения, политику рестарта и т.д.)
docker logs -f my-app - получить поток логов контейнера my-app
docker run -v /opt/datadir/:/var/lib/mysql mysql - хранение специальных данных в контейнере. Нужно для того, чтобы при удалении контейнера не потерялись необходимые данные. В примере данные не будут храниться в контейнере, а будут подключены из вне, в данном случае из директории /opt/datadir/.
Список доступных образов для запуска можно посмотреть на сайте dockerhub
Создание контейнера с образом redis и именем redis без запуска:
docker create --name redis redis
Чтобы запустить образ набираем команду
docker run название образа
docker run redis - запуск redis
docker run ansible - запуск ansible
docker run redis:5.0 - запуск определенной версии образа
Чтобы войти в контейнер, используем параметр -it. Пример, запускаем контейнер с операционной системой alpine, с помощью параметра -it входим внутрь контейнера, sh - для запуска оболочки shell. С помощью приведенной ниже команды запустилась операционная система alpine и оболочка shell. Теперь мы можем работать с операционной системой alpine через терминал. Чтобы выйти из терминала alpine, нужно набрать exit.
docker run -it alpine sh
Чтобы запустить приложение в фоне нужно добавить в команду параметр -d.
docker run -d alpine
Команда для запуска контейнера с образом и определенным именем. В примере мы запускаем контейнер с именем webapp из образа nginx:1.14-alpine:
docker run --name webapp nginx:1.14-alpine
Прежде чем удалять докер образ, необходимо удалить его контейнеры.
docker stop $(docker ps -q) - остановить все контейнеры
docker rm название контейнера - удаление контейнера
docker rm $(docker ps -aq) - удаление всех контейнеров docker rm -f(docker ps -aq) - остановить и удалить все контейнеры
docker rmi название образа - удаление образа