Как сохранить докер контейнер?

Я создал докер-контейнер, где я устанавливаю mariadb-сервер и еще кое-что (см. Экран), но теперь я хочу, чтобы контейнер работал, конечно, чтобы люди могли подключаться к серверу базы данных в контейнере.

Проблема в том, что контейнер продолжает выход после завершения работы. В последнем ряду экрана вы видите, что я пытался добавить хвост -f, но это также не помогло.

Это команды, которые я использую для сборки и запуска:

sudo docker build -t databaseserver .
sudo docker run -it -p 3306:3306 databaseserver

Пожалуйста, помогите мне просто сохранить его работоспособным, чтобы я мог подключиться к работающему контейнеру

Экран Dockerfile

экран запуска-sh.sh

4 ответа

Вы должны переместить большую часть файла startup.sh в Dockerfile.

Тогда вместо звонка service mysql start который запускает его в "режиме демона", вы должны выяснить, как запустить его в интерактивном режиме.

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

В этот момент вы можете вызывать Docker в режиме демона или в интерактивном режиме (на ваш выбор), и он должен просто работать правильно.

CMD servcie mysql start в start-up.sh асинхронный,mysql -u root < /honepot-project/Database/info.sql может exec не удалось и выход.

Поместите хвост -f /dev/null в файл Docker.

Возможно, вам следует попробовать запустить контейнер в режиме демона, а не в интерактивном режиме.

Итак, ваша команда должна быть:

sudo docker run -d -p 3306: 3306 сервер базы данных

Сделайте это так, как это делает образ MySQL в библиотеке Docker:

https://github.com/docker-library/mysql/blob/3362baccb4352bcf0022014f67c1ec7e6808b8c5/8.0/Dockerfile

Последняя строка Dockerfile:

CMD ["mysqld"]

Это будет поддерживать работу контейнера (при условии, что он запускается и не останавливается по какой-либо причине) и выводит сообщения об ошибках в журналы.

Другие вопросы по тегам