Docker의 기초 1#

2020. 10. 14. 16:53DevOps/Docker

docker wallpaper

공부하기에 앞서 도커는 솔직히 너무 핫해서 정보가 너무너무 많다. 그래서 필자가 언급못한 부분도 많으니 부족한 부분에 대해서는 따로 공홈이나 상세히 잘 적힌 블로그가 많으니 찾아보길 바란다. 그리고 틀린 내용이나 피드백 있을 경우 댓글 달아주길 바람.

 

본격적을 시작해보겟다. 


1. 도커의 등장 

2. 도커 실행 원리

3. 도커 설치

 


- 도커의 등장 

 

개발자라면 모든 이가 공감할 것이다. 개발하기도 전에 지치는 일, 개발환경 구축 및 세팅... 

정말 최악이라면 구축 및 세팅이 안되서 다른 툴로 갈아타는 일이도 있었을 것이다. 의미없는 삽질은 존재하지않지만 그래도 삽질은 삽질이다. 결론적으로 말하면 도커는 이런 부분을 바로 해결해준다. 솔직히 시간이 걸리더라도 결국은 구축하지만 공부하는 입장에서는 위화감이 안드는데 회사 즉 영리적 조직에서는 시간이 곧  돈이다.  1분 1초가 아까운 상황에서 환경 구축/세팅하느라 시간 많이 잡아먹어삐면 음....... 이후 일은 각자 상상에 맡기겟다. 아무튼  도커는 이런 문제들을 완전 해결해준다. 

 

Docker는 새로운 개념이 아니었다. 기존 리눅스의 기능에서 혁신적으로 개발하고 업그레이드하여 내놓은 소프트웨어 플랫폼이다. 즉

애플리케이션을 신속하게 구축, 테스트 및 배포할 수 있다는 것이다. (컨테이너 플랫폼 몃가지가 존재하지만 도커가 표준이된 이유가 있다)

Docker는 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징하며  이 컨테이너에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 존재한다.(Docker Hub참고바람) 그렇기에 도커 이용시 환경에 구애 받지 않고 애플리케이션을 신속하게 배포 및 확장할 수 있으며 코드상 충돌날 수 없게 실행시킬 수 있다.  어째서 그렇게 할 수 있을까?

위 그림을 한번 보자 꼭 옷수납장에 각각 구분할 수 있게 담을 수 있는 서랍처럼 보이지 않는가? 그렇다 도커는 애플리케이션 구축은 물론이고 환경까지 세팅해준다는 것 즉 각각 독립적으로 세팅하기 때문에 호환성 문제에서 절대 충돌 날 수 없다는 것, 독립된 개발 환경을 보장받을 수 있다는 것이다. 구분해주는 것을 컨테이너라 부른다. 컨테이너 내부에서 여러 작업을 마친 뒤 이를 운영 환경에 배포하려고 한다면, 해당 컨테이너를 '도커 이미지'라고 하는 일종의 패키지로 만들어 운영 서버에 전달하기만 하면 되는 것이다. 운영자도 마찬가지로 컨테이너에서 사용되던 운영 서버에서 새롭게 패키지를 설치할 필요 없으며, 각종 라이브러리 설치 등으로 인한 의존성을 걱정할 필요도 없다.

다시말해 개발/운영 환경의 통합이 가능하다는 것

 

정리하자면 개발자의 경우 도커허브에서 개발자가 필요한 모든것을 갖춘 패키지를 이미지로 받아 빠르게 구축/개발/배포를 하고 운영자로 넘겨 그 구축/개발/배포에 대한 컨테이너를 패키지 이미지를 복사파일을 가지고와 바로 운영하면 된다는 것이다. 끝

( 더많은 소프트웨어를 빨리 제공, 운영 표준화, 원활하게 마이그레이션, 비용절감 등)

 

그리고 다 위 그림을 보면 또 엄청난 발견을 볼 수 있다. 요즘 너무너무 핫한 그거다.

MicroService !

