My secondary containers are individual spray bottles and hand pump sprayers. Detergents, sanitizers, etc. do tend to take labels off them. Here's what I do for labels:
Wash and dry the outside of the container.
I make my labels on Avery labels (printable stickers) and fix them to the containers.
Cover the label with 1-3 layers of clear packaging tape to provide a "laminated" type surface to protect the label.
These labels typically last two years or longer in my plant, less if the bottle gets wet all the time or a solvent starts to remove the tape. But the clear tape does a good job of keeping moisture/chemicals away from the paper label, and since I made the labels they've got the necessary info. Secondary containers cannot be washed and reused with other chemicals in my plant, and I instruct all operators to bring me containers with bad labels for me to replace as they're found. Labor intensive for me at first, but since I've gotten them all labeled I now have to make/replace labels on about 1 container per quarter.
Things that don't work: unprotected paper labels and sharpie either on fancy laminated labels (ink still rubs off) or directly on the container.