在 docker 容器中成为 root

Posted

技术标签:

【中文标题】在 docker 容器中成为 root【英文标题】:Become root in a docker container 【发布时间】:2019-12-17 14:59:10 【问题描述】:

我安装了Oracle Database in a Docker container,但不知道如何成为root。如果我从主持人那里得到这个

sudo docker exec -it -u 0 oracle18se /bin/bash

sudo docker exec -it --user root oracle18se /bin/bash

我明白了

OCI runtime exec failed: exec failed: container_linux.go:345: starting container process caused "chdir to cwd (\"/home/oracle\") set in config.json failed: permission denied": unknown

如果我这样做

sudo docker exec -it oracle18se /bin/bash

从主机,然后

su -

从容器中,它询问root密码,但我不知道。

Hy 主机操作系统是 Ubuntu 18.04,link to docker file

EDIT1:

找到一个 Docker bug。

【问题讨论】:

这能回答你的问题吗? Root password inside a Docker container @banuj 我收到了这个OCI runtime exec failed...的错误 【参考方案1】:

您可以执行到现有容器中

docker exec -u root -it <container-id> /bin/bash

输出(如终端所示):

root@<container-id>:/#

设置root密码使用这个:

输入以下命令成为root用户并发出密码:

sudo -i
passwd

或者一次性为root用户设置密码:

sudo passwd root

通过输入以下命令测试您的 root 密码:

su -

【讨论】:

有bug,见EDIT1【参考方案2】:

您可以使用以下方式在 docker 容器中以 root 身份连接:

docker exec -u 0 -it <container_id> /bin/bash

【讨论】:

我用这个命令得到OCI runtime exec failed: exec failed: container_linux.go:345: starting container...【参考方案3】:

解决方法是

sudo docker exec -u 0 -it --workdir / oracle12se /bin/bash

【讨论】:

以上是关于在 docker 容器中成为 root的主要内容,如果未能解决你的问题,请参考以下文章

docker安装mysql/redis

Docker自学笔记

容器技术演化史

一行命令安装docker和docker-compose(CentOS7)

如何在 UITableView 中成为FirstResponder UITextField

局部变量在类的方法中成为最终变量——但为啥呢?