Docker 실습5: 컨테이너 내부 파일 수정(exec 명령어)

손지민·2024년 5월 17일

Docker

목록 보기
8/9

개요

지난 글에서는 httpd 이미지를 포트 매핑하여 브라우저에 index.html 파일을 띄우기까지 해보았다.

index.html 파일을 편집해서 웹 서버를 이용하는 나의 웹앱을 만들 수 있어야합니다.
그러기 위해서는 컨테이너 안에 들어가서 컨테이너를 수정할 수 있어야합니다.

이번 글에서는 생성한 컨테이너 안에 있는 파일을 수정하는 방법을 알아봅니다.

  • 목차
    • 방법1. Docker desktop 사용
    • 방법2. CLI 사용 (집중)
        1. 컨테이너 내부로 접속
        1. index.html 파일 수정하기

실습

방법1. Docker desktop 사용

  1. Open in terminal 클릭: 컨테이너에서 cli 열기
  2. pwd 명령어 입력: 여기에 입력한 명령어는 호스트에서 명령어가 아니라 컨테이너 내부에서 실행한 명령어입니다.
  3. ls -al 명령어: 2번과 마찬가지로 컨테이너 안에 있는 파일을 보여줍니다.

방법2. CLI 사용

1. 컨테이너 내부로 접속

명령어 모음

  1. docker exec ws3 pwd 명령어: 실행한 컨테이너 대상으로 명령어
  2. docker exec ws3 ls 명령어: 1과 마찬가지로 컨테이너 대상으로 실행된 명령어
  3. docker exec ws3 /bin/sh 명령어: shell 은 사용자가 입력한 명령어를 프로그램이 받아서 운영체제한테 전달해주는 창구 역할을 한다. 근데 위와 같이 명령을 하면 실행하자마자 연결이 끊어진다.
  4. docker exec -it w3 /bin/sh 명령어: -it 옵션을 줘서 연결을 유지 가능합니다.
  5. exit 명령어: 컨테이너 밖으로 나갑니다. 이후 내리는 명령은 호스트를 대상으로 실행됩니다.
  6. docker exec w3 -it /bin/bash: 요즘은 sh 쉘 말고 bash 쉘을 많이 사용합니다.

양식: docker exec[OPTIONS] CONTAINER COMMAND [ARG...] 명령어

  1. docker exec ws3 pwd 명령어: 실행한 컨테이너 대상으로 명령어
  2. docker exec ws3 ls 명령어: 1과 마찬가지로 컨테이너 대상으로 실행된 명령어

컨테이너와 지속적으로 연결을 유지하면서 계속 명령을 전달하고 싶을 때는 좀 다른 방법을 사용해야합니다.

  1. docker exec ws3 /bin/sh 명령어: shell 은 사용자가 입력한 명령어를 프로그램이 받아서 운영체제한테 전달해주는 창구 역할을 한다. 근데 위와 같이 명령을 하면 실행하자마자 연결이 끊어진다.
  2. docker exec -it w3 /bin/sh 명령어: -it 옵션을 줘서 연결을 유지 가능합니다. 그러면 그 후 내리는 pwd, ls -al 명령어는 컨테이너 대상으로 내려진 명령어입니다. (계속 docker exec w3~~ 하고 명령어 내릴 필요가 없습니다.)
    -i, --interactive, -t, --tty 옵션: 운영체제에 대한 이해가 필요하기 때문에 터미널과 그 컨테이너가 지속적으로 연걸할 때는 -it 옵션을 쓴다라고 알고 사용하면 됩니다.
  3. exit 명령어: 컨테이너 밖으로 나갑니다. 이후 내리는 명령은 호스트를 대상으로 실행됩니다.
  4. docker exec w3 -it /bin/bash: 요즘은 sh 쉘 말고 bash 쉘을 많이 사용합니다.

2. index.html 파일 수정하기

명령어 모음

  1. docker exec -it ws3 /bin/bash
    cd /usr/local/apache2/htdocs
    ls -al
  2. apt update : apt update
  3. apt install nano: nano 설치 - y/n 물어보면 y 입력
  4. nano index.html: 파일로 접근하여 텍스트를 Hello, Docker! 로 수정
  1. docker hub 의 httpd. 아파치 웹 서버의 메뉴얼 페이지로 가면 index.html 파일이 어디에 위치하는지 알 수 있다.
    경로: /usr/local/apache2/htdocs/
  2. 위치로 이동해서 index.html 확인
    docker exec -it ws3 /bin/bash
    cd /usr/local/apache2/htdocs
    ls -al
  3. 컨테이너는 무게가 작은게 장점이라 vim 이나 nano 같은걸 포함을 잘 안 시킨다. 따라서 apt(ubuntu 등)yum(CentOS 등) 사용하여 설치하면 된다.
  4. apt update : apt update
  5. apt install nano: nano 설치 - y/n 물어보면 y 입력
  6. nano index.html: 파일로 접근하여 텍스트를 Hello, Docker! 로 수정
  7. ctrl + x / y / 엔터 입력하여 저장
  8. http://localhost:8081/index.html 새로고침하면 텍스트 변경 완료

이제 생성한 컨테이너 안에 있는 파일을 수정할 수 있습니다!


출처

profile
Developer

0개의 댓글