Using sudo inside a docker container

Normally, docker containers are run using the user root. I’d like to use a different user, which is no problem using docker’s USER directive. But this user should be able to use sudo inside the container. This command is missing.

Here’s a simple Dockerfile for this purpose:

  • Running Docker and Jekyll together in a same ec2 instance
  • Unrecognized import path “main/testPackage” when running Go image
  • docker registry v2 : get parent image name
  • How to reference the local host inside bash?
  • Docker client communicating with docker host
  • Cleaning up docker-compose data volumes in Jenkins
  • FROM ubuntu:12.04
    
    RUN useradd docker && echo "docker:docker" | chpasswd
    RUN mkdir -p /home/docker && chown -R docker:docker /home/docker
    
    USER docker
    CMD /bin/bash
    

    Running this container, I get logged in with user ‘docker’. When I try to use sudo, the command isn’t found. So I tried to install the sudo package inside my Dockerfile using

    RUN apt-get install sudo
    

    This results in Unable to locate package sudo

    I’ve no idea how to manage this. Any suggestions? Thx a lot!

  • How do I run 2 environments of SkyDns/Skydock simultaneously?
  • Java app in Docker container does not log to syslog properly
  • Logging with docker-compose: Can I use two drivers at the same time?
  • How does Docker create environment variables in the container?
  • How could I launch multiple container at a time shared one Dockerfile
  • docker build running out of memory, but plenty of memory seems to be available
  • One Solution collect form web for “Using sudo inside a docker container”

    Just got it. As regan pointed out, I had to add the user to the sudoers group. But the main reason was I’d forgotten to update the repositories cache, so apt-get couldn’t find the sudo package. It’s working now. Here’s the completed code:

    FROM ubuntu:12.04
    
    RUN apt-get update && \
          apt-get -y install sudo
    
    RUN useradd -m docker && echo "docker:docker" | chpasswd && adduser docker sudo
    
    USER docker
    CMD /bin/bash
    
    Docker will be the best open platform for developers and sysadmins to build, ship, and run distributed applications.