Containerization/Docker

[Docker] 도커 컨테이너 명령어 실행 (pwd, exec, -it, /bin/sh)

쉬지마 이굥진 2024. 5. 13. 15:23

이전 포스팅에선, 우리가 만든 컨테이너에 접속해서 그 안의 index.html 파일을 읽어 띄우는 작업을 해봤다.

 

[Docker] 도커 포트 포워딩하기 (웹서비스 사용하기)

이 글은 2024 05월 원티드 프리온보딩 BE 챌린지 프로그램 도커편 1회차 수업을 회고하며 정리한 글입니다.들어가기 전, 네트워크 관련 기본 용어들을 짚고 넘어가도록 하겠다.네트워크 기본 용어

developer-jinnie.tistory.com


 

이번 포스팅에선,

그 컨테이너 안으로 들어가서 -> index.html 파일을 편집해 커스텀해보는 작업을 해본다. 

도커 데스크탑으로 하는 방법과 커맨드라인으로 하는 방법 두 개 다 살펴볼 계획.

 

크게 1. 컨테이너 안으로 들어가기2. 들어가서 파일 수정하기' 로 나뉜다.


1. 일단 호스트 상태에서, 컨테이너 안으로 들어가 명령어로 조작할 준비를 해보자.

도커 데스크탑  ver

  • 데스크탑에서 'Open in terminal'을 클릭,  해당 컨테이너의 terminal로 들어가준다.

 

터미널이 열리면 !

  • pwd 입력

      - 주의) host에서 pwd 명령을 한 것이 아니라, 해당 컨테이너 속으로 들어가서 pwd 명령을 한 것임을 숙지할 것!!

  • ls -al 입력

      - 컨테이너 안의 파일을 보여주는 명령어


커맨드 라인  ver

  • terminal 들어간 후 명령어 입력
  • pwd 입력 
docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

 

  • /bin/sh 추가 입력 : 컨테이너와 지속적으로 연결을 유지하면서, 계속 명령을 전달하고 싶을 때 추가 (sh: shell) 

 

  • shell의 역할: 사용자가 입력한 명령어를 shell 프로그램이 받아서, 운영체제에게 전달해주는 일종의 '창구'

 

허나, 명령어를 입력했는데도 아무것도 뜨지 않는다. 왜그럴까?

실행 하자 마자 shell 연결이 끊어졌기 때문이다.

 

 

그럼 shell 연결이 끊어지지 않고 계속 연결시키려면,  -i 와 t 라는 옵션을 줘야한다. 

  • -i, t 옵션 준 후, pwdls -al 명령을 실행

# 이 나오고 한 명령은, 이전과 같이 host에서 하는 명령이 아니라 'ws3' 컨테이너 안에서 하는 명령이다.

docker exec -it ws3 /bin/sh
docker exec -it ws3 /bin/bash

필요에 따라 shell 대신 bash shell을 써도 된다.

 

  • 연결을 끊고 나가기 : exit

exit 명령어를 입력해주면, 연결을 끊고 컨테이너 밖으로 나갈 수 있다.


2. 컨테이너 안으로 들어왔다면, 컨테이너의 index.html 파일을 수정해보자.

 

  • index.html 문서 위치 확인

먼저 httpd 안 index.html의 위치는 공식 매뉴얼 문서에서 확인할 수 있다. 

 

주소를 복사해준다.

 

  • 주소 붙여넣어주고 명령어 차례차례 실행 (nano 포함)

실행순서!

 

nano는 보통 컨테이너에 설치되어 있지 않기 때문에, 먼저 설치해줘야한다. (필자는 미리 설치 해 뒀다) (혹시 모르니 설치 코드를 남겨두겠다)

apt update
apt install nano

apt를 업데이트 해 주고,  nano 설치 후

nano index.html

 

index.html 수정 상태로 진입하는 명령을 해주면!

수정 창이 떴다. 필자는 It works! 로 되있는 기존 문구를 Hello World! 로 바꿔 줬다.

 

  • 수정 사항 저장

Ctrl X + Y + 엔터!  

 

  • 시크릿창 새로고침해서 확인

성공 ㅎㅎ


References 
https://www.youtube.com/watch?v=P0ZFyB4iQd0&list=PLuHgQVnccGMDeMJsGq2O-55Ymtx0IdKWf&index=6