Run Sudo Command with Non-Root User in Docker Container
I Have This Dockerfile: from Ubuntu:17.04 # Must Have Packages Run Apt-Get Update && Apt-Get Install -Y Nano Zsh Curl Git # Instal Oh My Zsh Run Bash -C...
I have this Dockerfile:
FROM ubuntu:17.04
# Must have packages
RUN apt-get update && apt-get install -y nano zsh curl git
# Instal Oh my Zsh
RUN bash -c "$(curl -fsSL )"
RUN sed -i -- 's/robbyrussell/sonicradish/g' /root/.zshrc
# Add none root user
RUN adduser admin
USER admin
I'm connecting with the admin user with the zsh shell.
docker exec -ti linux zsh
I'm adding a non-root user (admin).
I still want to execute a sudo command with this user, but it errors out:
$ sudo apt-get install vim
zsh: command not found: sudo
Same message with bash shell.
How can I run sudo commands with a non-root user?
When I don't use sudo I get a permission error:
$ apt-get install vim
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
2 Answers
This is what I would do
FROM ubuntu:17.04
# Must have packages
RUN apt-get update && apt-get install -y vim nano zsh curl git sudo
# Install Oh my Zsh
RUN bash -c "$(curl -fsSL )"
RUN sed -i -- 's/robbyrussell/sonicradish/g' /root/.zshrc
# Add none root user
RUN useradd admin && echo "admin:admin" | chpasswd && adduser admin sudo
USER admin
Just create your non root user and add it to the sudoers group:
FROM ubuntu:17.04
RUN apt-get update
RUN apt-get install sudo
RUN adduser --disabled-password --gecos '' admin
RUN adduser admin sudo
RUN echo '%sudo ALL=(ALL) NOPASSWD:ALL' >> /etc/sudoers
USER admin