Docker 설치하기

https://docs.docker.com/desktop/mac/install/

경로에서 Intel 또는 Apple chip 본인에게 맞는걸 설치하기

docker --version

명령어를 통해 docker 설치를 확인할 수 있다.

Docker란?

개발자들을 위한 일종의 컨테이너 기술로 소프트웨어 수송, 배포에 사용할 수 있습니다.
(실행 환경에 구애받지 않고 애플리케이션을 실행 할 수 있는 장점이 있습니다.)

Docker의 장점

  • 의존성 충돌 문제를 해결해 준다.
  • 개발과 배포 환경을 일치시킨다.
  • 수평 확장을 쉽게 해준다.
  • 각 서버에 새로운 내용을 배포하기 쉽게 만든다.

의존성 문제 해결

일반적으로 한 컴퓨터에는 한 가지 버전의 프로그램을 설치하고 실행시킵니다. 이 때 버전이 다르면 실행이 안됩니다. 하지만 Docker가 해결해줍니다.
(버전이 다르면, Docker가 버전을 조정해주기 때문에 의존성 문제를 해결할 수 있습니다.)

컨테이너의 격리

  • 프로세스
    특정 컨테이너에서 작동하는 프로세스는 기본적으로 컨테이너 안에서만 액세스 할 수 있습니다.

컨테이너 안에서 실행되는 프로세스는 다른 컨테이너의 프로세스에 영향을 줄 수 없습니다.

  • 네트워크
    기본으로 컨테이너 하나에 하나의 IP주소가 할당되어 있습니다.

  • 파일 시스템
    컨테이너 안에서 사용되는 파일 시스템은 구획화되어 있습니다. 그래서 해당 컨테이너에서의 명령이나 파일 등의 액세스를 제한할 수 있습니다.


VM (Virtual Machine)

VM(가상 머신) 입니다. 하나의 컴퓨터 위에 여러 개의 독립적인 컴퓨터가 작동할 수 있게 하는 기술입니다.
ex) VMware, Virtual Box, Parallels 등이 있습니다.

컨테이너 역시 가상 머신과 비슷한 수준의 격리성을 제공합니다. (정확한 비교는 나중에..)


Docker (개발과 배포 환경 일치시키기..)

개발자들은 특정 버전의 Node.js나 MySQL 등을 각자의 운영체제에 설치하고 그 후에 개발을 진행합니다. 때로는 시스템 환경 변수, 버전을 제대로 맞춰야 작동하는 경우가 있습니다.

도커가 이런 문제를 해결해준다.

어떠한 운영체제든 상관없이 Docker 명령어를 통해 프로그램을 실행할 수 있습니다.

  • OS에 상관없이 즉시 애플리케이션 실행 가능하게 만들어준다.
  • 개발팀 모든 인원이 동일한 환경에서 개발을 진행할 수 있다.

AWS ECS를 통해 도커 컨테이너를 배포할 수 있습니다.


Docker (수평 확장, 새로운 내용 배포)

컨테이너 기술의 가장 큰 장점은 실행 환경의 일치입니다. 컨테이너 기술은 아주 활발하게 이용되고 있습니다.


Docker 키워드

컨테이너

애플리케이션 의존성, 네트워크 환경, 파일 시스템에 구애받지 않고, 도커라는 기술 위에 실행될 수 있도록 만든 애플리케이션 상자

이미지

모든 컨테이너는 이미지로부터 생성됩니다. 애플리케이션 및 애플리케이션 구성을 함께 담아놓은 템플릿으로, 이를 이용해 즉시 컨테이너를 만들 수 있습니다.

변경 사항을 추가/커밋해서 또 다른 이미지로 만들 수 있습니다.

레지스트리

이미지는 레지스트리에 저장됩니다. Docker Hub, AWS ECR이 있습니다. 도커 CLI에서 이미지를 이용해 컨테이너 생성 시, 호스트 컴퓨터에 이미지가 존재하지 않는다면, 기본 레지스트리부터 다운받습니다.
(도커 이미지를 저장하고 배포/공유하는데 사용한다.)


Docker CLI

Permission denied가 뜬다면 sudo 명령어를 사용하자.

Registry (레지스트리)

  • 도커 이미지를 관리하는 공간
  • 특별히 지정하지 않는다면, Docker Hub를 기본 레지스트리로 설정함
  • 레지스트리는 Docker Hub, Private Docker Hub, 회사 내부용 레지스트리 등으로 나뉠 수 있다.

Repository (레포지토리)

  • Registry 내에 Docker 이미지가 저장되는 공간입니다.
  • 이미지 이름이 사용되기도 합니다.
  • Github Repository와 비슷하다 생각하면 된다.

Tag (태그)

  • 같은 이미지라도 버전 별로 내용이 다를 수 있습니다.
  • 해당 이미지를 설명하는 버전 정보를 주로 입력
  • 특별히 다른 것을 지정하지 않는다면 latest 태그가 붙은 이미지를 가져온다.

Docker CLI - Copy, Dockerfile

다른 사람이 제공한 도커 이미지를 받아 사용하는 경우, 원하는 모든 기능이 구성되어 있지 않을 수 있습니다.

Docker 컨테이너에 파일 복사

모든 파일이 하나의 이미지에 구성되어 있고, 그 이미지를 사용할 수 있습니다. (도커 이미지에 모두 구성되어 있지 않은 경우도 있습니다.)

컨테이너 파일을 복사하는 방법은 두 가지가 있습니다.

  • CP: 호스트와 컨테이너 사이에 파일을 복사 (Copy)
  • Volume: 호스트와 컨테이너 사이에 공간을 마운트 (Mount)
docker container cp ./경로

위 명령어를 통해서 복사할 수 있습니다.


Docker 이미지 만들기

Docker Container를 이미지 파일로 변환합니다.

  • 이전에 작업했던 내용을 다시 수행하지 않아도 된다.
  • 배포 및 관리가 유용하다.
docker container commit 컨테이너_이름 (이미지)

생성된 이미지를 다른 포트에서 웹 서버로 구동한다.

ex) 900 포트

docker run --name (컨테이너_이름) 900:80 (이미지)

Docker Image 빌드를 위한 파일인 Dockerfile로 만드는 방법

docker build --tag (이미지_버전)

생성된 이미지를 이용해 901포트에 웹 서버 구동

docker run --name (컨테이너_이름) -p 901:80 (이미지_버전)

이후 127.0.0.1:901 에서 웹 서버가 작동하는 걸 확인할 수 있다.

profile
메일은 매일 확인하고 있습니다. 궁금하신 부분이나 틀린 부분에 대한 지적사항이 있으시다면 언제든 편하게 연락 부탁드려요 :)

0개의 댓글