Я не могу точно сказать, что происходит, не видя полного файла Dockerfile, который использовался для создания образа, но я вполне уверен, что проблема, с которой вы столкнулись, заключается в том, что любая задача, запускаемая внутри контейнера, завершается и выход. Контейнеры
Docker работают с назначением некоторой команды (с использованием директив ENTRYPOINT
или CMD
в Dockerfile или в качестве аргумента docker start
или docker run
в командной строке), которая является программа, которая запускается при загрузке контейнера. Контейнер будет жить до тех пор, пока эта задача продолжает выполняться, и как только эта программа завершит работу, контейнер прекратит работу.
Чтобы указать точку входа при запуске в командной строке, попробуйте:
docker create -it [image] /bin/bash
Затем запустите ее так:
docker start -ia [Container ID]
Контейнер выйдет после выхода из оболочки потому что это назначает оболочку в качестве точки входа.
cURL
может быть не установлен по умолчанию. Его можно установить с помощью apt-get
. Но опять же, как только оболочка будет закрыта, контейнер остановится и все изменения будут потеряны. Для начала попробуйте создать новый каталог где-нибудь, а затем добавьте файл с именем Dockerfile
с таким содержимым:
FROM ubuntu:latest
RUN apt-get update && apt-get install -y curl
ENTRYPOINT ["/bin/bash"]
, который создаст новый образ с установленным curl. затем из нового каталога, в котором был создан Dockerfile, используйте:
docker build .
docker images
, который создаст новый образ, используя Dockerfile в качестве чертежа. Когда сборка завершится, найдите идентификатор изображения для нового контейнера и запустите его, используя:
docker run -it [image id]
В конечном счете, чтобы сделать Docker действительно полезным, типичным подходом является замена этой последней строки в Dockerfile. (ENTRYPOINT ["command"]
) с чем-то, что будет работать вечно (например, ENTRYPOINT ["apache2"]
или ENTRYPOINT ["redis"]
или подобное). Если у вас есть опыт использования обычных настольных / серверных ОС и полнофункциональных виртуальных машин, таких как VMWare или VirtualBox, просто помните, что Docker сильно отличается; способ его работы и шаблоны, используемые для его развертывания, не совпадают.