How can I fill between three circles like this pictures?

Use the even odd rule. Also, I changed to 1.14 just to compile in my local machine

\documentclass[12pt]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns}
\pgfplotsset{compat=1.14}
%\usepackage{fouriernc}
\begin{document}
\begin{tikzpicture}
  \begin{axis}[
    axis line style = very thick,   
    axis lines = center,
    xlabel=$x$,ylabel=$y$,
    domain=-5:4.7,
    ymin=-5,
    ymax=5,
    xmin=-5,
    xmax=4.7,
    xticklabels={},yticklabels={},
    samples=100,xtick distance=1,
    ytick distance=1,unit vector ratio*=1 1 1,
    width=10cm,
    grid=major,
    grid style={gray!30}]
    % Draw circles
    \draw[fill, even odd rule, pattern = north west lines] (axis cs:0,0) circle[radius=4] {(axis cs:0,-2) circle[radius=2] (axis cs:0,2) circle[radius=2]};
    %\draw[thick] (axis cs:0,-2) circle[radius=2];
    %\draw[thick] (axis cs:0,2) circle[radius=2];
    %\draw[thick] (axis cs:0,0) circle[radius=4];
    \node at (axis cs:-0.25, -0.25) {$O$} ;
    \node at (axis cs:-4.5, -0.25) {$-4$} ;
    \node at (axis cs:4.2, -0.25) {$4$} ;
    \node at (axis cs:-0.5, -4.3) {$-4$} ;
    \node at (axis cs:-0.5, 4.3) {$-4$} ;
    \node at (axis cs:-0.5, -2) {$-2$} ;
    \node at (axis cs:-0.5, 2) {$2$} ;
    \addplot[mark=*] coordinates {(0,-2) (0,2) (0,-4) (0,4)
    };
  \end{axis}
\end{tikzpicture}
\end{document}

enter image description here


I think pgfplots is too powerful for such simple three circles. Here is a normal TikZ solution.

\documentclass[12pt,tikz]{standalone}
\usetikzlibrary{patterns,arrows.meta}
\usepackage{fouriernc}
\begin{document}

\begin{tikzpicture}[very thick,>=Stealth, dot/.style={circle,fill,inner sep=2pt}]
\draw [pattern=north east lines] circle (4);
\draw [fill=white] (0,2) circle (2) (0,-2) circle (2);
\draw [->] (-5,0) -- (5,0)node[below]{$x$};
\draw [->] (0,-5) -- (0,5)node[right]{$y$};
\path (0,0)node[label=below left:$O$]{}
      (0,-2)node[dot,label=left:-2]{}
      (0,2)node[dot,label=left:2]{}
      (0,4)node[dot,label=above left:4]{}
      (0,-4)node[dot,label=below left:-4]{}
      (-4,0)node[dot,label=below left:-4]{}
      (4,0)node[dot,label=below right:4]{};
\end{tikzpicture}

\end{document}

enter image description here


with pure tikz is simpler than with pgfplots:

\documentclass[12pt, tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta, patterns}
\begin{document}
    \begin{tikzpicture}[
dot/.style = {circle, fill, minimum size=4pt, inner sep=0pt},
axs/.style = {-Straight Barb},
every label/.append style = {font=\footnotesize}
                        ]
% big circle
\draw[thick, pattern = north west lines] (0,0) circle (4cm);
% small circles
\draw[thick, fill=white]  (0, 2) circle (2cm);
\draw[thick, fill=white]  (0,-2) circle (2cm);
%axis
\draw[axs] (-5.0,0) -- (5,0) node[below left]  {$x$};
\draw[axs] (0,-4.5) -- (0,5) node[below right] {$y$};
% coordinates
\foreach \x/\pos in {-4/left,0/left,4/right}
    \node[below \pos, font=\small] at (\x, 0) {$\x$};
\foreach \x/\pos in {-4/225, -2/180, 2/180, 4/135}
    \node[dot,label=\pos:$\x$] at (0,\x) {};
    \end{tikzpicture}
\end{document}

enter image description here