내 Dockerfile
FROM ubuntu:latest
RUN apt update
RUN apt install -y openssh-server sudo
RUN useradd -ms /bin/bash -g root -G sudo -u 1000 remote_user
USER remote_user
WORKDIR /home/remote_user
RUN mkdir /home/remote_user/.ssh && chmod 700 /home/remote_user/.ssh
COPY remotecentos.pub /home/remote_user/.ssh/authorized_keys
RUN stat /etc/passwd
RUN echo 'remote_user:*****2599*****' | chpasswd -c SHA256
RUN service ssh start
EXPOSE 22
CMD ["/usr/sbin/sshd","-D"]
오류가 발생했습니다.
Step 9/13 : RUN stat /etc/passwd
---> Running in 7147677000bd
File: /etc/passwd
Size: 1325 Blocks: 8 IO Block: 4096 regular file
Device: 37h/55d Inode: 22961332 Links: 1
Access: (0644/-rw-r--r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2022-10-06 12:45:10.000000000 +0000
Modify: 2022-10-06 12:45:10.000000000 +0000
Change: 2022-10-06 12:45:11.197943157 +0000
Birth: 2022-10-06 12:45:11.197943157 +0000
Removing intermediate container 7147677000bd
---> 7b37835f7f2c
Step 10/13 : RUN echo 'remote_user:******' | chpasswd -c SHA256
---> Running in faae63d7fd92
chpasswd: Permission denied.
chpasswd: cannot lock /etc/passwd; try again later.
컨테이너 내부의 권한을 수정하는 방법은 무엇입니까?
비밀번호 라인을 어떻게 변경해야 합니까?
답변1
Dockerfile은 호출하기 전에 현재 사용자를 remote_user
사용자 로 변경합니다 chpasswd
. 을(를 ) 사용하려면 chpasswd
루트 권한이 있어야 합니다. RUN
이 줄(및 수퍼유저 권한이 필요한 다른 명령)을 USER
이 줄 앞으로 옮기고 싶을 수도 있습니다 . 또한 ssh
비슷한 이유로 서비스 시작이 실패할 것으로 예상합니다 .