prosource

Docker Alpine 컨테이너에서 셸 시작

probook 2023. 8. 21. 21:25
반응형

Docker Alpine 컨테이너에서 셸 시작

Ubuntu 이미지의 대화형 셸을 시작하려면 다음을 실행합니다.

ole@T:~$ docker run -it --rm ubuntu
root@1a6721e1fb64:/# ls
bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

그러나 Alpine Docker 이미지에 대해 실행하면 다음과 같은 결과가 나타납니다.

ole@T:~$ docker run -it --rm alpine
Error response from daemon: No command specified

알파인 베이스 컨테이너에서 대화형 셸을 시작하는 명령은 무엇입니까?

ole@T:~$ docker run -it --rm alpine /bin/ash
(inside container) / # 

위에서 사용한 옵션:

  • /bin/ashis BusyBox에서 제공하는 Ash(Almquist Shell)
  • --rm용기가 나갈 때 자동으로 용기를 제거)docker run --help)
  • -i대화형 모드(STDIN이 연결되지 않은 경우에도 열려 있음)
  • -t유사 TTY 할당

일반적으로 Alpine Linux 이미지에는 다음이 포함되지 않습니다.bash대신 사용할 수 있습니다./bin/ash,/bin/sh,ash아니면 오직sh.

/빈/재

docker run -it --rm alpine /bin/ash

/bin/sh

docker run -it --rm alpine /bin/sh

docker run -it --rm alpine ash

docker run -it --rm alpine sh

이 정보가 당신에게 도움이 되길 바랍니다.

이제 Alpine 이미지가 직접 부팅됩니다./bin/sh기본적으로 실행할 셸을 지정하지 않아도 됩니다.

$ sudo docker run -it --rm alpine  
/ # echo $0  
/bin/sh  

이것은 다음과 같습니다.alpine이제 imageDocker 파일에는 컨테이너가 시작될 때 실행할 셸을 지정하는 명령이 포함되어 있습니다.CMD ["/bin/sh"].

이전 Alpine 이미지 버전(2017년 이전 버전)에서는 Docker가 CMD에 대한 추가 계층을 생성하여 이미지 크기가 증가했기 때문에 CMD 명령을 사용하지 않았습니다.이것은 알파인 이미지 개발자들이 피하고 싶었던 것입니다.최근 도커 버전(1.10+)에서는 CMD가 더 이상 계층을 차지하지 않으므로 계층이 에 추가되었습니다.alpine이미지들.따라서 CMD를 재정의하지 않는 한 최근 Alpine 이미지는/bin/sh.

자세한 내용은 Glider Labs의 공식 Alpine Docker 파일에 대한 다음 커밋을 참조하십시오.
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b

컨테이너가 이미 실행 중인 경우:

docker exec -it container_id_or_name ash

언급URL : https://stackoverflow.com/questions/35689628/starting-a-shell-in-the-docker-alpine-container

반응형