반응형
Docker란?
- 쉽게 생각하자면 밀키트라고 생각할 수 있음.
- 도커 이전에는 VM(Virtual Machine)을 사용함
- 다만 기존 OS 위에
- 새로운 OS를 추가로 설치했기에 무거워지는 단점이 있었음
- 그래서 도커가 사용됨
- 도커란?
- OS, 개발용 SDK, 라이브러리, 필요한 프로그램, 코드가 담긴 밀키트이자, 해당 밀키트를 실행해주는 툴
- 리눅스 자체의 가벼운 가상화 기술이 있었는데, 이를 활용하면 컨테이너를 만들 수 있었음(가상 컴퓨터)
- 이것을 더욱 간편하게 사용할 수 있도록 하는 것이 도커.
- 컨테이너란?
- 이러한 도커(밀키트)를 실행하는 가상의 컴퓨터
- 단점
- 데이터를 영구적으로 보관, 관리할 때는 별로 (데이터 휘발성이 강하기에)
- 그래서 도커를 만들어서 서버로 보내면 배포를 할 수 있음.
- 이를 활용해서
- 기존에는 다양한 서버의 기능을 하나의 프로그램에 담았다면
- 지금은 여러 프로그램으로 구분해서 관리하는 MSA가 대세.
- 그리고 CI/CD가 너무 간단해짐.
- 다만 도커를 배우게 되면, 추후에 응용할 수 없기에 구현하는 방법에 대해 배울 예정.
설치
- Docker Desktop 설치
- 설치 시 아래 요소 함께 설치됨
- 기본 엔진
- compose
- CLI
- hub 연동 등
- 다만 원래 윈도는 도커를 사용할 수 없음
- 이유는 리눅스 OS 기반 기술이기에
- WSL2를 설치해서 윈도우에서 리눅스 OS 가상으로 구동해야 하지만
- Docker Desktop을 설치하면 사용할 수 있음
- 설치가 끝났다면 포인트 앤 클릭으로 간단하게 도커를 사용할 수 있음
- 다만 별도의 기능이 빠져있기에, 추후에 터미널을 활용하여 추가할 순 있지만
- 우선은 Docker Desktop으로 먼저 간단히 익히고 할 예정
- 가장 중요한 것은 Images이기에 먼저 사용해보기
- 우선 Images는 밀키트라고 생각하면 되고
- OS 부터 라이브러리 등 포함되어 있는 것
- 즉, 프로그램 실행에 필요한 모든 것이 포함되어 있는 것
- 그래서 Image만 만들어 두면, 다른 컴퓨터에서 별도의 셋팅 필요없이 사용이 편리
- 기존에 웹서버 소스코드를 실행하고자 배포 한다면
- AWS에서 가상 컴퓨터를 빌려서
- 코드를 옮기고 이것 저것 필요한 것 설치 후 실행해야 하기에 오래 걸림
- 하지만 도커를 사용한다면
- 현재 나의 OS, 환경 설정, 라이브러리, 소스 코드 등 image로 담아서
- 서버 컴퓨터에 보내고 실행하면, 같은 환경에서 사용할 수 있기에
- 협업 환경에서 완전히 동일한 환경에서 테스트 할 수 있음
- 우선 현재 만들어 둔 image가 없기에 Search 창에서 검색하여
- Docker hub에 전체공개된 이미지를 다운해서 사용해보기
- 우선 간단히 hello world를 다운 받아서
- 터미널에서 아래의 코드를 입력 후 현재 위치에 다운된 도커 확인해보기
docker image ls
- 이후 다운된 image를 실행하게 되면 Containers 탭으로 이동 후 실행됨
- 우선 Container란 image를 실행 중인 가상의 컴퓨터로
- 간단히 예시를 들자면, 밀키트(image)를 요리한 요리라고 볼 수 있다.
- 만약 터미널에서 실행하고 싶다면 아래와 같이 작성하면 됨
# docker run image이름:tag
docker run hello-world:latest
- 이제 좀 더 다이나믹한 서버를 실행해보고자
- dockercloud/hello world 를 설치 후 실행해 볼 텐데
- 여기서 option setting에서 port를 8080으로 입력 후 실행해보기
- 의미는 내컴퓨터의 8080포트로 들어가면
- 해당 컨테이너의 80번 포트로 보내달라는 의미
- 좀 더 자세한 내용은 다음에 할 예정
- 실행이 되었다면 웹 브라우저에 localhost:8080을 입력 후 접속한다면
- 실행이 되는 것을 확인할 수 있음 (싱기방기)
- 새롭게 정리
- 뭔가 이해가 확실히 안되어서 찾아보니
- 도커란
- 애플리케이션을 컨테이너라는 환경에서 실행할 수 있도록 관리하는 컨테이너 플랫폼.
- 즉, 도커는 컨테이너를 만들고, 실행하고, 관리하기 위한 도구와 생태계를 제공.
- 컨테이너
- 애플리케이션과 실행 환경(라이브러리, 종속성 등)을 독립적으로 패키징한 가벼운 가상화된 실행 환경
- 애플리케이션의 실행 환경을 격리한 것이며, 실제로는 호스트 OS의 커널을 공유.
- 따라서 전통적인 가상 머신(VM)처럼 완전한 별도의 OS가 실행되는 것이 아닌, 필요한 부분만 독립적으로 실행.
- 요약
- 도커는 컨테이너를 만들고 관리하는 도구.
- 컨테이너는 애플리케이션이 실행되는 가상화된 환경.
- 컨테이너는 가상 머신과 비슷해 보이지만, 훨씬 가볍고 빠름. 가상 머신은 완전한 OS를 포함하지만, 컨테이너는 애플리케이션 실행에 필요한 부분만 격리합니다.
# docker run image이름:tag
docker run hello-world:latest
'Docker&Container' 카테고리의 다른 글
Docker&Container - Network 1. nginx 만들기 (0) | 2024.12.14 |
---|---|
Docker&Container - Docker hub, push, pull (0) | 2024.11.30 |
Docker&Container - 성능을 위한 Dockerfile 작성법 (1) | 2024.11.29 |
Docker&Container - 컨테이너 다루기 (0) | 2024.11.29 |
Docker&Container - Dockerfile로 도커 이미지 만들기 (0) | 2024.11.29 |