Docker 개념 알아보기 : docker , docker hub, docker image
도커의 기반 - 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
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