최근 it 개발자 시장에서 요구하는게 무엇이 있는지 확인해보니 공통적으로 Docker와 Cloud를 활용해봤는지 물어봐서 GKE를 이용해서 웹 배포를 해보자 결심했습니다.
그래서 첫 시간인 오늘 Docker를 설치하고 로컬에서 활용하는 법을 익혔습니다!!
도커가 뭘까?를 정확히 정의하고 가야합니다.
도커는 리눅스 컨테이너 기반의 오픈소스 가상화 플랫폼입니다.
사실 이 말은 여전히 입에 안 붙어서 각 단어를 정확히 다 알고 가야할거 같습니다...
도커의 핵심은 바로 컨테이너인데요
컨테이너는 OS상에 논리적인 영역을 구축하고 어플리케이션이 작동하는데 필요한 요소들만 모아 별도의 서버처럼 작동시킨 것!
필요 요소만 구성(커널의 일부분)이라 오버헤드가 적습니다
만약 운영체제가 저처럼 mac이거나 혹은 window라면 가상머신을 깔고 그 위에 linux OS가 설치되고 Docker가 그 OS에서 운영됩니다!!
미리 똑똑한 개발자(?)분들이 만들어 놓은 도커 이미지를 다운 받을 수 있는 사이트 입니다.
이때 docker hub에서 image를 다운 받는 것 -> pull
이 docker image를 container로 변환 -> run
docker pull httpd -> apache2서버를 도커허브에서 다운
docker images -> 현재 내 로컬에 도커 이미지 확인
docker run --name ws2 httpd -> ws2라는 이름의 container를 만든다
docker ps -> 가동중인 container보여줌
docker start ws2 -> 컨테이너 실행
docker logs ws2 -> 도커 현재 로그 확인
docker stop ws2 -> 컨테이너 멈춤
docker rm ws2 -> 컨테이너 삭제
위에서 작성한 컨테이너의 경우 http://example.com:80/index.html로 접근하면 됩니다.
웹사이트에서 8080으로 들어온다면 8080에 맞는 컨테이너 포트를 하나 지정해줘야 그 컨테이너로 들어갑니다!!
docker run -p 8080:80 httpd --name ws3
# 웹은8080, 도커는80포트를 설정함 그리고 이름은 ws3
# 즉 ws3 컨테이너는 로컬에서 8080으로 들어오면 해당 80포트를 보여줌!
이건 좋지 못하지만 nginx 설정을 나중에 좀 변경해야할 수도 있어서 알아놓으면 좋을거 같아 작성했습니다
docker exec -it ws3 /bin/sh -> 해당 docker컨테이너 내부 쉘로 들어감!
apt update
apt install vim
vim /usr/local/apache2/htdocs/httpd/index.html
여기에 내용적고 빠져나오기!!
docker restart ws3 -> 재시작
아마 이 방식을 많이 사용할텐데 vsc에서 작성한 파일을 docker컨테이너에 적용시키는 방법입니다.
docker run -p 8888:80 -v ~/Desktop/web/docker-ex/:/usr/local/apache2/htdocs/httpd