나의 발자취

Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리 본문

Backend

Docker에 대한 기본 개념 정리, Docker 기본 명령어 정리

달모드 2024. 11. 1. 11:46

일단 기본적으로 아래 영상을 보면 도커에 대한 개념은 잡힐거다.

 

 

출처: https://www.dokyun.pe.kr/322?pidx=7

 

출처: 드림코딩 엘리 - 도커 한방에 정리 유튜브 영상

가상머신: 각각의 앱을 실행하기 위해 각각의 OS가 올라가므로 굉장히 무겁다.

도커: Container Engine(Docker)이라는 SW를 설치해 개별 컨테이너가 생성되어 각 앱을 고립된 환경에서 실행할 수 있다. 

 

하이퍼바이저는 하드웨어와 운영체제 중간에 온다. 하이퍼바이저는 추상화를 시켜주는 작업을 한다. 하드웨어를 해주는 가상화 메모리들이...

 

docker 구성 요소와 도구

구성 요소

  • Docker Engine(run time): dockerd <- docker engine API
  • Docker Client(CLI): docker
  • Docker Objects: Docker container, Docker image, Docker service

  • Docker Registry

 

도구

  • Docker Compose: docker-compose, docker-complse.yml
  • Docker Swarm: docker swarm CLI, docker node CLI

 

도커 파일, 도커 이미지, 도커 컨테이너의 관계

'컨테이너를 실행한다' = 메모리에 올라갔다 = 운영체제에서 프로세스가 실행중이다

 

컨테이너를 만들려면 Dockerfile, Image, Container가 필요하다.

Dockerfile: 컨테이너를 어떻게 만들어야하는지 작업지시서같은 역할

Image: 앱을 실행하는데 필요한 코드, 런타임, 환경, 시스템 툴, 시스템 라이브러리 등 -> 한번 생성 시 변경 불가능

Container: Image를 고립된 환경에서 실행할 수 있는 공간

출처: 드림코딩 엘리 - 도커 한방에 정리 유튜브 영상
출처: https://www.dokyun.pe.kr/322

 

 

 

 

도커 환경 아키텍처

 

 

도커 이미지 다루기: 주요 명령

일단 도커를 켜서 좌측 하단에 Engine Running인 상태임을 확인한다.

 


docker search [options] 검색어

e.g.) docker search --limit 5 mysql

  • 도커 허브에 등록된 레포지토리 검색
  • 공식 레포지토리 네임스페이스는 생략가능

해커들이 악의적인 파일을 올려두는 경우도 있기 때문에, 이미지를 내려받을 때는 조심해야 하고 OFFICIAL or STARS가 많은 이미지를 내려받는 것이 안전하다.

 

 

또한, 여기 앞에 있는 것이 네임스페이스라고 할 수 있다. 기본적으로는 도커에서 설정한 유저명이 나오게 된다. 

 

따라서 뭐 특정한 레포지토리를 검색하고 싶을 때는 docker search [username]/검색어 이런식으로 할 수 있을거다.

 


docker pull : 도커 레지스트리에서 이미지 내려받기

##Docker Hub 레지스트리에서 ASP.NET Sample 앱 이미지 검색
docker pull mcr.microsoft.com/dotnet/samples:aspnetapp
docker pull mcr.microsoft.com/mcr/helloworld

e.g.) docker image pull <옵션>

 

 

참고로, 아래와 같이 찾을 수 없다고 나오는 경우에는 네임스페이스가 변경되는 경우도 있기 때문에, 최신으로 변경된 네임스페이스를 확인해준다.

 

이미지 목록 확인

docker image ls
docker images

 

똑같은 역할을 하는 것 같다.


docker image tag : 이미지에 태그 추가

  • docker image의 버전은 image ID인데, tag 명령어는 image ID에 붙이는 alias/별명/식별자라고 생각하면 된다.
  • tag 하나당 image 하나

e.g.) docker image tag <원본 이미지(:태그)> <새 이미지(:태그)>

docker image tag microsoft/aci-helloworld:latest hello.docker/aci-helloworld:latest

밑줄 친 부분은 생략가능하다.

docker image tag microsoft/aci-helloworld:latest hello.docker/aci-helloworld:latest
docker tag mcr.microsoft.com/dotnet/samples:aspnetapp hello.docker/samples

 

이렇게 기존에 존재하는 도커의 이미지에 태그를 붙이게 되면, 이미지를 복사하게 된다. (Copy As...와 비슷)

위의 소스코드 중 두번째 줄로 설명하자면,

 

docker tag mcr.microsoft.com/dotnet/samples:aspnetapp hello.docker/samples

Copy                                                                                                                                          Copy As...

 

이렇게 되는 것이다.

 

 

참고로,

지금 <원본 이미지> 부분은 :aspnetapp 이라는 tag가 붙어있고,

<새 이미지> 부분에 별도로 태그를 붙여주지 않았을 때에는, default tag 값인 latest가 붙게 된다.

 

 

그리고 VS Code 옆 Docker Extension을 보면, 방금 다운받은 이미지들과 태그들을 볼 수 있다.

마우스 우클릭을 하면 docker 명령어로 실행할 수 있는 동작들을 gui 형식으로도 제공한다.

Comments