Maybe the best way to approach the problem is through molecular orbital theory. When people talk about the octet rule, it's a convenient lie. Its a convenient way to understand why molecules are stable. But what really happens is that the atomic orbitals of each chlorine combine to give a set of molecular orbitals and for Cl2 the molecular orbitals have a stable electron configuration. For simplicity, lets take the molecular orbital structure of F2 (see attached picture). In F2 (the middle column) you see 18 electrons split among 9 molecular orbitals. Because of symmetry arguments and energetics/electronegativity arguments, the electron density from these molecular orbitals is split evenly between the fluorine nuclei. So, on average, the electron density surrounding each fluorine nucleus is equivalent to 9 electrons, which balances out the charge of the 9 protons in each nucleus.
Charges and partial charges in covalent bonds come when the electron density is not evenly distributed. For example, in C=O, the atomic orbitals of carbon are a higher energy than the atomic orbitals of oxygen. Therefore, the electron density of the bonding orbitals of C=O resides nearer to the oxygen while the electron density of the antibonding orbitals resides nearer to the carbon. Since more of the electrons are in bonding orbitals, the oxygen has a slight negative charge and the carbon has a slight positive charge.