IT

Docker Alpine 컨테이너에서 쉘 시작

lottoking 2020. 7. 10. 07:44
반응형

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

그러나 이는 알파인 도커 이미지에 대해 이렇게 결과가 나타납니다.

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

Alpine 기본 컨테이너에서 대화식 쉘을 시작하는 명령은 무엇입니까?


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

위에서 사용하는 옵션 :

  • /bin/ashBusyBox에서 제공하는 Ash ( Almquist Shell )
  • --rm용기가 나올 때 용기를 자동으로 제거합니다 ( docker run --help)
  • -i 대화식 모드 (연결되어 있지 않아도 STDIN을 계속해서)
  • -t 의사 TTY 할당

일반적으로, 이미지를 알프스 리눅스 포함하지 않는 bash대신 사용할 수있는, /bin/ash, /bin/sh, ash또는 단지 sh.

/ 빈 / 재

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

/ 빈 / 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  

alpineDockerfiles 이미지는 이제 컨테이너가 시작될 때 선택할 수 있기 때문에 지정 하는 명령이 포함 되어 있기 때문 입니다.CMDCMD ["/bin/sh"]

이전 Alpine 이미지 버전 (2017 이전)에서는 Docker가 CMD에 대한 추가 레이어를 추가하여 이미지 크기가 증가하므로 CMD 생성이 사용되지 않습니다. 이것은 알파인 이미지 개발자가 피하고 싶었던 것입니다. 최근 도커 버전 (1.10+)에서 CMD 더 이상 레이어는 차지하지 않은 alpine이미지 에 추가되었습니다 . 따라서 CMD를 재정의하지 않고 최신 알파인 이미지가 부팅 /bin/sh됩니다.

: 참고로, 다음은 글라이더 연구소에 의해 공식 알파인 Dockerfiles 저지 참조
https://github.com/gliderlabs/docker-alpine/commit/ddc19dd95ceb3584ced58be0b8d7e9169d04c7a3#diff-db3dfdee92c17cf53a96578d4900cb5b

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

반응형