Lets see whats more like the basic differences between them.
JDK basically contains everything you need to compile a java program. It indirectly also contains everything to run a java program also. The reason is because JDK contains the JRE also.
However, if you just have JRE, you would be able to run a java program (the byte code), but you would not be able to compile or debug a java program.
It would be important to note that, its JVM and not JRE , which actually runs the Java Byte Code. JRE provides JVM with the class libraries and other supporting files to run the program.