AppSec & Pentest
CloudSec
CloudSec
  • Sandboxes, Containers, Virtualization
    • Какие бывают
    • Kubernetes
      • About
      • Tools
        • kubectl
        • minikube
        • helm
        • tiller
        • Others
      • Components
      • Concepts
      • Security
      • Learning
      • Conferences & Events
    • Container Runtime Interface (CRI)
      • containerd
      • CRI-0
      • Podman
      • Colima
      • Docker
        • About
        • CLI
        • Dockerfile
        • docker compose
        • Registry
        • Testcontainers
        • [Def] Security
        • [Off] Security
    • Red Hat OpenShift Container Platform (OCP)
      • About
      • OCP Components
        • Platform services
        • Application services
        • Developer services
        • OpenShift Kubernetes Engine
      • Security
        • Container Security
        • Podman
        • Kubernetes Security
        • Securing Platform Services
        • Vulnerabilities
        • CIS
    • VMWare
      • Workspace ONE Access
      • Workspace One UEM SSRF (AirWatch)
      • vSphere
      • vCenter
      • Learn
      • Horizon Security Server
      • VMWare log4j
    • Tools
      • Build container image inside containers
      • Moby
      • Security
  • Cloud
    • Google Cloud Platform (GCP)
      • GCP Components
      • GCP CLI
      • Security
        • Get access to GCP via service-account [json]
        • PrivEsc
        • Papers
      • Courses & Certifications
    • Azure
      • Azure Start
      • Azure CLI
      • Компоненты и механизмы
        • Azure Storage BLOB
        • Подписанные URL (SAS)
      • Papers and Resources
      • Azure Security Center
      • Tools
    • AWS
      • AWS Intro
      • AWS Basics
      • AWS Components
        • Computing
        • Storage
        • Messaging
        • Serverless
        • Business Productivity
        • Network and Content Delivery
        • Mobile
        • Databases
      • AWS Testing
      • Basic Work: Examples
        • AWS Cli
        • AWS SES
        • S3 Bucket
      • Security
        • Enumeration
        • AWS Lambda
        • Разные примеры
        • Learn Materials
      • Books & Papers
      • Courses & Certifications
    • Yandex Cloud
      • YC CLI
      • YC API
      • Cloud Organization
      • VM
        • Cloud Computing
        • Virtual Private Cloud (VPC)
        • Network Load Balancer
      • Data Platform
        • Definitions
        • Как выбрать БД
        • Реляционные БД
        • Нереляционные БД
        • Object Storage and S3
      • Yandex k8s
      • Serverless
      • Security
      • Billing
    • Another platforms
    • OpenStack
    • Tools
      • Tool list
      • Packer
      • Terraform
        • Intro
        • Getting started
        • Configuration
          • Basic
            • Terraform Block
            • Providers
            • Resources
            • Variables
            • Outputs
            • Functions
          • Modules
        • Security
        • Papers
    • Papers
Powered by GitBook
On this page
  • Практические примеры использования docker
  • Запуск контейнера
  • Работа с контейнерами
  • Сохранение изменений в контейнере
  • Работа с образами
  • Volumes
  • Работа с логами
  • Информация о занимаемом объеме памяти
  • Ограничение сети
  • Перенос директории с образами в новую папку
  • Ограничение общих ресурсов
  • Papers and notes

Was this helpful?

  1. Sandboxes, Containers, Virtualization
  2. Container Runtime Interface (CRI)
  3. Docker

CLI

PreviousAboutNextDockerfile

Last updated 6 months ago

Was this helpful?

Практические примеры использования docker

Link:

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

Общий вид

docker run -d --name имя_контейнера имя_образа
    -d - запуск в автономном режиме
    --name - имя контейнера
    в конце - имя_образа

Примеры

docker run --rm -i -t --entrypoint=/bin/bash

docker run --name имя_контейнера -d -p 80:80 имя_образа
    Запуск нового контейнера с проброшенным портом (слева - порт сервиса, справа - через какой порт будут уходить сообщения)

