도커의 원리와 컨테이너 기본 설정, 컨테이너 외부 노출
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에 들어간 것을 확인할 수 있다.