Я скачал образ докера и запустил его в интерактивном режиме, используя аргумент -it . Однако некоторые приложения отсутствуют, и я устанавливаю их с помощью apt-get . Проблема в том, что каждый раз, когда я выхожу из сеанса, все, что я установил, стирается, и я должен переустановить его в следующий раз. Я подумал, что установка приложений в смонтированном каталоге с помощью опции -v может сработать, но, поскольку в этом каталоге уже есть некоторые другие приложения, я подумал, что это может быть не идеальным решением. Есть ли стандартный способ сохранить текущий сеанс, то есть сохранить приложения, которые я установил. А как насчет изменений в .bashrc и .bash_profile и аналогичных файлах? Есть ли элегантный способ их спасти?

ОБНОВИТЬ:

Это сеанс и его идентификатор контейнера, который я хотел бы повторно запустить. Есть ли способ запустить его снова в интерактивном режиме, используя идентификатор контейнера?

CONTAINER ID        IMAGE                     COMMAND             CREATED             STATUS                       PORTS               NAMES
50e77c283ae9        shogun/shogun-dev         "bash"              24 hours ago        Exited (1) 4 hours ago                           dreamy_fermi

2 ответа2

2

Я вижу из вашей проблемы у вас есть два пути решения этой проблемы:

  • Сгенерируйте образ докера из контейнера, в котором есть все пакеты и конфигурации, которые вам нужны. Таким образом, вам не нужно устанавливать пакеты и выполнять настройку каждый раз, когда вы создаете новый контейнер
  • Создайте собственный образ Docker из Dockerfile со всеми пакетами, которые вам нужно установить. При запуске контейнера вы можете отобразить пользовательские файлы и постоянное хранилище данных, используя -v volume .

Давайте используем пример, чтобы сделать это более понятным.

# docker run -it --name test_con ubuntu:16.04 /bin/bash

Я установлю несколько пакетов, а именно vim, bash-extension и wget.

root@9c67dc1776cd:/# apt-get update
root@9c67dc1776cd:/# apt-get install vim bash-completion wget

Затем создайте новый образ докера из этого контейнера, я назвал его test_con. Для этого мы будем использовать опцию команды commit.

# docker commit -m "updated packages" test_con ubuntu:v1

Если выполнение команды успешно, вы должны получить вывод, подобный этому.

sha256:cdf9dc8fe82407b49bae2a2840e7f59706ac84e9f6a0fff55a62afc7dd0db3c3

Убедитесь, что новый контейнер действительно был создан с помощью этой команды:

# docker images

Создайте из него тестовый контейнер и проверьте, присутствует ли wget.

# docker run --name test --rm -it ubuntu:v1
root@401345aecec5:/# which wget
/usr/bin/wget

Что касается второго варианта, вы можете посмотреть на этой вики-странице о командах Docker. Это поможет вам настроить ваши изображения при первоначальном создании.

1

Весь смысл Docker в том, что он не меняется. Если вы хотите изменить его, обновите образ Docker.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .