Docker 설치 및 기초사용법

권보원·2023년 4월 30일
0

Docker

목록 보기
1/1

도커란?

컨테이너 기술 기반 가상화 플랫폼

가상머신(VM)은 OS를 가상화해서 사용하는 방식이지만
도커는 프로세스를 격리해 컨테이너를 만들어 사용한다.

컨테이너와 이미지

이미지(image)

  • 이미지는 컨테이너 실행과 생성에 필요한 파일과 설정값을 포함하고 있는 것으로 상태값을 가지고 변하지 않습니다. 이미지는 Docker hub에서 가져와 사용할 수 있습니다.
  • 이미지를 받아놨다면 여러 컨테이너를 쉽게 만들 수 있습니다.

컨테이너(container)

  • 컨테이너는 가상의 OS를 만들지 않고 호스트 OS를 공유하면서 필요한 프로세스만 격리하고 커널을 공유합니다.
  • 프로세스만 격리시키기 때문에 가볍고 빠르게 동작합니다.

도커 설치하기

apt 업데이트 후 필요한 HTTP패키지들을 한번에 설치합니다.

-y (모두 yes로 설치)

$ sudo apt update
$ sudo apt-get install -y ca-certificates \
	curl \
    software-properties-common \
    apt-transport-https \
    gnupg \
    lsb-release

도커의 공식 GPG키 및 공식 저장소 추가

오타가 나지않게 주의하고 오래걸린다고 ctrl c로 중지하지 맙시다...(강제삭제하고 다시해야함)

$ sudo mkdir -p /etc/apt/keyrings
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

$ echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

도커 엔진과 컨테이너 데몬 서비스를 설치

$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io

도커 기본 사용법

$ docker ps # 실행중인 컨테이너 표시
$ docker ps -a # 중단된 컨테이너 포함해서 표시
$ docker images # 이미지들 표시
$ docker pull [name:tag] # 이미지 다운로드
$ docker run [option][image:tag][command] # 도커 run
$ (sudo) docker run -i -t(- it) ubuntu:20.04 bash # 우분투 컨테이너 생성 예시
$ docker start [name or id] # 컨테이너 실행
$ docker attach [name or id] [command] # 컨테이너 들어가기
$ docker exec [name or id] [command] # 컨테이너 명령어 실행하기
$ docker rm [container id] # 컨테이너 삭제
$ docker stop [container id] # 컨테이너 중단
$ docker rmi [image id] # 이미지 삭제
$ docker logs [name or id] # 컨테이너 로그 보기 --tail [number]로 최근만, -f로 실시간 가능
# Ctrl + P + Q (Exit container) Ctrl + D, exit(stop)

exec vs attach vs run

  • 모두 컨테이너에 명령어를 전달해 헷갈릴수 있다.

exec

  • 컨테이너 외부에서 접근해 코드를 작동, 내부에서 커맨드를 실행하는 것과 동일한 형태로 결과를 출력, cd는 불가능
  • 컨테이너가 실행되는 동안에만 실행됨 컨테이너를 다시 시작해도 다시 시작되지 않음

attach

  • 컨테이너 내부에 직접 들어가 명령어를 전달
  • Apache나 Mysql은 비정상 종료되는 경우 있음
  • exec와 달리 처음 run할 때 /bin/bash를 지정하지 않으면 bash shell접근 불가능

run

  • run은 컨테이너를 시작시키고 명령이 끝나면 빠진다

0개의 댓글

관련 채용 정보