How do I mount –bind inside a Docker container?

I have this container based on debian:jessie (but this is not very relevant as I had the same issue with alpine:3.3). I get to the point where I need to

mount --bind /htdocs/www /home/user/example.com/www

and I get

  • Vmstateevent invalid json error installing docker on mac Sierra
  • Android ABI linked to wrong target
  • how to run nginx docker container with custom config?
  • How to get two Docker containers talking to each other?
  • Docker on CentOS report “unable to mount sys as readonly” when run
  • Docker Debian install fails
  • mount: permission denied
    

    I can’t find anything in any kernel log, and -vvv yields nothing interesting. I obviously can do this on the host (with any other pair of subtree/node). In my example above /htdocs/www is the mountpoint of a Docker volume, but it doesn’t appear like it’s of any importance, as I can’t mount --bind any pair of subtree/node inside the container.

  • Kafka on AWS ECS, how to handle advertised.host without known instance?
  • Can MongoDB instances in Google App Engine flexible be stateful?
  • How do I connect the Postgres database running on the local machine to the docker container
  • Stop Minecraft server in Docker when container stops
  • Can't install package on alpine though I can see it in the ui
  • Running Windows Server Core in Docker Container
  • One Solution collect form web for “How do I mount –bind inside a Docker container?”

    For using the mount system call, you need the CAP_SYS_ADMIN capability. By default, Docker drops all capabilities when spawning a container (meaning that even as root, you’re not allowed to do everything). See the mount(2) man page for more information.

    You can start your container with the --cap-add=SYS_ADMIN flag to add this capability to your container:

    root@host > docker run --rm -it --cap-add=SYS_ADMIN debian:jessie
    root@ee0b1d5fe546:/# mkdir /mnt/test
    root@ee0b1d5fe546:/# mount --bind /home /mnt/test/
    root@ee0b1d5fe546:/# 
    

    Use this with caution. Do not run untrusted software in a privileged container.

    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.