Quando você usa o docker kill, esse é o comportamento esperado, pois o Docker não reinicia o contêiner: "Se você parar manualmente um contêiner, sua política de reinicialização será ignorada até que o daemon do Docker seja reiniciado ou o contêiner seja reiniciado manualmente. tentativa de impedir um loop de reinicialização " (referência)
Se você usar o docker stop ou o docker kill, estará parando manualmente o contêiner. Você pode fazer alguns testes sobre políticas de reinicialização: reiniciando o daemon do docker, reiniciando seu servidor, usando um CMD dentro de um contêiner e executando uma saída ...
Por exemplo, se eu matar meu contêiner implantado com uma política de reinicialização, vejo que ele saiu com o código 137 mas não foi reiniciado de acordo com o docker ps -a, ele permanece:
[root@andromeda ~]# docker ps --all
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
819d1264c30a redis:alpine "docker-entrypoint..." 3 minutes ago Exited (137) 34 seconds ago keepalive_redis_1
Mas se eu reiniciar o daemon ...
[root@andromeda ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
819d1264c30a redis:alpine "docker-entrypoint..." 30 minutes ago Up 2 seconds 6379/tcp keepalive_redis_1
O contêiner que foi definido com a política de reinicialização inicia novamente, o que é a documentação, portanto, o docker kill não é a maneira como você deve testar a diretiva de reinicialização, pois supostamente parou o contêiner e o Docker deseja ter um caminho para evitar o reinício de loops, se você o matar, você realmente quer matá-lo.
Eu achei os links a seguir valiosos que mostram o mesmo comportamento em diferentes versões (por isso não é um bug, mas o comportamento esperado):