관리 메뉴

제뉴어리의 모든것

[Section 4] [Cloud] 배포 컨테이너 - 2 본문

코드스테이츠/정리 블로깅

[Section 4] [Cloud] 배포 컨테이너 - 2

제뉴어리맨 2022. 10. 9. 20:20

위 내용은 본인의 공부를 위한 내용이므로, 정확한 정보가 아닐 수도 있습니다.

감안하여 보도록 합시다.

 

전체 항목

  • 컨테이너 기술이란?
  • 도커(Docker) 란?
  • Docker 핵심 개념
  • Docker 기본 사용법
  • Docker 사용시 기본 명령어
  • 추가적으로 알아 볼 사항



Docker 기본 사용법

기본 사용법을 알기 전에 알아야할 개념이 있다

 

  • Docker Engine
    "Docker Engine is an open source containerization technology for building and containerizing your applications"

    쉽게 생각해서, 그냥 이게 실질적인 도커다.
    위에서 본 도커의 기본적인 아키텍쳐의 기능들을 가능하게 해주는 모듈들의 패키지라고 할 수 있겠다.
    Docker Host, Docker Client, Docker Registry 같은 것들이 다 설치되는것이다.


  • Docker Desktop

    "Docker Desktop is an easy-to-install application for your Mac, Linux, or Windows environment that enables you to build and share containerized applications and microservices."

    Docker에서 제공하는 기능의 설치와, 사용을 손쉽게 해주는 프로그램이다. (패키지라고 할수도 있겠다)
    Docker의 여러 모듈을 한번에 설치해주고 해당 기능들을 콘솔같은곳에서 조절할 수 있게 해주는 것이다.  

  • Docker Build
    이미지를 생성할때 사용되는 Docker의 모듈 중 하나


  • Docker Compose
    Docker에서 여러개의 컨테이너를 구동시킬때 사용할 수 있는 도구라고 생각하면 된다. (어쨋든 이것도 모듈이다)
    Container를 하나하나 시작 시킬수도 있지만, Compose를 사용하면 구동시킬 컨테이너들을 정의해놓고
    한번에 시작시킬 수 있다.
    그리고 그러한 정의 내용은 YAML (YML) 파일로 작성한다.

    - docker-compose.yml 파일 예시
version: "3.9"  # optional since v1.27.0
services:
  web:
    build: .
    ports:
      - "8000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    depends_on:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

 

 

정리하자면,

도커 엔진을 깔고 (데스크탑까지 깔면 더 편리하게 사용 가능하다, 마치 MySQL의 워크벤치 같은것이다.)

이미지를 기반으로 컨테이너를 만든다.

그리고 그 이미지는 내가 만들 수도 있고, docker registry에서 다운받을 수도 있다.

즉, 이미지가 있어야 컨테이너를 만들고 컨테이너를 실행시켜서 해당 컨테이너 배포 환경과 똑같이 만들어 놓고

그 컨테이너에 낸 빌드파일들을 올려서 배포환경에서 잘 작동하는지 여러 테스트들을 할 수 있는것이다.

 

 

 

참조 : https://docs.docker.com/desktop/

https://www.daleseo.com/docker/

 

Docker 시작하기 (개념/설치)

Engineering Blog by Dale Seo

www.daleseo.com

https://www.44bits.io/ko/post/easy-deploy-with-docker

 

도커(Docker) 입문편: 컨테이너 기초부터 서버 배포까지

도커(Docker)는 2013년 등장한 컨테이너 기반 가상화 도구입니다. 도커를 사용하면 컨테이너를 쉽게 관리할 수 있으며, 이미지를 만들어 외부 서버에 배포하는 것도 가능합니다. 이 글은 도커를 시

www.44bits.io

https://cultivo-hy.github.io/docker/image/usage/2019/03/14/Docker%EC%A0%95%EB%A6%AC/

 

[Docker] 개념 정리 및 사용방법까지.

 

cultivo-hy.github.io

https://help.iwinv.kr/manual/read.html?idx=583 

 

단 몇초만의 클라우드 | iwinv 서버

1. Docker 데몬 docker를 이용하기 위해서는 docker 데몬이 실행중에 있어야 합니다. 하지만 모종의 이유로 인해, 데몬이 꺼지거나, 서버 재부팅 시 데몬이 실행되도록 해놓지 않았다면, 이용하던 컨테

help.iwinv.kr

https://programforlife.tistory.com/67

 

[Docker] Docker 란?

