Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Systemd单元在使用AWS日志记录驱动程序配置运行docker容器时引发错误_Docker_Systemd - Fatal编程技术网

Systemd单元在使用AWS日志记录驱动程序配置运行docker容器时引发错误

Systemd单元在使用AWS日志记录驱动程序配置运行docker容器时引发错误,docker,systemd,Docker,Systemd,下面给出的是我的cloud-watch-test.service systemd单元文件。我需要将容器上的日志驱动程序更改为aws日志驱动程序。但一些语法错误无法解决 [Unit] Description=My Docker Service After=docker.service Requires=docker.service [Service] TimeoutStartSec=0 Restart=on-failure ExecStartPre=-/usr/bin/docker kill r

下面给出的是我的cloud-watch-test.service systemd单元文件。我需要将容器上的日志驱动程序更改为aws日志驱动程序。但一些语法错误无法解决

[Unit]
Description=My Docker Service
After=docker.service
Requires=docker.service

[Service]
TimeoutStartSec=0
Restart=on-failure
ExecStartPre=-/usr/bin/docker kill ravDocker
ExecStartPre=-/usr/bin/docker rm -f ravDocker
ExecStartPre=-/usr/bin/docker pull myImage:latest
ExecStartPre=-/bin/sh -c "/bin/docker rmi $(docker images --quiet --filter 'dangling=true')"
ExecStart=/usr/bin/docker run --log-driver=awslogs --log-opt awslogs-region=ap-southeast-1 --log-opt awslogs-group=test --log-opt awslogs-datetime-format='\\[%b %d, %Y %H:%M:%S\\]' --log-opt tag='{{.Name}}/{{.ID}}' --net=host --name ravDocker myImage:latest
ExecStop=/usr/bin/docker stop ravDocker

[Install]
WantedBy=multi-user.target
下面是我的systemctl状态输出

/etc/systemd/system/cloud-watch-test.service:13: Failed to resolve unit specifiers on awslogs-datetime-format=\[%b %d, %Y %H:%M:%S\]:

注意:当我作为docker命令直接运行此命令时,它工作正常。非常感谢您的帮助。

请将您的
%
标记加倍,以阻止systemd自行解释它们。

因此,导致错误的参数可能为:

--log-opt 'awslogs-datetime-format=\[%%b %%d, %%Y %%H:%%M:%%S\]'
基于,我的解决方案包含反斜杠,由于docker aws日志驱动程序命令中存在问题,需要添加反斜杠。有关添加反斜杠的原因的更多信息,请参见。下面给出了正确的命令

--log-opt awslogs-datetime-format='\[%%b %%d, %%Y %%H:%%M:%%S\]'

systemd有自己的
%x
说明符……因此,最简单的方法是将有问题的命令放入脚本中。这就是我要做的,在实践中——以这种方式维护要容易得多。顺便问一下,单引号中的文字反斜杠是故意的吗?(方括号在单引号中已经是文字,反斜杠也是文字)。@CharlesDuffy Yes反斜杠的存在是因为docker端的awslogs datetime format命令出现问题。假设的解决方法是添加反斜杠。这就是与此相关的问题——解决方案奏效了。但是用反斜杠。感谢结束得恰到好处。