First of all, the height of body, html and container (see element with class 'container') has to have height: 100%;
In this solution I have used flex box. It is supported by all modern browsers and IE11.
It's necessary to add the following properties to container:
display: flex;
flex-direction: column; /*the flex items are placed in column, by default it is in row*/
To move footer to bottom, just add to flex item 
margin-top: auto; /* it grabs all free space between flex items and put it before this flex item */
html, body {
  height: 100%;
}
.container {
  height: 100%;
  background-color: green;
  display: flex;
  flex-direction: column;
}
.header {
  height: 20%;
  background-color: yellow;
}
.content {
  background-color: white;
}
.footer {
  min-height: 20%;
  background-color: blue;
  margin-top: auto;
}
  <div class="container">
    <div class="header">Header</div>
    <div class="content">It's content</div>
    <div class="footer">Footer in bottom</div>
  </div>