如何保持docker容器?

时间:2018-06-12 19:26:15

标签: docker mariadb

我创建了一个docker容器,我在其中安装了mariadb-server和更多东西(见屏幕),但是现在我想保持容器运行,所以人们可以连接到容器中的数据库服务器。

问题是容器在完成运行后仍然存在。 在屏幕的最后一行,您看到我尝试添加尾部-f,但这也没有帮助。

这些是我用于构建和运行的命令:

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

请帮我保持运行,以便连接到正在运行的容器

Screen of Dockerfile

screen of start-up.sh

5 个答案:

答案 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"]

这将使容器保持运行状态(假设容器已启动并且由于某种原因没有停止),并将所有错误消息输出到日志。