Root password inside a Docker container

2020-01-30 02:10发布

I'm using a Docker image which was built using the USER command to use a non-root user called dev. Inside a container, I'm "dev", but I want to edit the /etc/hosts file.

So I need to be root. I'm trying the su command, but I'm asked to enter the root password.

What's the default root user's password inside a Docker container?

标签: docker
13条回答
在下西门庆
2楼-- · 2020-01-30 03:05

By default docker containers run as the root user.

If you are still using the container you can use exit command to get back to root (default user) user instead of running the container again.

Example -

[dev@6c4c86bccf93 ~]$ ls
[dev@6c4c86bccf93 ~]$ other-commands..
[dev@6c4c86bccf93 ~]$ exit
[root@6c4c86bccf93 /]# ls
查看更多
我命由我不由天
3楼-- · 2020-01-30 03:06

There are a couple of ways to do it.

  1. To run the Docker overriding the USER setting

    docker exec -u 0 -it containerName bash
    

or

docker exec -u root -it --workdir / <containerName> bash
  1. Make necessary file permissions, etc., during the image build in the Docker file

  2. If all the packages are available in your Linux image, chpasswdin the dockerfile before the USER utility.

查看更多
唯我独甜
4楼-- · 2020-01-30 03:08

I had exactly this problem of not being able to su to root because I was running in the container as an unprivileged user.

But I didn't want to rebuild a new image as the previous answers suggest.

Instead I have found that I could access the container as root using 'nsenter', see: https://github.com/jpetazzo/nsenter

First determine the PID of your container on the host:

docker inspect --format {{.State.Pid}} <container_name_or_ID>

Then use nsenter to enter the container as root

nsenter --target <PID> --mount --uts --ipc --net --pid
查看更多
霸刀☆藐视天下
5楼-- · 2020-01-30 03:08

The password is 'ubuntu' for the 'ubuntu' user (at least in docker for ubuntu :14.04.03).

NB: 'ubuntu' is created after the startup of the container so, if you just do this:

 docker run -i -t --entrypoint /bin/bash  ubuntu     

You'll get the root prompt directly. From there you can force the password change of root, commit the container and optionally tag it (with -f) to ubuntu:latest like this:

root@ec384466fbbb:~# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully
root@ec384466fbbb:~# exit

% docker commit ec3844
5d3c03e7d6d861ce519fe33b184cd477b8ad03247ffe19b2a57d3f0992d71bca

docker tag -f 5d3c ubuntu:latest

You must rebuild your eventual dependencies on ubuntu:latest.

查看更多
戒情不戒烟
6楼-- · 2020-01-30 03:10

You can log into the Docker container using the root user (ID = 0) instead of the provided default user when you use the -u option. E.g.

docker exec -u 0 -it mycontainer bash

root (id = 0) is the default user within a container. The image developer can create additional users. Those users are accessible by name. When passing a numeric ID, the user does not have to exist in the container.

from Docker documentation

查看更多
男人必须洒脱
7楼-- · 2020-01-30 03:11

Eventually, I decided to rebuild my Docker images, so that I change the root password by something I will know.

RUN echo "root:Docker!" | chpasswd

or

RUN echo "Docker!" | passwd --stdin root 
查看更多
登录 后发表回答