I have a docker container which running in a pod where I need to restart the pod / container when it exceeds memory usage or CPU limit. How to configure it in docker file
CPU and memory limits cannot be given when building a docker and it cannot be configured in Docker File. It is a scheduling problem. You could run your docker with docker run command with different flags to control resources. See Docker Official Document for those control flags for docker run.
As your question is tagged with kubernetes, there is kubernetes way to limit your resources. You would want to add resources in specs for those deployment or pod yaml. For example:
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: your_deployment
labels:
app: your_app
spec:
replicas: 1
template:
metadata:
labels:
app: your_app
spec:
containers:
- name: your_container
image: your_image
resources:
limits:
cpu: "500m"
memory: "128Mi"
requests:
cpu: "250m"
memory: "64Mi"
...
requests affects how docker pod is scheduled on nodes. Memory limit determines when the docker will be killed for OOM and cpu limit determines how the container cpu usage will be throttled (The pod will not be killed).
Meaning of cpu is different for each cloud service providers. For more information, please refer to manage compute resources for Kubernetes