그렇다! Docker는 컨테이너로 통해 최신 애플리케이션 및 플랫폼을 생성하는 핵심 빌딩 블록으로 사용할 수 있다. 즉 Docker에서는 손쉽게 분산 마이크로 서비스 아키텍처를 구축 및 실행하고, 표준화된 지속적 통합 및 지속적 전달 파이프라인을 통해 코드를 배포하고, 고도로 확장 가능한 데이터 처리 시스템을 구축하고, 개발자를 위한 완전관리형 플랫폼인 것이다.  이 것은 나중에 배우게 될 Docker-Swarm, Docker-Compose를 배운다면 크게 와 닿을 것이다. 

 


- 도커 실행 원리

 

https://github.com/dotnet-architecture/eShopModernizing/wiki/03.-publishing-your-Windows-Container-images-into-a-Docker-Registry

가볍게 보자면 사실 별거 없다. (git이랑 비슷하다) 

위 그림처럼 패키지된 이미지들이 있을것이다.(dockerhub에 왠만한 유명한 툴들은 다있다. 없더라도 사용자들이 만들어서 올린다.)

이 패키지된 이미지들은 Docker-hub에서 관리를 하는데 거기서 검색하여

그 이미지를 pull하고

그 받은 이미지를 run(실행)하고

조합하여 다시 commit한 후에

push하여 내 도커허브에 저장 시키면 끝. (물론 다른 기능들도 많기에 docker가 표준이 된거임) 

 

컨테이너의 생명주기이기도 하며 도커의 기본적인 명령어이기도 하다. 나중에 하나하나 뜯어볼 것이지만 미리 원리를 알고가는게 좋다.

즉 Search - Pull - Run - Commit - Push 이다. ( delete 컨테이너 삭제도 있고 Create, start 등 있으니 다음 포스트에서 세세하게 보자)

https://blog.naver.com/isc0304/221840483579

필자가 현재 인프런에서 재즐보프님의 kubernetes강의를 듣는 중인데 도커강의도 포함되어 있어 정리를 잘해주시니 나중에 기회가 있으면 보길 바란다.


- 도커 설치

 

설치 부분에서는 운영체제에 따라 다르다는 것을 먼저 인지하길 바란다. 

 

 1. 리눅스(debian/redhat)

3. window/macos(darwin)

 

필자의 경우 일단 윈도우/macos에서 설치하는 것은 권장하지 않는다. 그래도 설명은 Ubuntu와 Macos만 설명하고 다른 설치는 공홈을 참조하길 바란다. 앞에서 말했듯이 도커 컨테이너는 리눅스가 가지고있던 기능을 업그레이드 / 확장한 것이기 때문에 윈도우/macos는 하이퍼바이저에 의해 생성되고 관리된다. 즉 조금 컴퓨터가 힘들어 할 수 있으니 유의해두자. 그러나 명령어나 다른건 다 똑같으니 걱정은 안해도된다.

( 이 부분이 궁금하다면  아래 잘 설명되어있으니 참고하길 바란다.) 

rancher.com/the-similarities-and-differences-between-windows-and-linux-containers

 

The Similarities and Differences Between Windows and Linux Containers

Learn more about the steps of installing Docker on Windows, and explore the similarities and differences between Windows docker containers and Linux containers.

rancher.com

 

1. 리눅스 

- debian계열

 

도커에서도 설치가 여러가지 있지만 여기서는 두가지만 소개 하겠다.

 

   1) ubuntu에서 제공하는 docker 

1
2
3
sudo apt update
 
sudo apt install docker.io -
cs

 

   2) docker 공식 홈페이지에서 제공하는 docker 

1
2
3
4
5
6
7
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
 
sudo apt update
 
sudo apt install docker-ce -y
cs

 

2. Macos 

사실 윈도우나 맥os는 공홈에서 다운로드 받으면 끝이다.

좌측 하단에 자기한테 맞는 운영체제 선택하여 다운로드 하자. 설치하고 실행시

 

고래 아이콘 뜨면서 실행되는 걸 볼 수 있다. 그런 다음 터미널을 켜서 버전을 확인하고 잘 구동하는지 기본 명령어까지 써보자 

 

1
2
docker --version
docker ps
cs

다음 시간에 ~ 

틀린 내용이 있거나 피드백이 있을 경우 댓글 달아주세요.

참고출처 : aws.amazon.com/ko/docker/

'DevOps > Docker' 카테고리의 다른 글

Docker Basic-1 Engine & 명령어 활용 2#  (0) 2020.10.16