Bash
🐣 shell : 리눅스에 명령을 전달해 주는 프로그램. 일반적으로 bash를 가장 많이 사용함.
도커 컨테이너 실행 시 bash를 실행하려면 별도로 /bin/bash
인자를 전달해야 한다.
/bin/bash
인자는 2가지 커맨드와 함께 사용할 수 있다.
1) docker run
- docker run과
/bin/bash
인자를 사용하는 경우, 컨테이너에 들어있는 SW(e.g. Apache) 대신 bash가 실행되기 때문에 bash 조작 후 docker start로 컨테이너를 재시작해야 SW가 실행됨 - 실행 중인 컨테이너에는 사용 불가
docker run (옵션) 이미지_이름 /bin/bash
[실습 - Apache 컨테이너]
1️⃣ docker run 커맨드를 이용해서 Apache 컨테이너 생성과 함께 bash 실행시키기
docker run --name apa000ex23 -it -p 8089:80 httpd /bin/bash
-it
: 컨테이너에 터미널(키보드)을 연결함 interactive & 특수 키를 사용 가능하도록 함 tty/bin/bash
: bash를 실행하는 인자
Hello World를 한 번 출력해보고, exit
명령어를 통해 컨테이너에서 나왔다.
2️⃣ docker start 커맨드로 컨테이너 재시작하기
컨테이너에서 나온 후 docker ps -a
명령어로 전체 컨테이너 목록을 보면 Apache 컨테이너가 실행 중이 아닌 것을 확인할 수 잇다.
docker start
로 컨테이너를 재시작해주고 나서야 컨테이너가 실행된다.
2) docker exec
- 실행 중인 컨테이너 속에서 프로그램 실행하는 커맨드
- bash 없이도 이 커맨드로 어느 정도 명령 전달은 가능
docker exec (옵션) 컨테이너_이름 /bin/bash
1️⃣ docker run 커맨드를 이용해서 Apache 컨테이너 생성 (bash X)
2️⃣ docker exec 커맨드로 실행중인 컨테이너에서 bash 실행
docker exec -it apa000 /bin/bash
명령어 실행 시 바로 bash가 실행된다.
마찬가지로 Hello World를 한 번 출력해보고, exit
명령어를 통해 컨테이너에서 나왔다.
그 후 바로 컨테이너 목록을 출력해보면 해당 컨테이너가 여전히 계속 실행중임을 확인할 수 있다.
docker 명령어 vs bash 명령어
컨테이너 내부에서는 bash 명령어, 컨테이너 외부인 도커 엔진에서는 docker 명령어를 사용한다.
컨테이너 내부에서 사용하는 명령어는 컨테이너에 들어있는 '리눅스 주변 부분'에 따라 달라진다고 한다.
리눅스는 레드햇 계열(레드햇, CentOS 등) / 데비안(데비안, 우분투, 페도라 등) / 알파인 등으로 분류되는데 이 계열이 다르면 명령의 스타일이 달라지는 것이다.
도커에서는 공식적으로 "특별한 이유가 없다면 데비안 계열을 기반으로 하는 것이 좋다"고 해서 대부분의 컨테이너는 데비안 계열이라고 한다.
참고 자료
📓 그림과 실습으로 배우는 도커 & 쿠버네티스
그림과 실습으로 배우는 도커 & 쿠버네티스: 개념과 작동 원리가 쏙쏙 이해되는 완벽 입문서
컨테이너나 도커를 도통 이해하기 어려운 분들을 위한 본격 도커 입문서! 이 책은 컨테이너 기술이 어렵게 느껴지는 엔지니어나 백엔드 기술에 자신이 없는 분들을 위한 도커 입문서입니다. 자
wikibook.co.kr