반응형

정리

도커 파일 = 명세서

도커 이미지 = 프로그램, 실행파일

도커 컨테이너 = 실행중인 프로그램, 프로세스

 

 

 

 

도커 내부가 어떻게 돌아가는 지.

도커 클라이언트 내부 명령어

  

 8강과 9강에서 어떤 것들을 

 

어떤 걸 만들거냐면

간단한 앱인데 그걸 도커환경과 AWS 클라우드환경에서 구성해보려고한다.

Ngnix를 이용해서 라우팅을 시켜서

모든 용청이오면 ngninx를 통해 백엔드와 프론트엔드로 나눠주는 그러한 앱입이다.

-> Ngninx의 역할

 

트래비스 CI에서 자동적으로 해준다.

이렇게 하는게 가능한이유는

.travis.yml파일이 있어서 거기에 설정해준대로 하나하나 실행을 하게 된다.

 

모든 도커이미지를 빌드를 하고

 docker build ..

빌드된 이미지를 자동으로 push를 하고 있다..

docker push ..

여기에 보면 도커허브에 

이런식으로 push가 됩니다.

 

depoly까지 완성을 했습니다.

Elastic Beanstalk에 이미지가 푸쉬가 되서 이미지를 가져와서 생성을 하고 있는 중입니다.

이게 완성이 되면 수정한 코드가 반영이 됩니다.

 

 

 

 

 

 

어디서나 요새 도커를 쓰고 있습니다. 도커가 기본적일 정도로.

왜이렇게 많이 도커를 쓸까? 그 이유를 생각하보면

간단헥 결론부터 얘기하면 어떤 프로그램을 다운받는 과정을 굉장히 간단하게 만들기 위해서다.

 

 installer를 실행하다가 에러를 발생하는 경우가 생긴다. 그 이유는 갖고 있는 서버나 운영체제 환경에 따라서 다른 installer를 사용하는데 그거 하나하나를 맞추기 위해서 많은 에러가 발생하기 때문이다. 이러한 설치과정이 복잡한 걸 굉장히 단순하게 해주는게 Docker다.

-> 즉 굉장히 작업환경을 엄청 빠르고 쉽게 구축할 수 있는게 Docker다.

 

 

 

 

 

 초반부터 Redis를 설치하려다 보니까 wget이 없다.. 즉 뭐하나 설치하려고 하다보니까 의존성? 떄문에 설치가 힘들다.. A를 다운받으려면 B를 다운받아야하고 너무 불편하다!! 그걸 해결해주는 도구 = Docker

 

 

 

 

#2

 도커는 컨테이너가 강조가 됩니다.

도커 사이트만 가보더라도 도커먼저 설명하는 게 아니라 컨테이너가 뭔지를 설명하고 있습니다. 그만큼 Container가 중요합니다. 

 

 다양한 실행환경을 컨테이너로 추상화하여 동일한 인터페이스를 제공하여 프로그램의 배포 및 관리를 단순하게 해줍니다. 즉 프로그램 단위로 손쉽게 배포 및 관리를 해주는 게 컨테이너이다 . 이렇게 함으로써 AWS, Azure, Google Cloud에서도 실행이 가능하게 해줍니다.

 컨테이너도 프로그램들을 이동 배포 및 관리를 해주는게 컨테이너다.

 

 

#3

Container

코드와 모든 종속성을 패키지화하여 응용 프로그램이 한 컴퓨팅 환경에서 다른 컴퓨팅 환경으로 빠르고 안정적으로 실행되도록 하는 소프트웨어의 표준 단위이다.

 

간단하고 편리하게 프로그램을 실행시켜 주는 도구가 컨테이너임.

 

Image

컨테이너 이미지는 코드, 런타임, 시스템 도구, 시스템 라이브러리 및 설정과 같은 응용프로그램을 실행하는데 필요한 모든 것을 포함하는 가볍고 독립적이며 실행 가능한 소프트웨어 패키지입니다.

 

 

 도커 이미지는 카카오톡을 실행해야할 때 필요한 모든 설정들이나 종속성들을 갖고 있는 것입니다. 이 이미지를 이용해서 컨테이너를 만들고 컨테이너가 실행을 해서 앱이 컨테이너 안에서 돌아가게 되는 것이다.! 즉 컨테이너는 이미지의 인스턴스라고 생각하면 된다. (이미지는 클래스고 컨테이너는 객체같은 느낌이라고 생각하면 된다!)

 

 컨테이너를 이용해서 프로그램을 실행한다 정도만 이해하면 됩니다.

 

 

 

 

 

# Dockerfile 만들기

 도커 파일은 도커 이미지를 만들기 위한 설정파일이며 컨테이너가 어떻게 행동해야 하는지에 대한 설정들을 정의해주는 곳입니다.

 

 

 

 레이어 중 가장 기본이 되는 것이 베이스 이미지라 생각하면 됩니다. 간단히 OS라고 생각하면 됩니다. 

 

 

Hello 출력하기

 

 순서

1. 도커 파일 만들 폴더 하나 만들기 ex) dockerfile-folder

2. 방금 생성한 도커 파일 폴더를 에디터를 이용해서 실행

3. 파일 하나 생성, 이름은 dockerfile

4. 그 안에 먼저 어떻게 진행해 나갈지 기본적인 토대를 명시

 

 

우선 FROM, RUN, CMD 등은 도커 서버에게 무엇을 하라고 알려주는 명령어 입니다.

FROM

 이미지 생성시 기반이 되는 이미지 레이어입니다.

베이시 이미지도 레이어 중에 하나지만 가장 기반이 되는 레이어입니다.

<이미지 이름>:<태그> 형식으로 작성이 됩니다.

태그를 안붙이면 자동적으로 가장 최신것으로 다운 받게 됩니다. 태그 부분에 버전을 넣어주시면 그 버전으로 다운받게 됩니다.

ex) ubuntu:14.04

 

RUN 

 RUN은 도커이미지가 생성되기 전에 수행할 쉘 명령어 입니다. 기본적인 이미지 레이어, 베이스 이미지 이외에도 필요한 것들을 첨가하는데 사용이 됩니다.

 

CMD

 컨테이너가 시작되었을 때 실행할 실행 파일 또는 쉘 스크립트입니다. 해당 명령어는 DcokerFile내 1회만 쓸 수 있습니다.

 

5. 이제 베이스 이미지부터 실제 값으로 추가해주기

6. 베이스 이미지는 ubuntu를 써도 되고 centos등을 써도 되지만 hello를 출력하는 기능은 굳이 사이즈그ㅏ 큰 베이스 이미지를 쓸 필요가 없기에 사이즈가 작은 alpine 베이스 이미지를 사용하겠습니다.

 

7. hello 문자를 출력하기 위해서 echo를 사용하여야 하는데 이미 alpine 안에 echo를 사용할 수 있는 파일이 있기에 RUN 부분은 생략합니다.

 

8. 마지막으로 컨테이너 시작 시 실행될 명령어 echo hello를 적어준다.

 

이렇게해서 도커파일은 완성이 되었습니다. 이제 이미지는 어떻게 만들까?

 

 

 

 

 

 

 

반응형

'Docker' 카테고리의 다른 글

도커를 이용한 간단한 Node.js 어플 만들기  (0) 2021.04.06