도커 컨테이너 내부의 루트 암호
하여 USER라는 dev이지만, 는 "dev", "dev", "dev", "dev"를 ./etc/hostsjava.
그래서 저는 뿌리가 되어야 합니다.su 명령을 사용하려고 하는데 루트 암호를 입력하라는 메시지가 나타납니다.
도커 컨테이너 내의 기본 루트 사용자 암호는 무엇입니까?
컨테에로때할기그대사사용용자신(ID =0 user(ID = 0)를 사용하면 Docker 에 로그인은 사용자가 ▁0 0)로 수.-u선택.예.
docker exec -u 0 -it mycontainer bash
루트(id = 0)는 컨테이너 내의 기본 사용자입니다.이미지 개발자가 추가 사용자를 생성할 수 있습니다.이러한 사용자는 이름으로 액세스할 수 있습니다.숫자 ID를 전달할 때 사용자는 컨테이너에 존재할 필요가 없습니다.
업데이트: 컨테이너에 대해 도커 관리 명령을 사용하여 다음을 실행할 수도 있습니다.
docker container exec -u 0 -it mycontainer bash
결국, 저는 제 도커 이미지를 재구축하기로 결정했습니다. 그래서 제가 알게 될 루트 비밀번호를 변경하기로 했습니다.
RUN echo 'root:Docker!' | chpasswd
또는
RUN echo 'Docker!' | passwd --stdin root
몇 가지 방법이 있습니다.
USER 설정을 재정의하는 도커를 실행하려면 다음과 같이 하십시오.
docker exec -u 0 -it containerName bash
또는
docker exec -u root -it --workdir / <containerName> bash
Docker 파일에서 이미지를 빌드하는 동안 필요한 파일 권한 등을 만듭니다.
이미지에서 할 수 있는 경우 이미지를 사용할 수 있습니다.
chpasswdUSER 유틸리티 앞에 있는 도커 파일에 있습니다.
전체 참조: http://muralitechblog.com/root-password-of-a-docker-container/
실행 중인 컨테이너에서 루트 암호를 만들거나 변경하려면 다음과 같이 하십시오.
docker exec -itu 0 {container} passwd
나는 아래 명령으로 그것을 작동시킬 수 있습니다.
root@gitnew:# docker exec -it --user $(username) $(containername) /bin/bash
실행 중인 컨테이너의 셸을 가져와 루트 패스를 변경합니다.
docker exec -u 0 -it <MyContainer> bash
root@MyContainer:/# passwd
Enter new UNIX password:
Retype new UNIX password:
docker exec -u 0 -it containername bash
권한 없는 사용자로 컨테이너에서 실행 중이었기 때문에 루팅을 수행할 수 없는 문제가 있었습니다.
하지만 저는 앞의 대답들이 암시하는 것처럼 새로운 이미지를 다시 만들고 싶지 않았습니다.
대신 'nsenter'를 사용하여 컨테이너를 루트로 액세스할 수 있다는 것을 알게 되었습니다. https://github.com/jpetazzo/nsenter 을 참조하십시오.
먼저 호스트에서 컨테이너의 PID를 확인합니다.
docker inspect --format {{.State.Pid}} <container_name_or_ID>
그런 다음 nsenter를 사용하여 컨테이너를 루트로 입력합니다.
nsenter --target <PID> --mount --uts --ipc --net --pid
다음을 사용하여 SSH를 루트로 도커 컨테이너에 연결할 수 있습니다.
docker exec -it --user root <container_id> /bin/bash
그런 다음 이를 사용하여 루트 암호를 변경합니다.
passwd root
sudo가 설치되었는지 확인하기 위해 다음을 입력합니다.
sudo
설치되지 않은 경우 설치합니다.
apt-get install sudo
사용자 개발에 대한 sudo 권한을 부여하려면 사용자 개발을 sudo 그룹에 추가할 수 있습니다.
usermod -aG sudo dev
이제 컨테이너 안에서 dev 사용자로부터 sudo 수준 명령을 실행하거나 이전에 설정한 암호를 사용하여 컨테이너 안에서 root로 전환할 수 있습니다.
테스트하려면 사용자 dev로 로그인하고 일반적으로 루트 사용자만 액세스할 수 있는 루트 디렉터리의 내용을 나열합니다.
sudo ls -la /root
dev에 대한 암호 입력
사용자가 적절한 그룹에 속해 있고 암호를 올바르게 입력한 경우 sudo로 실행한 명령은 루트 권한으로 실행되어야 합니다.
암호는 'ubuntu' 사용자의 경우 'ubuntu'입니다(최소한 ubuntu의 경우 도커:14.04.03).
NB: 'ubuntu'는 컨테이너를 시작한 후에 생성되므로 이렇게 하면 됩니다.
docker run -i -t --entrypoint /bin/bash ubuntu
루트 프롬프트가 직접 표시됩니다.여기서 다음과 같이 root의 암호를 강제로 변경하고 컨테이너를 커밋한 다음 선택적으로 unbuntu:latest에 태그( -f 포함)할 수 있습니다.
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
ubuntu:latest에 대한 종속성을 재구성해야 합니다.
컨테이너를 다시 작성하지 않으려면 다음 단계를 수행합니다.
docker exec -u 0 -it containerName bashsudo visudo- 파일 끝에 다음을 추가합니다.
your_username ALL=(ALL:ALL) ALL
저의 경우 unbu를 사용자 이름으로 사용하기 때문에 다음과 같습니다.
ubuntu ALL=(ALL) NOPASSWD: ALL
파일을 저장하고 도커 컨테이너에 다시 저장한 다음 sudo를 심장 대륙에 저장합니다.
보너스: 도커 이미지를 업데이트하려면 다음을 수행하면 됩니다.
docker commit containerName NewImage
더 하고자 합니다.--add-host NAME:IP컨테이너를 시작할 때 도커를 실행할 인수입니다. 그면업트다니됩이가 됩니다./etc/hosts/루트가 될 필요가 없는 파일.
그렇지 않은 경우, 다음을 오버라이드할 수 있습니다.USER ▁the를 주어 -u USER에 깃발을 내미는.docker run그러나 실행 중인 컨테이너에서 실제로 물건을 바꾸면 안 되기 때문에 이것에 대해 조언하고 싶습니다.대신 도커 파일에서 변경하고 새 이미지를 작성합니다.
도커 파일에서 USER root 명령을 사용할 수 있습니다.
컨테이너를 시작하면 루트가 되지만 루트의 pw가 무엇인지 알 수 없습니다.알고 있는 것으로 설정하려면 "passwd root"를 사용합니다.컨테이너를 스냅샷/커밋하여 작업을 저장합니다.
경우에 따라 사용자 아래에서 다음과 같은 작업을 수행할 수 있어야 합니다.sudo(예: 컨테이너에서 실행되는 애플리케이션이 사용자에게 셸을 제공합니다.)도커 파일에 추가하기만 하면 됩니다.
RUN apt-get update # If necessary
RUN apt-get install sudo # If your base image does not contain sudo.
RUN useradd -m -N -s /bin/bash -u 1000 -p '$1$miTOHCYy$K.c4Yw.edukWJ7z9rbpTZ0' user && \
usermod -aG sudo user # Grant sudo to the user
USER user
이제 기본 이미지 사용자 아래에 있습니다.user당신은 할 수 있을 것입니다.sudo비밀번호가 3번 라인에 설정되어 있습니다.
다음에 대한 암호 해시 생성 방법 보기useradd 여기나 여기나
위의 답변 중 일부는 좋았고, 특히 다음과 같은 답변이 있었습니다.
docker exec -u root -it CONTAINERID /bin/bash
다음에 대한 답변의 첫 번째 열에서 CONTAINE ID를 참조하십시오.
docker ps
이것은 당신을 뿌리내리게 하고, 당신이 원하는 것은 무엇이든 할 수 있게 합니다.그러나 명령이 컨테이너에 있는 경우에만 해당됩니다.루트 암호를 변경하는 것과 같은 간단한 작업을 수행하려면(위의 많은 사용자가 제안한 대로) VPN을 끄고 다음 작업을 수행해야 했습니다.
yum install -y passwd
나는 그곳에 있는 동안 나중에 필요할 때를 대비해 vim과 sudo를 설치했습니다.
참고: 비밀번호는 쉬운 비밀번호를 사용할 수 없습니다.
루트 액세스 권한을 얻으려면 다음 명령을 사용하십시오.
$ sudo -i
기본적으로 도커 컨테이너는 다음과 같이 실행됩니다.root사용자의
만약 당신이 여전히 사용할 수 있는 컨테이너를 사용exit로 돌아가라는 명령root컨테이너를 다시 실행하는 대신 (기본 사용자) 사용자입니다.
예 -
[dev@6c4c86bccf93 ~]$ ls
[dev@6c4c86bccf93 ~]$ other-commands..
[dev@6c4c86bccf93 ~]$ exit
[root@6c4c86bccf93 /]# ls
이렇게 사용할 수도 있습니다(암호 확인이 필요한 경우).
(echo 'myrootpassword'; echo 'myrootpassword') | passwd root
도커 컨테이너에 고정 루트 암호를 설정하면 시스템이 손상될 수 있으므로 사용해서는 안 됩니다.대신 다음을 사용할 수 있습니다.
docker exec -itu 0 CONTAINER_ID bash
컨테이너가 가동 중이고 실행 중인 동안에는 언제든지 컨테이너에 대한 루트 액세스 권한이 필요합니다.
위 명령에서는 bash를 셸로 실행할 것으로 가정합니다.저는 MS Windows를 사용하지 않지만 CMD나 CMD를 사용해 볼 수 있습니다.MS 윈도우즈 시스템에 있는 경우 bash 대신 EXE를 사용합니다.
언급URL : https://stackoverflow.com/questions/28721699/root-password-inside-a-docker-container
'source' 카테고리의 다른 글
| pathVariable이 있는 URL에만 Spring Security AntMatchers 패턴을 적용하는 방법 (0) | 2023.08.08 |
|---|---|
| 이벤트 핸들러가 jQuery의 요소에 바인딩되어 있는지 테스트 (0) | 2023.08.08 |
| 한 번에 둘 이상의 제약 조건을 삭제하는 방법(Oracle, SQL) (0) | 2023.08.08 |
| 단일 쿼리에서 합계 및 합계를 기준으로 그룹 가져오기 (0) | 2023.08.08 |
| PHP에서 람다는 무슨 용도입니까? (0) | 2023.08.08 |