Docker

danbi lee·2023년 8월 4일

도커

한 대의 컴퓨터 안에서 각각의 앱을 실행시키는 것. 각각의 앱은 격리된 환경에서 실행됨.

  • 호스트: 운영체제
  • 컨테이너: 격리된 각각의 실행환경

어플리케이션을 실행하는데 필요한 모든것들을 도커 컨테이너안에 담아둠. 어떤 PC 에서든 동일하게 구동 가능함.

속도가 느려지지 않아 시간 절약, 저장장치 용량 절약

도커의 3대 구성요소

Dockerfile

레시피, 사용설명서 라고 보면 됨

  • 어플리케이션 구동을 위한 꼭 필요한 파일이 뭐가있는지
  • 어떤 프레임워크나 라이브러리가 필요한지
  • 필요한 환경변수
  • 어떻게 구동해야 하는지에 대한 설명

Image

실행되고 있는 어플리케이션의 상태를 이미지로 만든것
변경이 불가능한 불변의 상태

Container

이미지를 고립된 환경인 컨테이너에서 어플리케이션을 구동!

준비

어쩌구 저쩌구 설치하고 cmd를 사용해서 체크.
도커 데스크탑보다는 명령어를 사용해야 도커 풀파워를 사용하는것!

$ docker images

에러가 안뜨면 성공

이미지 pull

  • docker hub: 필요한 소프트웨어를 찾음 (ex. app store)
  • pull: docker hub 에서 image를 다운로드 받는 행위
  • image: docker hub에서 찾은걸 내 컴퓨터로 다운로드하는 것 (ex. program)
  • run: 이미지를 실행시켜서 컨테이너를 만드는 것
  • container: 이미지를 실행하는 것 (ex. process)

docker hub

허브에 필요한 이미지 다운
https://hub.docker.com -> Explore -> Containers

  • OFFICIAL IMAGE 라벨: 도커에서 관리하는 믿을 수 있는 이미지
  • "docker pull httpd" 로 다운로드
// httpd 등등 다운로드
$ docker pull httpd
$ docker pull mysql
$ docker pull redis

// 다운로드 확인
$ docker images

도커 사용설명서

https://docs.docker.com/engine/reference/commandline/pull/

컨테이너 run

이미지가 컨테이너가 되고, 컨테이너 안에 있는 프로그램이 실행되면서 우리의 프로그램 사용이 가능해짐

도커 데스크탑 > images > run > Optional Settings > Container Name 지정

or

// 컨테이너 생성 => $ docker run [OPTIONS] IMAGE [COMMAND] [ARG...]
$ docker run httpd
$ docker run --name ws2 httpd // 이름이 ws2인 httpd 컨테이너를 생성할래

// 실행중인 생성한 컨테이너 확인
$ docker ps

// 실행중인 컨테이너 종료
$ docker stop ws2

// 컨테이너 시작
$ docker start ws2

// 모든 컨테이너 확인
$ docker ps -a

// 로그 확인
$ docker logs ws2
$ docker logs -f ws2 // 실시간 확인

// 컨테이너 삭제 - 컨테이너 종료 필요
$ docker rm ws2
// 컨테이너 삭제 - 실행중인거 한방에 삭제
$ docker rm --force ws2

// 이미지 삭제
$ docker rmi httpd

네트워크

컨테이너가 설치된 운영체제 = 도커 호스트
하나의 도커엔 여러개의 컨테이너가 설치됨

// port forwarding 호스트 8081: 컨테이너 80
$ docker run -p 8081:80 httpd

명령어 실행

$ docker exec [OPTIONS] CONTAINER COMMAND [ARG...]

참고
생활코딩 Docker 입문수업
엘리의 드림코딩 - 도커 한방에 정리

profile
계속해서 보완중

0개의 댓글