728x90

Docker란?

  • 컨테이너 기술을 지원하는 다양한 프로젝트중 하나
  • 컨테이너 기술의 사실상 표준
  • 다양한 운영체제에서 사용이 가능하다.(Linux, Mac OS, Windows)
  • 애플리케이션에 국한되지 않고 의존성 및 파일 시스템까지 패키징하여 빌드, 배포, 실행을 단순화
  • Linux의 NameSpace와 cgroups 커널 기능을 사용하여 가상화

도커는 다양한 클라우드 서비스 모델과 같이 사용가능

  • 이미지 : 필요한 프로그램과 라이브러리, 소스를 설치한 뒤 만든 하나의 파일
  • 컨테이너 : 이미지를 격리하여 독립된 공간에서 실행한 가상 환경

컨테이너가 해결한다!

  • 동일 시스템에서 실행하는 소프트웨어의 컴포넌트가 충돌하거나 다양한 종속성을 갖고 있음
  • 컨테이너는 가상머신을 사용해 각 마이크로 서비스를 격리하는 기술
  • 컨테이너는 가상머신처럼 하드웨어를 전부 구현하지 않기 때문에 매우 빠른 실행이 가능
  • 프로세스의 문제가 발생할 경우 컨테이너 전체를 조정해야 하기 때문에 컨테이너에 하나의 프로세스를 실행하도록 하는것이 좋다.

컨테이너, 서비스, 서버 가 많아질수록 비용이 절감되는 효과를 볼 수 있다❗

컨테이너를 격리하는 기술

리눅스 네임스페이스 : 각 프로세스가 파일 시스템 마운트, 네트워크, 유저, 호스트네임 등에 대해 시스템에 독립뷰 제공

리눅스 컨트롤 그룹 : 프로세스로 소비할 수 있는 리소스 양(CPU, 메모리, I/O, 네트워크 대역 등)을 제한

도커의 한계

서비스가 커지면 커질수록 관리해야 하는 컨테이너의 양이 급격히 증가
도커를 사용하여 관리를 한다고 하더라도 쉽지 않은 형태
배포 및 컨테이너 batch전략
scale-in, scale-out이 어려움

Docker는 OS의 자원을 이용하기 때문에 기본적으로 Root 사용자에서 명령어를 사용해야 한다.
Docker Docs 바로가기

설치

sudo -i # root 접속
# 비밀번호 있으면 입력 없으면 그대로
# 명령어 치는 곳 $에서 # 으로 변경 확인
apt install docker.io # 도커 설치

search(image 검색)

docker search !@%!@

  • Docker 허브로부터 사용가능한 이미지를 찾는 명령어
  • Docker는 Docker Hub를 통해 GitHub처럼 사용자들간의 이미지 공유를 할 수 있는 환경이 구축되어 있다.
  • 공식이미지는 / 앞에 사용자 이름이 붙지 않는것이다.

Pull(image 다운로드)

docker pull tomcat:latest
Docker 허브로부터 이미지 다운로드

images(image 목록 보기)

# docker images
현재 PC에 다운 받아져있는 image들을 출력하는 명령어

run

컨테이너 생성과 동시에 컨테이너로 접속하는 명령어

# docker run "REPOSITORY"
(docker run <옵션><이미지이름 or 이미지ID><실행할 파일>)

  • 단순히 image안의 파일을 실행할 목적으로 생성된 것이기 때문에 메인으로 실행되는 파일이 종료되면 컨테이너도 같이 종료된다. 따라서 계속해서 컨테이너를 유지하고 싶다면 -d 옵션을 이용해야 한다.

  • 옵션

    • -i : interactive
      • 사용자가 입출력을 할 수 있는 상태로 한다.
    • -t : 가상 터미널 환경을 에뮬레이션 하겠다는 설정
    • -d : 컨테이너를 일반 프로세스가 아닌 데몬프로세스 형태로 실행하여 프로세스가 끝나도 유지되도록 한다.

create

컨테이너 생성 명령어
# docker create <옵션> <포트번호> <이름> <이미지명>
docker create -d -p 80:80 --name nx nginx
이런식으로 명령어 사용이 가능하다
컨테이너 계층을 생성하고 명령을 실행하게끔만 만드는 단계이다.

옵션

  • -p : 컨테이너의 포트를 호스트에 게시함
  • --name : 컨테이너에 이름 할당

start

docker start [OPTIONS] CONTAINER [CONTAINER...]
create에서 할당한 이름값으로 시작할 수 있고 containerId로도 실행이 가능하다.

stop

docker stop id or container
실행중인 container를 중지시킨다.
-t 옵션으로 일정시간 지난후에 중지 시킬수도 있다.

ps

컨테이너 목록보기 명령어
docker ps로 볼수있다.
기본값은 실행되고있는 컨테이너만 표시한다.
그래서 중지된 컨테이너도 보려면 docker ps -a 를 사용하면 된다.

옵션

  • --all, -a
    • 모든 컨테이너 표시(기본값은 실행만 표시)
  • --quiet, -q
    • 컨테이너 ID만 표시

remove

제거 명령은 container를 중지 시킨 후에 가능하다

docker rm containerId or name

중지시킨후에 container 제거 명령을 할 수있다.

rmi는 이미지를 지우는 것으로 설치했던것을 삭제하는 명령이다.

docker rmi nginx 이런식으로 받았던 이미지 이름을 rmi 뒤에 넣어준다.

컨테이너 내부 shell 실행

sudo docker exec -it tc /bin/bash

컨테이너 로그 확인

sudo docker logs tc # stdout, stderr

728x90

'클라우드' 카테고리의 다른 글

OpenSSH  (0) 2022.08.09
Docker compose  (0) 2022.08.07

+ Recent posts