도커(Docker)의 탄생 배경 최근 들어 소프트웨어 개발을 할 때 서버를 직접 서버 부품들을 사고, 서버 설정을 하고, 계속 가동해서 서버를 구성하는 시스템보다, 클라우드 서비스에서 몇 번의 클릭

programforlife.tistory.com

https://velog.io/@weekbelt/%EB%8F%84%EC%BB%A4%EB%8D%B0%EB%AA%ACDocker-Daemon

 

도커데몬(Docker Daemon)

Docker가 실제로 어디 있는지 알아보겠습니다.docker 명령어는 /usr/bin/docker에 있는 파일을 통해 사용되고 있습니다. 이번에는 실행 중인 도커 프로세스를 확인해보겠습니다. 확인해보니 /usr/bin/docker

velog.io

https://wooono.tistory.com/123

 

[Docker] Dockerfile 개념 및 작성법

Dockerfile Dockerfile은 DockerImage를 생성하기 위한 스크립트(설정파일)이다. 여러가지 명령어를 토대로 Dockerfile을 작성한 후 빌드하면 Docker는 Dockerfile에 나열된 명령문을 차례대로 수행하며 DockerIma..

wooono.tistory.com

https://velog.io/@jkseo50/Docker-Kubernetes-6.-%EB%8F%84%EC%BB%A4-%EB%A0%88%EC%A7%80%EC%8A%A4%ED%8A%B8%EB%A6%AC

 

[Docker / Kubernetes] 6-1. 도커 레지스트리

도커 레지스트리는 도커 이미지를 관리하는 일종의 저장소이다. 대표적으로 dockerhub가 있으며, AWS, GCP와 같은 메이저 클라우드 사업자 또한 컨테이너 레지스트리로 불리는 이미지를 보관할 수

velog.io

 

 

기본 명령어

다음 명령어들은 리눅스에서 사용할 경우 모두 관리자 권한이 필요하므로, sudo를 붙여줘야 한다.

 

 

  • 이미지로 도커 컨테이너 생성
    생성만 하고 바로 실행시키진 않는다
$ docker create [이미지명]

 

  • 도커 컨테이너 실행
docker start <컨테이너 이름 혹은 아이디>

 

 

  • 컨테이너 생성 + 실행
    위에서 설명한 create 와 start 의 조합이라고 생각하면 된다. 생성하고 바로 실행도 시킨다.
docker run -d -p 80:80 docker/getting-started

 

: docker : 도커 명령어를 칠때 기본적으로 붙는 부분

: run : docker를 실행시키는 부분

: -d : 지금 실행시키려는 컨테이너를 백그라운드에서 실행시키겠다는 옵션

: -p : 포트에 대한 옵션을 사용하겠음을 명시, 뒤이어 오는 80:80 이 옵션에 대한 설정 값으로

: host pc의 80 포트를 컨테이너의 80 포트와 매핑.

: 즉, hotst pc의 80 포트로 들어오는 요청을 컨테이너의 80 포트로 전달

: docker/getting-started : 실행시키려는 컨테이너에 사용되는 이미지.

 

참고로, 컨테이너를 실행시키는 명령어는 다음과 같이 두가지 형식이 있다.

docker run [뒤에 내용]

docker container run [뒤에 내용] 

위에 두 명령어는 동일하다.

 

 

 

+ create, start, run 차이에 대한 참조 :

https://linuxhandbook.com/docker-run-vs-start-vs-create/

 

 

  • 실행중인 컨테이너 재시작
sudo docker restart <컨테이너 이름 혹은 아이디>

 

  • 도커 엔진에 존재하는 이미지 확인
docker images

 

  • 이미지 다운
 docker pull [이미지명]

 

 

 

https://linuxhandbook.com/docker-run-vs-start-vs-create/

https://stackoverflow.com/questions/51247609/difference-between-docker-run-and-docker-container-run

 

 

  • 실행 중인 컨테이너 확인 (실행중인것만)
docker ps

 

-- 옵션

 

-a : 중지 중인 컨테이너까지 모두 확인

ex ) docker ps -a

 

  • 컨테이너 중지
sudo docker stop <컨테이너 이름 혹은 아이디>

 

  • 컨테이너 접속(attach)
docker attach <컨테이너 이름 혹은 아이디>

 

 

 

 

 

추가적으로 알아볼 사항

  • docker swarm
  • docker service

인스턴스만 개별적으로 실행 시키는것과 

서비스로 묶어서 실행시키는 방법이 있는듯하다.