본문 바로가기
공부-프레임워크, 개발도구/Docker

도커의 원리와 컨테이너 기본 설정, 컨테이너 외부 노출

by 령과 2022. 8. 10.

출저: 생활코딩- 도커

docker는 컨테이너를 생성하고 기존 주체인 host컴퓨터의 포트와 컨테이너가 가진 포트와 연결하는 역할을 한다.

이렇게 하여 host 80포트에서 들어온 신호를 컨테이너에게 전달하여 컨테이너를 운영할 수 있고,

이것을 "포트 포워딩" 이라고 한다.

컨테이너는 가상 IP주소를 할당 받기 때문에 외부에서 컨테이너 접근은 불가능하다.포트 포워딩을 통해 외부와의 연결통로를 뚫어야 한다.

docker run -p 8080:80 httpd

해당 명령어는 호스트의 8080포트와 도커 컨테이너의 80포트를 연결한 컨테이너를 실행한다는 뜻이다.

포트연결 여러개를 하기 위해서 -p를 여러번 사용해서 설정할 수 있다.

docker run -it -p 3306:3306 -p 192.168.0.005:8080:80 httpd

특정 아이피의 포트 접근을 설정할 수도 있다.

리눅스에서 도커에 로그인한 다음 httpd이미지를 사용해서 위 명령어를 수행하였다.

httpd이미지를 사용해서 컨테이너를 만들고 단순히 한 명령어만 쳤음에도 웹사이트역할의 일부를 하고 있다.컨테이너는 격리된 하나의 시스템이다. 자신만의 시스템을 가지고 있어서 pwd같은 명령어를 사용하면 컨테이너 내부의 파일들을 확인할 수 있다.

docker exec ws1 pwd

ws1이름의 컨테이너에서 pwd 명령어를 수행한다는 명령어이다.

하지만 단발성 명령어이다. pwd 수행 후 바로 연결이 끝나 다음작업을 이어서 하진 않는다.

계속해서 명령어를 보내고 싶다면

docker exec -it ws1 pwd

-it를 붙이면 pwd 뒤로 컨테이너와 연결이 끊기지 않은 채 계쏙해서 명령어를 치면 먹힌다.

도중에 나오려고 하면 exit 명령어를 사용해서 나올 수 있다.

컨테이너에서 다음과 같은 명령어를 통해 컨테이너에 아파치를 설치, 실행하고 로컬로 아파치에 접근해보자.

docker run -it -p 80:80 ubuntu
apt-get update
apt-get install apache2 -y
service apache2 start

##이후 http://localhost:80 수행해보기

docker run -p 8080:80 -v C:\Users\wjdgm\Desktop\Docker\docker_http:/usr/local/apache2/htdocs/ httpd

-v 옵션으로 호스트폴더:컨테이너폴더 를 명시하면 호스트폴더에서 작업한게 컨테이너에서 적용된다. 

호스트에 명시한 폴더 위치에서 good.txt를 생성하였고 컨테이너에 htdocs위치에 good.txt에 들어간 것을 확인할 수 있다.

 

댓글