Dogecoin has had few miners of its own since 2014. The vast majority of its blocks are a by-product of Litecoin mining: a miner builds a Litecoin block candidate whose coinbase commits to a Dogecoin block, and each Scrypt hash they compute can then count on Litecoin, on Dogecoin, or on both. The mechanism is auxiliary proof of work (AuxPoW), first built for Namecoin in 2011 and enabled on Dogecoin in September 2014.
Why Dogecoin adopted it
Dogecoin launched in December 2013 with Scrypt proof of work, inherited through its Litecoin-derived code, and 1-minute blocks. Its early rewards fell quickly, and its hashrate was a small fraction of Litecoin's on the same hardware. That made it cheap to attack: anyone with a slice of Litecoin's hashrate could have overpowered Dogecoin. Profit-switching "multipools" made it worse, piling in when DOGE was profitable and leaving when it wasn't.
Merged mining solved both problems. It activated at block 371,337 with Dogecoin Core 1.8. Litecoin miners could now earn DOGE on top of LTC for almost no extra work, most of them started doing so, and Dogecoin's hashrate jumped to roughly Litecoin's level.
The AuxPoW idea
Normal proof of work says: hash this block's header, and the result must be below the target. AuxPoW says: show me some other block (the parent) that commits to this Dogecoin block, and whose header hash is below Dogecoin's target.
The parent is a Litecoin-format block. It doesn't have to be a valid Litecoin block, and it never has to be published on Litecoin. It only has to prove that the work was done while committing to this exact Dogecoin block.
The commitment in the parent's coinbase
The miner puts a small tag in the parent block's coinbase scriptSig:
fa be 6d 6d merged-mining magic: 0xfabe followed by "mm"
<32 bytes> aux merkle root (byte-reversed)
<4 bytes, little-endian> merkle tree size (a power of two)
<4 bytes, little-endian> merkle nonce
The aux merkle root is the root of a small Merkle tree whose leaves are the block hashes of every auxiliary chain being merged-mined, so one Litecoin candidate can commit to Dogecoin and other Scrypt chains at once. Each chain's leaf position is computed from its chain ID and the merkle nonce, so two chains can't claim the same slot.