Взаимодействие с запущенными контейнерами Docker: примеры и код

Для взаимодействия с работающим Docker-контейнером вы можете использовать различные методы и инструменты. Вот несколько подходов с примерами кода:

  1. Команда Docker exec:
    Команда docker execпозволяет запускать команду внутри работающего контейнера. Это полезно для выполнения команд непосредственно в среде контейнера.

    docker exec <container_name> <command>

    Пример:

    docker exec mycontainer ls /app
  2. Команда Docker Attach:
    Команда docker Attachпозволяет подключить терминал к консоли работающего контейнера. Это позволяет вам напрямую взаимодействовать с запущенными процессами контейнера.

    docker attach <container_name>

    Пример:

    docker attach mycontainer
  3. Сопоставление портов Docker.
    Вы можете сопоставить порты контейнера с хост-компьютером и взаимодействовать с контейнером с помощью стандартных инструментов. Например, если контейнер запускает веб-сервер через порт 80, вы можете получить к нему доступ через localhost:8080на хост-компьютере.

    docker run -p <host_port>:<container_port> <image_name>

    Пример:

    docker run -p 8080:80 nginx
  4. Docker API:
    Docker предоставляет RESTful API, который можно использовать для программного взаимодействия с контейнерами. Вы можете отправлять HTTP-запросы демону Docker для управления контейнерами, включая выполнение команд внутри них.

    Пример использования Python и библиотеки requests:

    import requests
    container_id = "<container_id>"
    command = "ls /app"
    response = requests.post(
       f"http://localhost/containers/{container_id}/exec",
       json={"Cmd": command, "AttachStdout": True}
    )
    exec_id = response.json()["Id"]
    response = requests.post(
       f"http://localhost/exec/{exec_id}/start",
       json={"Detach": False, "Tty": False}
    )
    output = response.content
    print(output)