我创建了一个docker容器,我在其中安装了mariadb-server和更多东西(见屏幕),但是现在我想保持容器运行,所以人们可以连接到容器中的数据库服务器。
问题是容器在完成运行后仍然存在。 在屏幕的最后一行,您看到我尝试添加尾部-f,但这也没有帮助。
这些是我用于构建和运行的命令:
sudo docker build -t databaseserver .
sudo docker run -it -p 3306:3306 databaseserver
请帮我保持运行,以便连接到正在运行的容器
答案 0 :(得分:2)
你应该将startup.sh的大部分内容移到Dockerfile中。
然后你应该弄清楚如何以'守护进程模式'启动它,而不是调用service mysql start
。
然后您不必拖尾日志以防止容器关闭。
此时你可以在守护进程模式或交互式(你的选择)中调用docker,它应该正常工作。
答案 1 :(得分:1)
将tail -f / dev / null放在dockerfile中。
答案 2 :(得分:0)
您应该尝试以守护进程模式而不是交互模式运行容器。
所以你的命令应该是:
sudo docker run -d -p 3306:3306 databaseserver
答案 3 :(得分:0)
start-up.sh中的CMD servcie mysql start
是异步的,
mysql -u root < /honepot-project/Database/info.sql
执行失败并退出。
答案 4 :(得分:0)
执行Docker库中的MySQL映像如何执行该操作:
https://github.com/docker-library/mysql/blob/3362baccb4352bcf0022014f67c1ec7e6808b8c5/8.0/Dockerfile
Dockerfile的最后一行是:
CMD ["mysqld"]
这将使容器保持运行状态(假设容器已启动并且由于某种原因没有停止),并将所有错误消息输出到日志。