Docker란?

5tr1ker·2022년 10월 3일

Docker의 기초

Docker 란 다른 머신에서도 같은 환경을 구현할 수 있다. 이러한 특징때문에 서버와 클라이언트의
OS가 다르거나 버전이 달라 발생하는 문제점을 해결할 수 있다.
docker를 window에 설치하고 서버에 설치를 한다. 그리고 dockerFile을 만들고
구현하고 싶은 환경을 입력하라 ( 우분트 , 파이썬 , 깃 , node환경 등등.. )
이 파일을 서버와 클라이언트에 주면 docker은 설정한 환경과 같은 Virtual Container를 만든다.
그래서 로컬에서 서버로 코드를 Docker파일과 함께 업로드하면 잘 작동한다.

Docker 컨테이너는 독립적이다. 이 특징이 한개의 서버에 다른 컨테이너를 갖는다.
파이썬컨테이너 .. nodejs 컨테이너 .. java 컨테이너 등등 각각 다른 컨테이너들이 독립적으로 존재할
수 있다. 이로써 다양한 컨테이너를 관리할 수 있다.
즉 docker을 활용하면 매번 새로운 서비스를 만들때 마다 새로운 서버를 설정할 필요가 없다.
원할때마다 컨테이너 환경을 만들어 추가하면 된다. ( 원하는 수마다 )
게다가 각기 분리 독립적으로 동작한다.

정리
1 . 원하는 개발 환경을 파일에 저장하면, docker는 이에 따라 해당 환경을 시뮬레이션 해준다.
2 . 이러한 환경들은 각각 독립적으로 존재하기 때문에 다양한 환경이든 모듈식으로 관리 가능하다.
ex ) 예를들어 파이썬 서버 , 자바 서버 , DB 서버를 각각 컨테이너에 넣으면 docker가 한 서버에서 관리

Docker과 VM의 차이

VM은 hypervisor을 이용해 각각의 machine을 만들 수 있다. 한 운영체제위에 Application을 각각
다른 운영체제에 운영하기 위해 machine에 OS를 포함한다면 , Container 는 운영체제를 포함하지
않고 컨테이너 엔진이 포함된 HOST OS를 공유합니다. 컨테이너가 구동되기 위해 Container Engine이
필요하고 이 엔진을 활용하기 위해 Docker를 사용합니다. Docker는 Host OS 에 접근해서 필요한 정보를
가져옵니다.

덕분에 Docker가 VM보다 가볍다.

Docker의 작동 원리

크게 3가지가 있습니다. 컨테이너를 만들고 , 배포하고 , 구동한다.

1 . 컨테이너 만들기
Dockerfile을 통해 만든다. ( 레시피와 비슷 )
어플리케이션을 구동시키기 위해 어떤 라이브러리가 필요한지 , 환경변수를 작성한다.
이에 이미지가 완성되고 이미지는 어플리케이션을 구동하기위해 코드 , 세팅 , dependence , 라이브러리
가 포함된다. 이에 불변의 상태로 보관된다.
이에 컨테이너는 이미지를 고립된 환경에서 어플리케이션을 실행시킬 수 있다. 컨테이너에서 동작하는
어플리케이션은 수정할 수 있다. 수정된 파일이 있어도 이미지에 영향이 가질 않는다.

2 . 배포하기
로컬머신에서 이미지를 만들어 GIT에 이미지를 push하고 서버에 이미지를 실행시킨다.
이에 이미지를 실행하기 위해 Docker와 같은 컨테이너 Engine이 필요하다.

이미지를 공유할 수 있는 registry는 public 과 private이 있다.
public : dockerHub , RED HAT , GITHUB Packages
private : aws , Google Cloud , Microsoft Azure
private은 이미지를 다운로드하지 못하게 한다.

로컬 , 서버에 Docker를 설치하고 클라이언트에 Dockerfile을 만들어 이미지를 만들고
Github에 올려 Server가 받아 실행할 수 있다.

출처 : https://www.youtube.com/watch?v=LXJhA3VWXFA
드림코딩 도커 한방에 정리 🐳 (모든 개발자들이 배워보고 싶어 하는 툴!) + 실습

profile
https://github.com/5tr1ker

0개의 댓글