Я использую API Docker-py для обработки и управления контейнерами Docker
. В API
функция put_archive
ожидает, что поле data
будет в байтах. Так, используя библиотеку tarfile
у меня есть:Чтение tarfile в BytesIO
import tarfile
import io
container = client.create_container(image="myimage", command="/bin/bash")
source = "~/.ssh/id_rsa.pub"
tarfile = create_tar_file(path=source, name="keys.tar")
# tarfile = "keys.tar"
# How can I read the tar file was a BytesIO() object?
data = io.BytesIO()
client.put_archive(container=container, path="/tmp", data=data)
В API говорит:
put_archive
Вставьте файл или папку в существующем контейнере с использованием архива смолы в качестве источника.
Params:
контейнер (ул): контейнер, в котором будет извлечен файл (ы) путь (ул): Путь внутри контейнера, где будет извлечен файл (ы). Должно существовать. данные (байты): данные tar для извлечения Возвраты (bool): Истина, если вызов преуспевает. docker.errors.APIError будет поднят, если произойдет ошибка.
Мой вопрос: Как я могу прочитать файл деготь как BytesIO()
, поэтому он может быть передан в функцию put_archive()
?
@martineau вы могли бы сделать это в ответ? – cybertextron