Docker 기초

Human Being·2022년 4월 27일
0

Docker

목록 보기
1/8
post-thumbnail
post-custom-banner

손쉬운 환경 구축, docker

라즈베리파이에서 작동하는 소프트웨어를 개발할 때
처음부터 라즈베리파이에서 개발을 시작하는 것이 아니라
리눅스 기반 환경에서 어느정도 완성한 뒤
해당 기기로 프로그램을 옮기는 작업을 거치게 된다

하물며 클라이언트와 소통하다가 라즈베리파이 내에서도 여러 기기들 중
다른 타입의 기기로 변경하게 되었다면
했던 일을 또다시 반복해야하는 불상사가 발생할 수도 있다

이를 편하게 하기 위해
지금까지 구축한 환경이 어느 곳에서든 실행되길 바라는 기술은 매우 필요하다

이를 위해 도커를 사용한다
도커를 사용하게 되면
예를 들어, mac에서 리눅스 기반의 테스트를 해본 뒤 목표 장치에 배포하기 쉬워진다

위키백과를 인용해보자면...

도커는 '컨테이너'를 실행하는데 필요한 모든 것을 파일 시스템 안에 감싼다
그렇기에 실행 중인 환경에 관계 없이 언제나 동이할게 실행될 것을 보증한다

~~

리눅스 기반에서 해당 컨테이너가 실행하는 형태이기에 가상머신을 구성해야하는 부담이 덜어진다

가상머신(VM)? 도커?

VM은
내 컴퓨터의 OS의 자원을 가지고 가상화 기술(Hypervisor)을 이용해
내 컴퓨터에서 여러 개의 OS를 구동할 수 있게 한다
예로 VirtualBox, VMWare, Parallels 등이 있다

단점은 각 OS를
해당 컴퓨터에 직접 설치하는 식으로 가동되기에
GB 단위로 용량을 차지하며
이에 따른 메모리와 프로세싱 처리에 파워를 소비하며 비용이 높고
이식성이 좋지 못하다는 점이다

그에 반해 도커는
리눅스 컨테이너 기술을 이용하여
이식성도 높고 가볍게 운용할 수 있게 만들었다

리눅스 컨테이너 기술 (Linux Containers, LXC)은
리눅스 커널을 공유하면서, 프로세스를 격리된 환경에서 실행하는 기술이다

리눅스 커널이란
하드웨어의 주요 기능을 제어하는 것으로써
메모리 관리, 프로세스 관리, 장치 드라이버, 시스템 호출 및 보안 등을 수행한다

가상머신은 하드웨어를 가상화하지만
리눅스 컨테이너는 커널을 공유하는 방식이기에
실행 속도가 빠르고 성능 상의 손실을 줄일 수 있게 된 것

docker의 작동 방식

docker는 어떤 프로그램을 리눅스 기반에서 구동시키기 위한 과정을 기술해두어야 한다

예로
딥러닝 yolo 모델이라면
python3, torch, openCV 등을 미리 설치해야하고
웹 구축에
react, nodejs, mysql 설치 등을 해야한다든가

이런 설치 방법에 대한 내용을 Dockerfile에 작성해둔다
그저 Dockerfile 하나만 있으면 환경이 구축되니
환경구축에 대한 기록이자 메뉴얼로도 사용된다

FROM ubuntu:18.04
RUN apt update && pip install pygame
COPY . /app
WORKDIR app
CMD ["python3", "main.py"]

이를 build를 하면 하나의 환경이 zip파일 마냥 생기는데
이를 image라고 표현한다

zip 파일에 비유했다고 실제 물리적 파일이라고 이해하시면 안 되고
도커 내에서 해당 파일을 통해 어떤 환경이 구축되었음을 나타낸다고 보자

이를 직접적으로 실행하고 싶으면
image를 run하여 container를 생성해야 한다

Dockerfile을 빌드해서 바로 container가 생성되는 것이 아니라
image로 묶어 놓은 뒤 필요할 때 run해서 직접 다뤄볼 수 있게 하는 것

장점은 여러 방식을 테스트해볼 때
같은 image를 여러 번 run하여 여러 개의 container를 생성해볼 수 있다
그만큼 테스트, 새로운 기술 적용 등 다양한 시도를 해보기 좋다

docker hub

생성된 image는 내 컴퓨터에 저장되어 있다
이를 docker에서 운영하는 사이트에 올릴 수 있다
https://hub.docker.com/

그럼 다른 사람들이 내가 만든 환경을 편하게 가져다 쓸 수 있게 된다
나또한 다른 사람이 만든 것을 편하게 가져다 쓸 수 있다
docker hub 에 회원가입을 해야만 사이트를 통한 기능을 이용할 수 있다

위에서 간략히 보여주었던 Dockerfile의 맨 첫번째 줄에
FROM ubuntu는 아래 사진 속 image를 가져오는 것이다

설치

docker desktop을 아래 사이트를 통해 설치하고
docker hub에 회원가입했던 계정으로 로그인해두자

https://docs.docker.com/get-docker/

+) 도커를 켜두고 있으면 컴퓨터가 화끈화끈해지기 쉽상
다 쓰고 나면 docker desktop 종료하자

+) 혹시 도커를 돌리는데 성능이 부족하다 싶으면
도커가 내 컴퓨터의 자원을 얼마나 더 사용할 수 있을지 정해주자

  • 오른쪽 상단 톱니바퀴 -> Resources -> Advanced

출처

post-custom-banner

0개의 댓글