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에 들어간 것을 확인할 수 있다.
'공부-프레임워크, 개발도구 > Docker' 카테고리의 다른 글
Dockerfile docker-compose.yml (0) | 2022.08.14 |
---|---|
도커입문 간단한 명령어 및 초기설정 (0) | 2022.08.10 |
댓글