Могу ли я экспортировать уже существующий контейнер docker в dockerfile?

#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 экспортирует содержимое базового каталога, а не содержимое тома.

  1. sudo docker ps -aqf "name=containername" или docker inspect --format="{{.Id}}" container_name
  2. $ docker export CONTAINERID > <your_exported_image>.tar
  3. $ docker import <your_exported_image>.tar your-new-image:latest
  4. $ docker commit CONTAINERID your-new-image:latest

Комментарии:

1. спасибо, я прочитал эту страницу в руководстве, но я не думал, что это применимо к моему случаю. Вы хотите сказать, что с помощью команды 3 я могу создать образ, который затем можно развернуть в нескольких новых контейнерах?. Также извините за мое незнание docker, но является ли команда 4 затем для обновления изображения с возможными будущими изменениями, которые я делаю в одном контейнере? То есть, могу ли я просто зафиксировать образ Rust, избегая всех других шагов?