instruction: Create a Dockerfile for fundamentals
output: ```dockerfile
  from 172.18.0.2: seq=2 ttl=64 time=0.281 ms
  ^C
  --- web ping statistics ---
  3 packets transmitted, 3 packets received, 0% packet loss
  round-trip min/avg/max = 0.257/0.288/0.326 ms
  For more information about container networking, see Networking
  overviewFilesystem mountsBy default, the data in a container is stored in an ephemeral, writable
  container layer. Removing the container also removes its data. If you want to
  use persistent data with containers, you can use filesystem mounts to store the
  data persistently on the host system. Filesystem mounts can also let you share
  data between containers and the host.Docker supports two main categories of mounts:Volume mountsBind mountsVolume mounts are great for persistently storing data for containers, and for
  sharing data between containers. Bind mounts, on the other hand, are for
  sharing data between a container and the host.You can add a filesystem mount to a container using the --mount flag for the
  docker run command.The following sections show basic examples of how to create volumes and bind
  mounts. For more in-depth examples and descriptions, refer to the section of
  the storage section in the documentation.Volume mountsTo create a volume mount:
  
  $ docker run --mount source=<VOLUME_NAME>,target=[PATH] [IMAGE] [COMMAND...]
  The --mount flag takes two parameters in this case: source and target.
  The value for the source parameter is the name of the volume. The value of
  target is the mount location of the volume inside the container. Once you've
  created the volume, any data you write to the volume is persisted, even if you
  stop or remove the container:
  
  $ docker run --rm --mount source=my_volume,target=/foo busybox \
   echo "hello, volume!" > /foo/hello.txt
  $ docker run --mount source=my_volume,target=/bar busybox
   cat /bar/hello.txt
  hello, volume!
  The target must always be an absolute path, such as /src/docs. An absolute
  path starts with a / (forward slash). Volume names must start with an
  alphanumeric character, followed by a-z0-9, _ (underscore), . (period) or
  - (hyphen).Bind mountsTo create a bind mount:
  
  $ docker run -it --mount type=bind,source=[PATH],target=[PATH] busybox
  In this case, the --mount flag takes three parameters. A type (bind), and
  two paths. The source path is a the location on the host that you want to
  bind mount into the container. The target path is the mount destination
  inside the container.Bind mounts are read-write by default, meaning that you can both read and write
  files to and
  ```