4. Docker

2023. 12. 28. 12:47NAVER AI Tech/Computer Science

실제로 개발은 Window에서, 서버는 Linux에서 작동하는 경우가 많다.

- 이때 OS가 다르면 환경설정이 다른 문제가 발생함.

- 같은 OS를 사용한다고 하더라도 개발때와 production 서버의 permission이 다른 경우가 많아 환경 변수가 꼬이기도 함

 

소프트웨어 가상화 : 특정 소프트웨어 환경을 만들고, Local과 production서버 모두 그대로 활용하는 것.

- 개발(Local)과 운영(Production) 서버의 환경 불일치가 해소

- 어느 환경에서나 동일한 환경으로 프로그램을 실행할 수 있음

- 개발 외에 Research도 동일한 환경을 사용할 수 있음

 

Docker 등장전에는 VM(Virtual Machine)을 주로 사용했었음.

Virtual Machine

 

But, Host OS위에 Guest OS를 실행시키는 점에서 굉장히 '무겁다'라고 표현함.

- container 개념이 등장하면서 가상화를 '경량화'된 프로세스의 개념으로 만든 기술이 등장.

Container 등장 전 후 차이

 

 

Docker : 다른 사람이 만든 소프트웨어를 가져와서 바로 사용할 수 있음

1. Docker image

    - 일종의 '템플릿' (read only)

    - 원격 저장소 Container Registry에 저장된다 : dockerhub, GCR, ECR 등이 있음.

2. Docker container

    - docker image를 활용해 실행된 인스턴스 (write 가능)

 

** 다른 사람이 만든 소프트웨어 : Docker image (OS와 환경변수를 포함한 실행환경)

    - Linux, Window, Mac등 환경에 상관없이 어디에서나 동일하게 실행할 수 있음

 

1. 다른사람이 만든 Docker Image를 그대로 가져와서 container를 생성하여 사용할 수 있다.

2. Docker Image를 빌드하여 생성하고 container를 생성하여 사용할 수 있다.

    - dockerfile을 만들어야함 : 환경설정에 대한 내용이 들어있는 readme 파일이라고 볼 수 있음.

    - docker build -t image_name:tag dockerfile_path : dockerfile을 참고하여 docker image생성 명령어

Docker Command

- docker pull image_name:tag 필요한 이미지 다운

- docker images 다운받은 이미지 목록 확인

- docker run image_name:tag 이미지를 기반으로 컨테이너 생성

- docker ps : 실행중인 컨테이너 목록 확인

- docker exec -it container_name /bin/bash : 컨테이너에 진입

- docker stop container_name : 실행중인 컨테이너 중지

- docker rm cotainer_name : 중지된 컨테이너 삭제

- docker run에서 -v옵션 : docker의 container와 host의 지정한 경로가 공유됨(=컨테이너를 삭제해도 파일유지)

 

 

'NAVER AI Tech > Computer Science' 카테고리의 다른 글

7. MLOps  (0) 2023.12.28
6. Debugging  (0) 2023.12.28
3. 리눅스(Linux)  (1) 2023.12.27
2. 라이브러리 버전 관리  (0) 2023.12.27
1. Software Engineering  (0) 2023.12.27