What's the best way? I usually end up as toast.
Spellcaster with access to the Kill (Death V) or Manablast (requires completion of a specific quest, and you need to have a lot of mana for Manablast to be as effective as Kill; if you don't have much mana, don't bother with Manablast) spells and high spell mastery. Maybe some fodder units or a good tank unit or two to occupy the dragon for the duration of the casting time, and possibly an extra round of casting time if your spell was resisted.
Alternatively, trained units which can hit from range combined with a mid+ level Defender with good armor and some form or another of healing ability (perhaps an extra champion with Life Magic, perhaps a Henchman with Life Adept, perhaps the Defender has a healing spell) will work if you have the Defender occupy the dragon (note that you can use another type of champion to occupy the dragon, but Defenders are the ones most suited to tanking anything that fights in melee, as long as no better targets come into range).
Another alternative is to have trained units which hit hard and fast, and which are either good at bypassing armor (meaning you have good spears or magic damage of a type to which the dragon is vulnerable, or at least not immune) or have a high enough attack rating that the armor just doesn't matter that much. Note that 'fast' doesn't necessarily mean 'high initiative' - if you can manage to get first strike using a bunch of guys armed with Mauls, that's a lot of damage on the first round, and even a dragon can only kill so many units in the rounds before the next action your clubmen take. Ice staves also tend to be good against dragons, as most (maybe all) dragons have neither resistance nor immunity to Ice damage, though they tend to be resistant or immune to Fire damage.
There are also some ways to soften up a dragon before you fight it with the army you want to kill it with. You might be able to hit it with strategic damage spells or strategic-level versions of certain curses (Wither being the big one, if you happen to have lots of Death Shards, but not particularly helpful if you only have one or two). You might churn out an army or two of cheap units, like the basic Militia unit, and send them in to hurt the dragon before your real army takes it on.
Ways to reduce the damage sustained when fighting dragons are rather limited, however. Giving all of the units you take into the fight Dragon Hide Cloaks (or at least Scale Cloaks) will give you a bit of Fire Resistance for surviving any fire attacks, as will Athican Leather if you have it. Having lots of ranged units will allow many of your troops to stay out of melee range, while having lots of melee troops and a healer can allow you to cycle your units around (assuming that your troops can survive at least one hit from a dragon and you can heal them up fast enough to keep at least one unit next to the dragon at all times, or at least heal them enough to significantly delay the time at which the dragon has wiped out your army). High-level units are more likely to survive a dragon's attacks by virtue of having more health, and are also more likely to resist the dragon's fear effect; large units are more likely to kill the dragon quickly because they'll deal more damage per hit (on average), but are not generally more survivable against a dragon than smaller units are. Tactical curses, like Shrink, Blind, Wither, Curse, and Slow can all be valuable, if you can make them stick; same goes for strategic curses, if you have them. Tactical blessings like Haste, Growth, and Giant Form can also be useful, but are not as useful as the curses are because the dragon is reasonably likely to be able to kill your units at about the same rate that you can bless them, and probably has a large(ish) initiative advantage. Having decent armor on your trained units is useful, but only if you're in melee range and the dragon is using its basic attack; dragon fights are one of the rather rare times that a champion makes a better tank than a regular unit does, unless your champion's defense rating is severely outclassed by the defense of your regular units.
Certain champion abilities are also excellent - Battle Cry from a high-level commander can allow your whole army to get off a second round of attacks or ensure that you draw first blood, spells which heal or boost Fire Resistance and defense are also invaluable (e.g. Diamondskin - throw that on a unit sitting by the dragon, and you have a unit that is guaranteed to survive its next three turns). Any stun or entanglement abilities are also useful, and there are a few useful scrolls or other items which can help - getting that extra Air Elemental or using that Despair scroll you'd been saving for a bad day can help to turn the tide if you need to, and having an Escape Scroll can at least get your champion out of there when things go sour, especially if you also have a Recall Scroll for moving the army out from beside the dragon.
If you want to design units that have a chance against a dragon, it's best to emphasize speed, mobility, and attack over the defensive attributes. While this was a long time ago (in E:FE rather than E:FE:LH, during the late part of FE's beta), I was once able to defeat three dragons (one Fell and one Ashwake dragon, plus either a Storm or a Clambercoil dragon, though I no longer recall which) in a single battle using only one champion with the Heal, Haste and Wellspring spells, and six or seven groups of mounted spearmen armed with Boar Spears and armored in Leather; I don't think I had any trinkets or cloaks on them. The horsemen units were using the second-largest group size at the time (which means that there were seven figures per unit, making these more powerful than the equivalent units in E:FE:LH, especially now that spears aren't as strong as they once were), and I more or less simply rotated them around to try to keep them alive as long as possible. I think two of the dragons died before the last of the horsemen fell, and the champion finished the last one. If you try this kind of thing, it is very important to keep an eye on your troops and pay attention to the kind of damage that the dragons are doing, and it is vital that you concentrate on taking one dragon down at a time if you have multiple to deal with (same goes for dealing with any dragon + army situation - either have something occupy the dragon while you kill the support, or kill the dragon and then deal with the support, unless you have something like Blizzard which will kill the support and turn the battle into a standard dragon fight). If you keep an eye on your units and make certain to heal them or pull them out of the fight before the dragon can kill them, you become much more likely to win the battle. Don't forget to mind your mana supplies, though.