The book of Magnus

IT-заметки и знания

Шпаргалка по docker

Tags = [ Docker, DevSecOps ]

Предлагаю вашему вниманию небольшую, написанную на коленке, но полезную шпаргалку по минимально необходимым командам для управления Docker.

Установка

https://docs.docker.com/get-docker/

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

docker run redis                 # Скачается latest
или
docker run redis:5.0
или
docker run redis:latest

docker run -d redis              # Запуск в фоне

docker run ubuntu sleep 500      # Чтобы контейнер работал, в нём должен быть какой-нибудь процесс, иначе контейнер закроется после запуска.

docker run -it [name]            # Включить интерактивный режим и консоль

docker run -p 80:5000 redis      # Проброс порта

Прикрепить контейнер к консоли

docker attach [ID|Name]

Передать команду в контейнер

docker exec [ID|Name] [command]

Список контейнеров

docker ps -a       # Все

docker ps          # Запущенные
или
docker container ls

Остановка контейнера

docker stop [ID|Name]

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

docker rm [ID|Name]            # Контейнер должен быть остановлен
или
docker container rm [ID|Name]

Очистка контейнеров и сопутствующего

docker system df               # просмотр занятого пространства
docker volume prune            # очистка томов  
docker container prune         # очистка всех остановленных контейнеров  
docker image prune             # очистка образов  
docker network prune           # очистка сетей  
docker system prune            # очистка всего и сразу  
docker system prune -af        # очистка всего и сразу, без подтверждений

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

docker images

Удалить образ

docker rmi [ID|Name]
или
docker container rm [ID|Name]

Скачать образ

docker pull [name]

Файловая система

/var/lib/mysql       # Дефолтное место хранения данных mysql в контейнере. Удалится при остановке контейнера.
/opt/datadir         # Создадим место хранения на хостовой системе.
docker run -v /opt/datadir/:/var/lib/mysql mysql    # Запускаем контейнер с сохраненем данных на внешнее хранилище

Детальная информация

docker inspect [ID|name]

Логи

docker logs [ID|name]

История сборки контейнера

docker history

Пример dockerfile для сборки контейнера

FROM ubuntu

RUN apt-get update
RUN apt-get install python3 python3-pip

RUN pip3 install flask

COPY app.py /opt/app.py

ENTRYPOINT FLASK_APP=/opt/app.py flask run --host=0.0.0.0 --port=5000

Запуск dockerfile

docker build . -t [name_repo]

Дать имя образу

docker tag [ID] [name]

Пуш изменений

docker login    # Ввести креды репы
docker push [repo:tag]

Передача переменных в контейнер

docker run -e ENV_NAME=somebody [Name]
docker inspect [Name]     #узнать какие есть переменные (раздел Env)

Docker compose

docker compose build     # Сборка пакета
docker compose up        # Запуск проекта
docker compose down      # Выключение
docker compose logs -f [service name] # Журналы сервисов
docker compose ps     # Список контейнеров
docker compose exec [service name] [command]     # Передать команду
docker compose images    # Список образов