컨테이너 기반의 오픈소스 가상화 플랫폼
요즘 너무 핫 하다.
사실 요즘도 아니다.
그래서 도커가 무엇일지 궁금했다.
내가 들었던 도커는 한번 환경을 컨테이너화 시켜놓으면 그 컨테이너를 통해 언제 어디서 어떤 환경이든 동일한 환경 구축이 가능하다는 점이 굉장히 신기해 보였다.
도커를 가장 먼저 검색할때 귀여운 고래 아이콘과 함께 가장 많이 볼 수 있는 그림이다.
가상 머신과 도커를비교하는 그림인데, 간단하게 생각하면 도커는 (가상 머신을 생성하고 구동하는 소프트웨어인) Hypervisor 와 GuestOS를 도커 엔진에서 구동할 수 있도록 하여 오버헤드를 줄여준다고 한다.
가상머신을 사용해본 사람들은 알것이다. 가상 머신은 자체 운영체제를 필요로 하며, 느리고 이동이 어렵고.. 등등 그냥 불편하다.
대학을 다닐때 사용해 본, 리눅스를 사용해보고 싶어서 설치했던 가상머신들은 한마디로 불편했다.
가상머신을 통해 OS가상화를 진행하면 더 높은 격리 레벨을 지원하여 보안적인 측면에서 유리하고 Host OS와의 완벽한 분리가 가능하다는 장점이 있을 수 있지만, 위에서 언급한것 처럼 무겁고 느리고 느리다.
그에 비해 도커의 컨테이너 가상화는 이식성이 뛰어나고, 성능이 향상되며 무엇보다 편하고 빠르고 빠르다.
가상화 기술 중 하나로, 기존 OS를 가상화 시키던 것과 달리 OS레벨의 가상화로 프로세스를 격리시켜 동작하는 방식
컨테이너를 실행할 수 있는 실행파일, 설정 값들을 가지고 있는 파일
https://hub.docker.com/
깃 허브 처럼, 다양한 사람들이 공개한 이미지를 pull 받을 수 있는 곳이다.
나만의 이미지를 만들기 위한 설계도라고 생각하면 쉽다. 이미지를 받기만 한다고 되는것이 아니라, 이를 커스텀하고 설정등을 진행해주기 위해 작성하는 파일이다.
docker run -it node
docker images
docker ps
docker exec -it (컨테이너명) bash
docker ps -a
docker stop $(docker ps -aq)
docker system prune -a
해당 컨테이너 실행 후 진행해야할 프로세스 및 설정들이 명령어로 설정 되어있는 것을 확인할 수 있음.
FROM // 어느 버전의 어느 이미지에서 적용될 이미지인가
RUN // 이미지를 생성하는 과정에서 실행할 명령어
WORKDIR // 명령어를 실행할 위치를 설정
CMD // RUN 명령어를 통해 이미지를 생성 하고, 이후 컨테이너가 실행될때 실행될 명령어
docker build -t frontend-img .
docker images
docker run --name frontend-con -v $(pwd):/home/node/app -p 8080:8080 frontend-img
성공적으로 컨테이너 실행 후 http://localhost:8080 접속시 8080번 포트로 컨테이너가 실행되고 있는 것을 확인할 수 있다.
RUN //
ENV // 환경변수 설정
COPY // 컨테이너 생성시 스트립트를 실행하는 폴더로 미리 작성된 스크립트들을 이동
스크립트 파일들은 컨테이너 초기화 과정에서 필요하기에, COPY를 통해 미리 넣어두는 것이 올바른 방법
docker build -t database-img .
docker run --name database-con -p 3306:3306 database-img
docker stop $(docker ps -aq)
docker rm $(docker ps -aq)
docker run --name database-con -p 3306:3306 -d database-img
docker logs -f database-con
도커 컴포즈 버전 확인 사이트
여러 DockerFile을 연결하고 서비스를 간편하게 실행하기 위한 파일
각종 DockerFile로 컨테이너를 실행하기 위한 설정을 하나의 파일에 작성해두고, 해당 파일로 서비스를 실행 할 수 있다.
docker-compose up
docker-compose up -d