Как сохранить докер контейнер?
Я создал докер-контейнер, где я устанавливаю mariadb-сервер и еще кое-что (см. Экран), но теперь я хочу, чтобы контейнер работал, конечно, чтобы люди могли подключаться к серверу базы данных в контейнере.
Проблема в том, что контейнер продолжает выход после завершения работы. В последнем ряду экрана вы видите, что я пытался добавить хвост -f, но это также не помогло.
Это команды, которые я использую для сборки и запуска:
sudo docker build -t databaseserver .
sudo docker run -it -p 3306:3306 databaseserver
Пожалуйста, помогите мне просто сохранить его работоспособным, чтобы я мог подключиться к работающему контейнеру
4 ответа
Вы должны переместить большую часть файла startup.sh в Dockerfile.
Тогда вместо звонка service mysql start
который запускает его в "режиме демона", вы должны выяснить, как запустить его в интерактивном режиме.
Тогда вам не нужно было бы привязывать логи, чтобы контейнер не закрывался.
В этот момент вы можете вызывать Docker в режиме демона или в интерактивном режиме (на ваш выбор), и он должен просто работать правильно.
CMD servcie mysql start
в start-up.sh асинхронный,mysql -u root < /honepot-project/Database/info.sql
может exec не удалось и выход.
Возможно, вам следует попробовать запустить контейнер в режиме демона, а не в интерактивном режиме.
Итак, ваша команда должна быть:
sudo docker run -d -p 3306: 3306 сервер базы данных
Сделайте это так, как это делает образ MySQL в библиотеке Docker:
https://github.com/docker-library/mysql/blob/3362baccb4352bcf0022014f67c1ec7e6808b8c5/8.0/Dockerfile
Последняя строка Dockerfile:
CMD ["mysqld"]
Это будет поддерживать работу контейнера (при условии, что он запускается и не останавливается по какой-либо причине) и выводит сообщения об ошибках в журналы.