Server/Docker & Kubernetes

Docker 개념 알아보기 : docker , docker hub, docker image

TerianP 2022. 9. 7.
728x90

도커의 기반 - Linux Container

  • 리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술이다.
  • 하드웨어 자체를 가상화하는 가상 머신과 달리 커널을 공유하는 방식이기 때문에 실행속도가 더 빠르고, 성능 상 손실이 거의 없다는 장점이 있다.
  • 그럼에도 리눅스의 기능인 chroot, namespace, cgroup 를 사용하기 때문에 격리된 환경에서 구동되기 때문에 호스트 머신에게는 프로세스로 인식되지만 각 컨테이너의 관점에서는 마치 독립적인 환경을 가진 가상 머신처럼 보이게 된다.

 

Docker 란?

- 도커 - docker - 란 Linux Container 에 여러 기능을 추가함으로써 Application 을 좀 더 쉽게 사용할 수 있게 만들어진 오픈소스 프로젝트이다.

 

Docker Image & Docker File

Docker Image

  • Docker Image 란 컨테이너를 실행 할 수 있는 실행파일, 설정 값 등을 가지고 있는 것이라고 생각하면 된다. 도커 이미지 안에 컨테이너를 담고 실행하면 안에 있는 프로세스들이 동작하게 된다.

 

Docker File

Docker File 란 Docker Image 를 만들기 위한 설정 파일이다. 여러가지 명령어를 토대로 Docker File을 작성하면 Docker File 에 설정한 내용대로 Docker Image 를 만들 수 있다.

  • 한마디로 도커 설정 & 구성 파일

 

Docker Hub & Docker Registry

DockerHub

  • 도커에는 gitHub 처럼 Docker Hub 가 존재재한다. Docker Hub 는 도커의 이미지를 저장하고 관리해준다. 이곳에서 도커 이미지를 공유하고 pull 받아서 컨테이너에 적용해서 사용할 수 있다 —> 마치 gitHub 에서 다른 사람들이 올린 코드를 클론 받아서 사용할 수 있는 것처럼

Docker Registry

  • github 의 repository 를 생각하면 된다. private 와 public 으로 나눌 수 있고, private 의 경우에는 개인만 접근 가능하며, public 은 모든 사람이 접근해서 docker image 를 다운로드해서 사용가능하다.

 

Docker Image Pull 

  • 도커 허브에서 pull 받기 위한 url은 위 사진과 같다. Default 처럼 따로 url 을 작성하지 않으면 DockerHub 에서 image 를 pull 받게 되고, url 을 적어둔다면 사설 저장소에서 이미지를 받을 수 있다.

 

결론 : 결국 Docker 왜 사용해?

Application 의 개발과 배포가 편해진다.

  • 독립된 개발 환경 보장 : 컨테이너는 격리된 공간임으로 그 자체에 특별한 권한을 주지 않는 한 내부에서 무엇을 하든 Host OS 에는 영향을 끼치지 않는다 => 보안에 좋음
  • 개발/운영 환경의 통합 : 컨테이너에서 내부 작업을 배포하기 위해서는 컨테이너를 docker image 라는 하나의 패키지로 만들어 운영 서버에 전달하기만 하면 된다. 이를 통해서 서비스를 개발했을 때의 환경을 다른 서버에서도 똑같이 복제할 수 있기 때문에 각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요가 없다 => 윈도우 IDE 에서 작업 후 docker image 로 만들어서 hub 에 올린후 서버에서는 해당 image 만 다운로드 받아서 실행하면 끝!
  • 배포 신속성 및 H/W 효율 : 커널을 포함하고 있지 않기 때문에 image 의 크기가 비교적 작다. 따라서 어플리케이션 배포 속도가 매우 빨라지며, H/W 용량을 적게 차지한다.

 

여러 Application의 독립성과 확장성이 높아진다.

  • 웹 서비스를 DB Container 와 웹 서버 Container 로 분리하면서 독립적으로 운영되기 때문에 유지 보수가 용이해진다.
  • 또한 확장에서도 큰 이득을 얻을 수 있는데 웹 서비스에 부하가 발생할 경우 전체 구조에서 웹 서버 Container 만을 동적으로 늘려 부하를 분산시킬 수 있다 → Load Balancing

+알아두면 좋은 docker 명령어

  • 옵션은 너무 많아서 빼두었습니다ㅠㅠ
명령어 기능
docker rm [컨테이너ID] 컨테이너 삭제
docker rmi [이미지ID] 이미지 삭제
docker stop $(docker ps -a -q) 모든 컨테이너 정지
docker rm $(docker ps -a -q) 모든 컨테이너 삭제
docker stop [컨테이너ID] 컨테이너 중지
docker rmi $(docker images -q) 모든 이미지 삭제
docker rm $(docker ps --filter 'status=exited' -a -q) exit 상태의 모든 컨테이너 삭제
docker logs [컨테이너id] 컨테이너 로그 보기
docker run 도커 실행
docker build 도커 빌드
docker login 도커 로그인
docker push [이미지명]:[tag명] docker Registry 에 push
docker pull [Registry명] docker Registry 에서 docker image 가져오기

 

- Reference

https://velog.io/@iuliet716/Docker의-역할과-장점

 

Docker의 역할과 장점

Docker 기초 개념과 사용하는 목적을 알아봅니다.

velog.io

https://khj93.tistory.com/entry/Docker-Docker-개념

 

[Docker] Docker의 개념 및 핵심 설명

  Docker란 Go언어로 작성된 리눅스 컨테이너 기반으로하는 오픈소스 가상화 플랫폼이다. 현재 Docker 0.9버전 부터는 직접 개발한 libcontainer 컨테이너를 사용하고 있다.  가상화를 사용하는 이유

khj93.tistory.com

https://www.44bits.io/ko/keyword/linux-container

 

컨테이너란? 리눅스의 프로세스 격리 기능

리눅스 컨테이너는 운영체제 수준의 가상화 기술로 리눅스 커널을 공유하면서 프로세스를 격리된 환경에서 실행하는 기술을 의미합니다. 하드웨어를 가상화하는 가상 머신과 달리 커널을 공유

www.44bits.io

https://mycup.tistory.com/262

 

docker 기본 명령어 및 설명

1. Docer 기본 명령어 및 설명     1.1 Docker 실행(중지/재시작) sudo service docker start(stop/restart) - centos 6 sudo systemctl start(stop/restart) docker - centos 7     1.2. docker..

mycup.tistory.com

 

댓글