Здесь происходит то, что вы порождаете экземпляр Python, а затем не предоставляете команде никаких аргументов. Docker контейнеры - это, по сути, абстракции вокруг файловых систем и ресурсов для отдельных процессов из ядра ОС хоста.
Итак, в этом случае вызываемый вами образ просто создается и затем звонит Python. Что произойдет, если вы позвоните Python в вашей оболочке на вашем компьютере? Он сбрасывает вас в интерактивную оболочку, в которую вы затем можете отправлять команды.
Ну, это не имеет особого смысла. Зачем вызывать команду, которая просто запускает оболочку в пространстве имен , которая не может общаться ни с чем другим? Реальный способ использования Docker заключается в передаче аргументов этому образу контейнера. Таким образом, когда Docker запускает процесс Python, он может передать ему аргумент , чтобы что-то сделать. Например, запустите приложение, которое было смонтировано или скопировано томом через Dockerfile.
Так как мы это сделаем? Ну, мы можем предоставить ваш docker -компонентный файл с некоторыми аргументами через поле Args !
Но, мне кажется, вы здесь просто играете. Таким образом, у вас, скорее всего, нет проекта для передачи на Python с полем args. Или вернуться в новое Docker изображение. То, что вы, вероятно, пытаетесь сделать, это попасть в оболочку Python.
Причина, по которой это не происходит автоматически, когда Docker запускает команду python
, заключается в том, что docker-compose up
или docker run
не переводят вас в интерактивную среду. Он просто вызывает команду entrypoint в контейнере. Для этого вам необходимо вызвать ДОПОЛНИТЕЛЬНУЮ команду в контейнере. В этом случае оболочка. Большинство контейнерных ОС поставляются с установленным на них чем-то вроде sh
или bash
. Я сомневаюсь, что python
делает. Однако вы можете проверить его, используя команду exe c следующим образом:
docker-compose up -d
docker exec -it test_c
Дайте мне знать, если вам нужна дополнительная информация или поддержка для этого вопроса. Всегда рады помочь вам начать с Docker. Это потрясающая технология!