如何在没有日志级别的情况下重启docker容器?

时间:2017-04-03 15:46:48

标签: docker

我有一个日志级别设置为JSON的正在运行的容器。我想重启容器,日志级别设置为none

我尝试使用docker restart --log-driver none <CONTAINER_ID>,但它没有用。

如何在没有日志级别的情况下重新启动docker容器?

2 个答案:

答案 0 :(得分:1)

我没有意识到它指的是--log-driver。如果是这种情况,并且您绝对无法删除容器并启动新容器,则可以选择。您可以手动编辑hostconfig.json文件以更改日志记录驱动程序并重新启动Docker守护程序。

示例:

我启动一个容器,每隔10秒记录一次日期输出:

$ docker run -d --log-driver json-file --name mytest alpine sh -c "while true; do echo \$(date); sleep 10; done"
edf6bb60088ded11d991b6f31bc7091e2f6b81552937471beeafc5f271697a6f
$ docker logs mytest              
Mon Apr 3 21:27:08 UTC 2017
Mon Apr 3 21:27:18 UTC 2017
Mon Apr 3 21:27:28 UTC 2017

现在我停止了容器:

$ docker stop mytest

编辑hostconfig.json文件(第一个SSH到我的Docker机器):

$ docker-machine ssh default
docker@default:~$ sudo vi /mnt/sda1/var/lib/docker/containers/776d9c6d63c5e229fe4ce4bfe534f42cc9d1f04df7699171ce28414c4f086a63/hostconfig.json

查找"Type":"json-file"并更改为"Type":"none"并保存。

现在重启Docker守护程序(并退出SSH):

docker@default:~$ sudo /etc/init.d/docker restart
docker@default:~$ exit

再次启动容器:

$ docker start mytest

没有更多日志:

$ docker  logs mytest
"logs" command is supported only for "json-file" and "journald" logging drivers (got: none)

答案 1 :(得分:0)

log-level是一个已弃用的命令,我认为您的意思是--log-driver

您无法在重新启动期间或使用docker update设置日志级别,因此唯一的方法是终止容器并重新启动。希望您使用卷来存储持久数据。

docker kill <id>
docker run --log-driver=none