zip -r archive.zip dir_to_zip
from man zip
-r
--recurse-paths
Travel the directory structure recursively; for example:
zip -r foo.zip foo
or more concisely
zip -r foo foo
In this case, all the files and directories in foo are saved in a zip archive
named foo.zip,including files with names starting with ".", since the recursion
does not use the shell's file-name substitution mechanism...
Even if it functions well I would like to propose you 7z(http://www.7-zip.org/).
7za a directory.7z directory
It has a better compression and it is opensource, GNU LGPL license, freely available for windows,linux,BSD...
BTW it creates/opens 7z, XZ, BZIP2, GZIP, TAR, ZIP and WIM,
and open unpack only: ARJ, CAB, CHM, CPIO, CramFS, DEB, DMG, FAT, HFS, ISO, LZH, LZMA, MBR, MSI, NSIS, NTFS, RAR, RPM, SquashFS, UDF, VHD, WIM, XAR and Z.
[They should pay me for advertisement :-)]