I guess that by $D_f$ you mean the domain of $f$, right?
The problem "is it injective or surjective or both"? Without the precise specification of the domain/codomain pair, is meaningless. Let me explain. A function $f: A \rightarrow B$ is defined to be the triple composed by: the set $A$, the set $B$, and the set-theoretic map $f$. It depends on the sets $A, B$ as well as the map $f$. Now, take your function:
$f:D_f \rightarrow [0, \infty[ \ with \ f(x)= \sqrt{x}$
If you see $D_f$ as a subinterval of the real numbers, then your functions is certainly both injective and surjective. But if $D_f$ you mean, for example a subset of the rational numbers, then the function is injective but not anymore surjective, which is perhaps the reason why you say that your function "is not surjective".
In other words, you must better specify the pair domain/codomain. If on the other hand $D_f$ is the set of nonnegative real numbers, then the function is also surjective, and this claim is equaivalent to the property (true in the field of real numbers) that every positive real number is the square root of another (positive) real number, which depends on the construction of the field $\mathbb R$, and it is by no means trivial.
Let's see injectivity. The claim that a given function is injective is equivalent to the following:
$$
f(x) = f(y) \Rightarrow x = y
$$
So let us suppose that for some $x, y$ we have $f(x)=f(y)$, i.e. $\sqrt x=\sqrt y$. Now square this equality and obtain $(\sqrt x)^2=(\sqrt y)^2$. As the square root of a (positive) number $a$, $\sqrt a$, is always defined to be a positive number, this amounts to say simply $x=y$, which proves that $f$ is indeed injective.
As I mentioned before, proof of surjectivity is definitely less trivial, and goes to the heart of the construction of the field of real numbers.