**Apache Airflow version**: 1.10.14

**Environment**:

- **Cloud provider or hardware configuration**: docker
- **OS** (e.g. from /etc/os-release): apache/airflow:1.10.14-python3.8
- **Kernel** (e.g. `uname -a`): Linux host 5.4.0-62-generic #70-Ubuntu SMP Tue Jan 12 12:45:47 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
- **Install tools**: Docker version 19.03.8, build afacb8b7f0
- **Others**:

**What happened**:
I created a DAG and set the doc_md property on the object but it isn't being rendered in the UI.

**What you expected to happen**:
I expected the markdown to be rendered in the UI

**How to reproduce it**:
Created a new container using the `airflow:1.10.14`, I have tried the following images with the same results.

-  airflow:1.10.14:image-python3.8
-  airflow:1.10.14:image-python3.7
-  airflow:1.10.12:image-python3.7
-  airflow:1.10.12:image-python3.7

```
dag_docs = """
## Pipeline

#### Purpose
This is a pipeline
"""

dag = DAG(
    'etl-get_from_api',
    default_args=default_args,
    description='A simple dag',
    schedule_interval=timedelta(days=1),
)
dag.doc_md = dag_docs

```

![image](https://user-images.githubusercontent.com/29732449/105004686-6b77d680-5a88-11eb-9e34-c8dd38b3fd10.png)

![image](https://user-images.githubusercontent.com/29732449/105004748-7af71f80-5a88-11eb-811c-11bc6a351c71.png)

I have also tried with using a doc-string to populate the doc_md as well as adding some text within the constructor.

```
dag = DAG(
    'etl-get_from_api',
    default_args=default_args,
    description='A simple dag',
    schedule_interval=timedelta(days=1),
    doc_md = "some text"
)
```
All of the different permutations I've tried seem to have the same result. The only thing I can change is the description, that appears to show up correctly.

**Anything else we need to know**:
I have tried multiple browsers (Firefox and Chrome) and I have also done an inspect on from both the graph view and the tree view from within the dag but I can't find any of the text within the page at all.

airflow/models/baseoperator.py
significantly speeding up the task creation process as for very large
        DAGS. Options can be set as string or using the constants defined in
        the static class ``airflow.utils.WeightRule``
    :type weight_rule: str
    :param queue: which queue to target when running this job. Not
        all executors implement queue management, the CeleryExecutor
        does support targeting specific queues.
    :type queue: str
    :param pool: the slot pool this task should run in, slot pools are a
        way to limit concurrency for certain tasks
    :type pool: str
    :param pool_slots: the number of pool slots this task should use (>= 1)
        Values less than 1 are not allowed.
    :type pool_slots: int
    :param sla: time by which the job is expected to succeed. Note that
        this represents the ``timedelta`` after the period is closed. For
        example if you set an SLA of 1 hour, the scheduler would send an email
        soon after 1:00AM on the ``2016-01-02`` if the ``2016-01-01`` instance
        has not succeeded yet.
        The scheduler pays special attention for jobs with an SLA and
        sends alert
        emails for sla misses. SLA misses are also recorded in the database
        for future reference. All tasks that share the same SLA time
        get bundled in a single email, sent soon after that time. SLA
        notification are sent once and only once for each task instance.
    :type sla: datetime.timedelta
    :param execution_timeout: max time allowed for the execution of
        this task instance, if it goes beyond it will raise and fail.
    :type execution_timeout: datetime.timedelta
    :param on_failure_callback: a function to be called when a task instance