docker pull的CentOS的镜像的root密码是多少


我使用如下命令:
#docker pull centos
下载了镜像,然后用:
#useradd www
添加了一个用户,然后:
#su www
然后想root ,不知道密码。。。请问大家应该怎么知道密码。。。。
已邀请:

wonderflow - 浙大VLIS实验室

赞同来自: itfanr jamesmarva


一般先放ssh公钥进去,然后登陆的时候就是root,然后再创建用户的。

shlallen - DaoCloud软件工程师,合伙人

赞同来自: jamesmarva


刚刚下来了一个centos的镜像,跑了一下,感觉的确有点小trick。

1.docker pull centos:latest 镜像ID为:fd44297e2ddb;
2.docker run -it centos:latest /bin/bash 运行该容器,并进入容器内部,默认是root用户;
3. yum install passwd 安装passwd软件;
4. 执行passwd命令,修改root用户密码

一般很少会想到centos镜像中passwd可执行文件都没有。

xiaolunsanguo - 京东商城-基础平台部-JDOS团队

赞同来自: jamesmarva


root密码是保存在/etc/shadow文件中。可以直接通过命令修改修改密码。
我给你一个命令样例:
sed -i '/^root/c/root:$6$sPRWqIa9iqzO0Hi9$wiEuZ3q3Ue2dXAN.2pUXzxlrX9THF2Zp6x0i7x6yXWUj3PO4CIOPLHqtcWMUZpE/VzC48mZ4qrDTHobXJN6/e/:16395:0:99999:7:::' /etc/shadow

这条命令的意思就是将/etc/shadow中以root开头的一行替换为'root:$6$sPRWqIa9iqzO0Hi9$wiEuZ3q3Ue2dXAN.2pUXzxlrX9THF2Zp6x0i7x6yXWUj3PO4CIOPLHqtcWMUZpE/VzC48mZ4qrDTHobXJN6/e/:16395:0:99999:7:::'。替换后,root密码就会直接被更新为我希望的样子了。

至于这个字符串如何生成,你有两种方法:
1. 可以写一个程序,按照相应方法来生成。这个比较麻烦,但是通用。具体自己搜一下就知道了。
2. 直接到另外一台可以使用passwd的机器或者容器上,设定好了密码,然后把/etc/shadow中root的那一行拷贝出来。

yum install passwd 无法配置密码,报错没有xxxx文件
bash-4.1# rpm -e cracklib-dicts --nodeps
bash-4.1# yum install cracklib-dicts

benpao

赞同来自: jamesmarva


Look,我的Dockerfile

选择一个已有的os镜像作为基础

FROM centos:latest

镜像的作者

MAINTAINER benpao "benpao@benpao.com"

安装openssh-server和sudo软件包,并且将sshd的UsePAM参数设置成no

RUN yum install -y openssh-server sudo
RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config

添加测试用户admin,密码admin,并且将此用户添加到sudoers里

RUN useradd admin

RUN echo "admin:admin" | chpasswd

RUN echo "admin ALL=(ALL) ALL" >> /etc/sudoers

修改root用户密码

RUN echo "root:benpao" | chpasswd

下面这两句比较特殊,在centos6上必须要有,否则创建出来的容器sshd不能登录

RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key

启动sshd服务并且暴露22端口

RUN mkdir /var/run/sshd
EXPOSE 22
CMD ["/usr/sbin/sshd", "-D"]

扁豆焖面先生

赞同来自:


root 登录以后进去以后直接先设定一个密码不行吗

要回复问题请先登录注册