Отправка команды терминалу в контейнер:

docker exec -it <container_id> <Команда>

-i - Оставить STDIN открытым, даже если контейнер запущен в неприкрепленном режиме
-t, -tty - Запустить псевдотерминал

Работа с контейнерами

Запущенные контейнеры:

docker ps

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

docker rm -f имя_контейнера

Работа с файлами внутри контейнера: чтобы заменить какой-нибудь файл в контейнере, используется команда docker cp. Она копирует файл из локальной файловой системы в контейнер:

docker cp qa_nginx:/etc/nginx/nginx.conf /tmp/nginx.conf

Где qa_nginx и /etc/nginx/nginx.conf — имя контейнера и путь к скачиваемому файлу из контейнера, соответственно, а /tmp/nginx.conf путь до нового файла в текущей операционной системе.

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

docker stop qa_nginx

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

docker container prune

Сохранение изменений в контейнере

Если мы удалим наш контейнер и вновь его запустим, то все наши изменения, сделанные через консоль, исчезнут. Чтобы сохранить изменения используется команда docker commit:

docker commit 2404abeecf66 nginx_mc

    Данная команда создаст новый образ nginx_mc, 
    в котором будет уже установленный редактор mc. 
    Здесь 2404abeecf66 - id контейнера, который можно узнать выполнив команду docker ps.

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

Список установленных образов:

docker image ls

Установить образ из репозитория:

docker pull <repo>

Можно установить образ из tar-архива (gz/gzip/tgz..):

docker load -i <some_image>.tar[.gz]

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

docker image rm <image_id>

Volumes

Подключение разделов в процессе запуска контейнера (например, если надо передать какие-то файлы на обработку):

docker run --rm -it -v /path/to/dir/on/home:/path/to/dir/on/container ...

Можно устанавливать права сразу:

... -v /path1:/path2:ro ...

Работа с логами

Посмотреть логи
docker logs <container_name> 
    --timestamps - писать время
    --since ГГГГ-ММ-ДД
    --since ГГГГ-ММ-ДДТЧЧ (ex: 2018-01-30Т11:00)
    --tail N - последние n строк
    -f, --follow - непрерывный вывод

Узнать, где лежат:
docker inspect --format='{{.LogPath}}' <container_name>
    

Информация о занимаемом объеме памяти

docker system df  - disk usage
docker system info

Ограничение сети

docker run --rm -it --network none myimage ...

Другие сетевые адаптеры (можно делать свои):

  • bridge — сеть между контейнерами на одном хосте (default)

  • overlay — сеть между контейнерами на разных хостах

  • macvlan —

  • ...

  • none

Перенос директории с образами в новую папку

Ограничение общих ресурсов

Есть такая проблема. Пусть есть несколько контейнеров, запущенных на одной машине. В случае, если один контейнер выедает все ресурсы (например озу), то от этого падают все контейнеры. Такое поведение не приемлемо, если есть контейнеры критичные и которые by design не могут выжирать столько ресурсов.

Решение — разделять важные и о не очень контейнеры на cgroups

У докера есть опция —cgroup-parent — ты можешь сделать цгруппу где ограничить общую память до 14 ГБ, а потом внутри запускать безлимитные контейнеры, например (или выставить дополнительные лимиты для контейнеров внутри).

или сделать то же самое через systemd

Papers and notes

link:

Например вот ответ где объясняется как.

Подробная документация: Работа с Docker:

https://blog.ropnop.com/docker-for-pentesters/
https://linuxconfig.org/how-to-move-docker-s-default-var-lib-docker-to-another-directory-on-ubuntu-debian-linux
https://stackoverflow.com/questions/46408673/docker-17-06-ce-default-container-memory-limit-on-shared-host-resources/46557336#46557336
https://docs.docker.com/engine/reference/
https://community.vscale.io/hc/ru/community/posts/211783625-Основы-работы-с-Docker