#docker
#docker
Вопрос:
Возможно, я не следовал рекомендациям, я полагаю, и я как бы пытаюсь исправить себя
Я создал контейнер, начиная с образа Rust docker для проекта. Я использую этот контейнер скорее как небольшую виртуальную машину, а не как контейнер. Через панель управления docker я запускаю его каждое утро и работаю над ним либо с помощью docker -it exec my-container bash
скриптов, либо с помощью docker exec
скриптов. Поскольку я создал его из образа Rust, я добавил пользователей, установил ящики и пакеты и т. Д.
Есть ли способ создать Dockerfile из существующего контейнера docker, который будет содержать все это, чтобы я мог использовать его для создания временных копий этого контейнера для выполнения определенных заданий?
Ответ №1:
Нет, вы не можете. Поскольку Docker не отслеживает ваши выполненные команды в интерактивном режиме, он не может сгенерировать Dockerfile с вашей историей. Однако, что вы можете сделать, docker commit
так это сохранить ваши изменения в виде изображения или docker export
сохранить ваш контейнер как архив, который позже можно преобразовать в изображение с помощью docker import
команды. Весь процесс следует:
- Получите
CONTAINER ID
из контейнера, который вы хотите экспортировать, сdocker ps
помощью команды. - Если вы хотите экспортировать контейнер:
- Экспортируйте контейнер с
$ docker export CONTAINERID > img.tar
- Импортируйте контейнер в виде изображения с помощью
$ docker import img.tar my-new-image:latest
- Экспортируйте контейнер с
- Если вы хотите сохранить свои изменения только как новое изображение:
- Выполнить
$ docker commit CONTAINERID my-new-image:latest
- Выполнить
Ответ №2:
docker export [OPTIONS] CONTAINER
Он экспортирует файловую систему контейнера в виде архива tar.
Примечание: docker export
команда не экспортирует содержимое томов, связанных с контейнером. Если том смонтирован поверх существующего каталога в контейнере, docker export экспортирует содержимое базового каталога, а не содержимое тома.
sudo docker ps -aqf "name=containername"
илиdocker inspect --format="{{.Id}}" container_name
$ docker export CONTAINERID > <your_exported_image>.tar
$ docker import <your_exported_image>.tar your-new-image:latest
$ docker commit CONTAINERID your-new-image:latest
Комментарии:
1. спасибо, я прочитал эту страницу в руководстве, но я не думал, что это применимо к моему случаю. Вы хотите сказать, что с помощью команды 3 я могу создать образ, который затем можно развернуть в нескольких новых контейнерах?. Также извините за мое незнание docker, но является ли команда 4 затем для обновления изображения с возможными будущими изменениями, которые я делаю в одном контейнере? То есть, могу ли я просто зафиксировать образ Rust, избегая всех других шагов?