킹의 개발일지
도커 입문(6) - 명령어 실행 본문
이전 포스팅에서 httpd 이미지를 포트포워딩을 통해 run 해서 index.html 페이지를 띄우는것까지 했었다.
그렇다면 index.html 파일을 수정하고 싶을 땐 어떻게 해야할까?
index.html 파일을 수정하기 위해서는 컨테이너 안으로 들어가서 수정할 수 있어야 한다.
레퍼런스에서 보면 exec 명령어를 찾아 볼 수 있다. exec 는 컨테이너에 명령을 전달해주는데 사용한다.
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]
전에 만들어둔 컨테이너에 명령을 전달해보자.

컨테이너에 pwd와 ls 명령을 전달했을 때 결과이다. 그때마다 exec ws1 ... 와 같이 써야할 것이다.
때문에 우리가 컨테이너와 지속적으로 연결을 유지하면서 계속 명령을 전달하고 싶을 때는 조금 다른 방법을 써야한다.
docker exec ws1 /bin/sh
해당 명령어를 사용하면 기본적으로 본쉘을 실행한다. 쉘은 사용자가 입력한 명령어를 쉘이 받아 운영체제에 전달하는 창구같은 존재라고 생각하면 된다.
위 명령어를 실행하면, 실행하자마자 쉘이 끝나버리는데, 이는 쉘이 지속적으로 연결되지 않았기 때문이다.

그렇다면 지속적으로 쉘을 연결하고자 할 땐 어떻게 해야할까
도커 레퍼런스에서 exec 명령어의 옵션들을 보다보면 -i와 -t 옵션이 있는걸 볼 수 있다.
-i 옵션은 --interactive로 지속적으로 표준입력을 유지하고 싶을 때 붙혀준다.
그리고 -t 는 --tty로 텍스트기반의 터미널을 애뮬레이트 해준다.
이 두 옵션을 주고 다시 명령어를 실행해주면 포인터가 사라지지 않고 지속적으로 유지되고 있는것을 볼 수 있다.
docker exec -it ws1 /bin/sh

여기서 이루어지는 명령들은 컨테이너에 대해서 적용된다. 쉘을 나가고 싶다면 exit를 입력하면 된다. 그때부터는 호스트를 대상으로 명령이 이루어진다.
참고로 본쉘은 기능이 많이 부족해 불편한 경우가 많다. 그래서 배쉬쉘을 사용하고 싶다면 아래 명령어를 입력해주면 된다.
docker exec -it ws1 /bin/bash
index.html 변경하기
index.html 파일은 컨테이너의 /usr/local/apach2/htdocs 경로에 존재하는데

해당경로로 cd명령어를 통해서 가면 index.html 파일이 존재한다! 이제 이 파일을 수정해야하는데, nano나 vim같은 에디터로 변경해주어야한다.
그래서 nano index.html을 해주면 실행되지 않을 것인데, 컨테이너는 기본적으로 용량이 작은것이 덕목이다!
에디터나 다른 편의 도구까지 미리 포함하고 있으면 용량커짐으로 기본적으로 컨테이너에 포함되있지 않다.
그렇다면 nano를 다운받아보자!
기본적으로 apt나 욤 같은것을 이용해서 다운받아야 한다. 이번엔 apt를 이용해서 받아보자
먼저 apt를 최신으로 갱신해주고 nano를 install해주자!
apt update
apt install nano
이후 nano를 이용해서 인덱스 파일을 수정해주면 된다!
마지막으로 도커 컨테이너를 실행해주고 8080포트로 검색해보면 다음과 같이 변경된 것을 볼 수 있다!

참고자료
https://opentutorials.org/course/4781
생활코딩 Docker 입구 수업 - 생활코딩
수업소개 vmware, virtualbox와 같은 가상머신처럼 독립된 실행환경을 제공하면서도, 성능의 저하가 훨씬 적은 도커에 대해서 알려드립니다. 수업대상 일하는 조직에서 도커를 쓰고 있는 분 개발환
opentutorials.org
'docker' 카테고리의 다른 글
| 도커 입문(7) - 호스트와 컨테이너의 파일시스템 연결 (0) | 2022.07.18 |
|---|---|
| 도커 입문(5) - 네트워크 (0) | 2022.07.18 |
| 도커 입문(4) - 컨테이너 run (0) | 2022.07.18 |
| 도커 입문(3) - 이미지 pull (0) | 2022.07.18 |
| 도커 입문(2) - 도커 설치 (0) | 2022.07.18 |