docker - 컨테이너 수정

작성일자:

웹 페이지를 배포하기 위해 docker을 사용해 볼 것이다.

image

포트 포워딩

도커를 이용하면 웹 서버가 컨테이너 내부에 설치된다.
이 컨테이너가 설치된 OS를 호스트라고 칭하고 컨테이너와 호스트 각각 독립적인 실행환경을 갖고 있기 때문에, 둘 다 포트를 갖는다.
이를 연결해주는 과정을 포트 포워딩이라고 한다.

도커 데스크탑에서 포트 포워딩

image
이 이미지는 도커 데스크탑에서 새 컨테이너를 만드는 탭이다.
여기서 ports 탭을 보면, 이 컨테이너의 호스트 포트를 무엇으로 지정할지 설정할 수 있다.
Host port 뒤편에 :80/tcp라고 되어있는것을 확인할 수 있는데, 이는 이미지의 제작자가 임의로 설정해둔 고정값이다.
지금은 httpd 이미지를 사용하고 있으므로, httpd 이미지는 컨테이너 포트로 80을 사용하는것을 알 수 있다.

커맨드라인에서 포트 포워딩

run 명령어의 옵션으로 -p (호스트포트):(컨테이너포트) 를 사용해준다.

docker run --name ws3 -p 8081:80 httpd

image
포트 설정이 정상적으로 되어있음을 확인할 수 있다.

확인해보기

크롬에 다음 주소를 입력해본다. http://localhost:8080/index.html image
잘 실행되는 모습을 볼 수 있다.

image 도커 데스크탑에서 확인하니 로그도 정상적으로 갱신되는 모습을 확인할 수 있다.

컨테이너 내부에 접근하기

docker exec [옵션] [컨테이너 이름] [실행시킬 명령]

docker exec ws3 pwd
docker exec ws3 ls

image
exec 명령어는 해당 이미지에 접근하는 명령어로, exec ws3 뒤에 입력된 pwd와 ls 명령어는 호스트에서 실행된 것이 아닌, 컨테이너 내부에서 실행된 명령어이다.
참고) pwd 명령어는 “print working directory”의 준말로, 현재 작업 중인 디렉터리의 이름을 확인하는데 쓰인다.
ls 명령어는 컨테이너 파일 시스템의 최상위 디렉토리에 있는 디렉토리 및 파일 목록을 확인할때 쓰인다.

컨테이너와 지속적으로 연결을 유지하며 사용하기 위해서는 /bin/ 경로에 있는 sh, 본쉘이라는 프로그램을 실행시켜줘야 한다.
그러나, 그냥 실행하면 바로 연결이 끊겨버리므로, 옵션에 -it를 추가해준다.

docker exec -it ws3 /bin/sh

혹은 sh대신 bash를 사용해도 된다.

docker exec -it ws3 /bin/bash

image
터미널 앞 문자가 #으로 바뀌며, docker exec ws3를 입력하지 않고 pwd를 입력해도 정상적으로 작동하는 모습을 확인할 수 있다.

다시 호스트로 돌아오려면 exit를 입력해주면 된다.

컨테이너 수정하기

웹 사이트에 단순히 It works!만 뜬다면 아무런 쓸모가 없다.
이를 적절하게 수정해 볼 것이다. https://hub.docker.com/_/httpd

기본적으로 메뉴얼에 index.html파일이 어디에 위치해 있는지 같은 기본적인 정보가 적혀있다.
image 한번 접속해 볼 것이다.

docker exec -it ws3 /bin /bash 
cd /usr/local/apache2/htdocs/
ls -al

image

인덱스.html이 어디에 있는지 확인했다.
이제, 과제로 프론트엔드만 클론코딩했던 html파일로 덮어씌워 보겠다. docker cp <복사할 파일="" 경로=""> <컨테이너 이름="">:<컨테이너 내부="" 파일="" 경로="">

docker cp C:\index.html ws3:/usr/local/apache2/htdocs/

image 이제, ws3의 포트였던 8081로 접속해보면 image 정상적으로 변경되어 있음을 확인할 수 있다.


작성 중인 내용으로, 정리되어있지 않습니다.


위 내용은 공부한 내용을 바탕으로 정리한 결과이며, 오류가 존재할 수 있습니다.

카테고리:

업데이트:

댓글남기기