Docker: Запустить изображение, созданное из скрипта, в автономном режиме, в интерактивном режиме - PullRequest
0 голосов
/ 07 августа 2020

Я подготовил образ, запустив контейнер в отсоединенном режиме с помощью

docker run -itd <image-name> sh run.sh

Где run. sh - это сценарий, помещенный внутри контейнера. Когда сценарий был выполнен, контейнер остановился, и я сохранил его как новое изображение с

docker commit <container-id> <new-image-name>

Теперь я хочу запускать команды внутри контейнеров, созданных из нового образа, с чем-то вроде

docker run -it <new-image-name>

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

Ответы [ 2 ]

0 голосов
/ 07 августа 2020

Я бы порекомендовал вам создать новый образ из вашего собственного Dockerfile. Вы можете сделать это с помощью FROM скопировав ваш скрипт, а затем запустив этот скрипт внутри вашей сборки с помощью RUN. После этого вы можете создать собственный ENTRYPOINT с командами, которые будут запускаться при запуске вашего контейнера.

Вы также можете запустить свой контейнер в интерактивном режиме, дав ему команду. Например, если ваш базовый образ был nginx, вы можете запустить новый образ следующим образом:

docker run -it <new-image-name> bash

Если ваша база образа использует другой дистрибутив linux, вам придется запустить его, указав контейнеру другой команду для запуска, например, «sh».

Если у вас все еще есть проблемы, вы также можете попробовать изменить точку входа вашего изображения, используя

- точка входа

Было бы намного проще помочь с более подробной информацией о вашем варианте использования и о том, какой базовый образ вы используете.

0 голосов
/ 07 августа 2020

, если вы хотите создать изображение docker, не используйте опцию «отсоединить». с помощью docker build вы можете создать изображение (команда вернет идентификатор изображения), а затем вы можете изображение с помощью docker run <docker id>. если вы хотите назвать изображение без использования идентификатора изображения, вы можете использовать параметр -t и пометить свое изображение.

docker build -t <user>/<tag name> <image>
docker run <user>/<tag name>

, например:

docker build -t myuser/myredis redis
docker run myuser/myredis
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...