Yes, in the end images are an entire filesystem and can be large if you installed a lot of packages (or very small, e.g: busybox). Yes, you can freeze it: you can commit a container as a new image. Yes, you can push it to a server (https://index.docker.io/). Yes, you can use the same image for development, staging and production; you'll launch different container from the same image that's it.