Server

Docker란?

마닐라 2021. 9. 16. 13:53

도커는 vmware, virtualbox와 같은 가상 머신처럼 독립된 실행환경을 제공하면서도, 컴퓨터에 직접 애플리케이션을 설치한 것과 같이 빠르고, apt, npm, pip 처럼 명령어 한줄로 원하는 앱이 포함된 실행환경을 손쉽게 설치할 수 있는 환상적인 개발환경을 제공한다.

 

 

docker hub에서 image를 다운로드 받는 행위를 pull이라고 하고 

image를 실행시키는 행위를 run 이라 한다.

프로그램처럼 image도 여러개의 컨테이너를 가질 수 있다.

 

https://hub.docker.com/ 에 이미지를 다운받을 수 있고

아파치 웹서버는 httpd 라는 이름으로 존재한다.

아파치 웹서버 image를 pull 해서 container화 시킬거다.

 

docker pull httpd 라는 명령어로 이미지를 다운로드 받을 수 있다.

다운로드 확인 명령어는 docker images 를 사용하면 된다.

 

docker images 명령어 입력

위와 같이 httpd가 나와있다면 잘 다운로드 된거다.

 

컨테이너 실행 - docker run 컨테이너이름

컨테이너 삭제 - docker rm 

이미지 삭제 - docker rmi

 

 

웹서버가 컨테이너 안에 설치되는데 컨테이너가 설치된 운영체제를 Host라고 부른다.

Host와 Container를 연결해주는 작업이 필요하다.

로컬 포트 -> 컨테이너 포트 연결 

 

컨테이너 통신 과정

 

포트포워딩하여 웹서버 컨테이너 실행

위의 명령어를 입력하면 웹서버를 실행시키는데 로컬의 8081 포트로 접근을 하면 컨테이너의 웹서버 포트인 80번 포트로 포워딩하여 사용할 것임을 명시하는 것이 된다. 

 

접속했을 때 로그가 정상적으로 쌓임

 

그리고 해당 웹서버에 접근하여 CLI를 사용하고 싶을 때는 해당 명령어를 사용한다.

웹서버 CLI 환경으로 접근
해당 웹서버의 index.html 파일

 

호스트와 컨테이너의 파일시스템을 연동하여 사용할 수도 있다.

수정작업 -> 호스트 / 실행환경 -> 컨테이너로 설정을 할거다.

로컬과 웹서버 파일시스템 연동 명령어

버전관리/백업정책/코드편집의 장점이 있다.

 

 

그리고 commit 명령을 이용하면 내가 사용중인 컨테이너를 이미지로 만들 수 있다.

그렇게해서 나의 이미지로 컨테이너들을 만들 수 있고, docker hub와 같은 레지스트리로 push할 수도 있다.

 

 

docker의 전체적인 흐름도

 

수정한 컨테이너 commit 명령을 내리면 그 컨테이너가 새로운 이미지가 된다. 그 이미지를 기반으로 run을 하면 또 다른 컨테이너가 만들어진다. 또, 그렇게 만든 이미지를 push해서 docker hub에 올릴 수도 있다.

 

docker 사용예제

위와 같이 우분투 위에 항상 git이 필요하다고 가정하면 다운받은 이미지에 git을 추가한 컨테이너를 커밋하여 이미지를 만들 수 있다.