Docker image & container

O0·2022년 6월 7일
0

Docker

목록 보기
2/3
post-thumbnail

Docker image & container


1. image & container 정의

  • 컨테이너는 애플리케이션을 실행하는 전체환경 등 무엇이든 포함하는 작은 패키지이다.
  • 컨테이너는 소프트웨어 유닛을 갖고 있는데 그것이 애플리케이션을 실행하도록 해준다.
  • 이미지는 템플릿, 컨테이너의 블루프린트(설계도)가 될 것이다.
    - 즉, 이미지는 모든 설정 명령과 모든 코드가 포함된 공유 가능한 패키지이다.
    컨테이너는 이러한 이미지의 인스턴스이다. 이미지를 기반으로 하는 컨테이너를 실행한다

2. 외부 이미지 사용

  • DOCKER HUB에서 이미지 가지고오기
  • cmd > docker run node > 자동으로 docker hub에서 node 이미지를 가지고 와서 설치한다.

3. dockerfile을 사용하여 자체 이미지 빌드

  • dockfile 생성 (자체 이미지 생성 빌드할 때 실행하려는 도커에 대한 명령포함 로컬허브이미지)
  • docker run -p 3000:80 이미지ID : publish 통해서 내 local 3000이 도커의 80번으로 들어가도록!
  • 소스코드를 변경하려면 docker build . 하여 이미지를 다시 스냅샷 찍어야 한다.

4. 레이어 기반 접근방식(이미지 속 컨테이너)

5. 도커 명령어

  • docker –help
  • docker ps : 살아있는 도커 컨테이너 보여줌
  • docker start NAMES : 이전에 DOCKER 컨테이너 실행 (default는 detach 모드)
  • docker run -p 3000:80 -d 이미지id
  • docker logs NAMES
  • docker attach NAMES
  • docker run -i (i :interactive 컨테이너에 무언가를 입력할 수 있다, t : tty (terminal))
  • docker run -it 이미지id, docker start -ai NAME
  • docker images, docker rmi [IMAGEID],
  • docker image prune, docker images inspect [imageid]
  • docker run -p 3000:80 -d -rm imageID
  • docker cp dummy/. quizzical_hofstadter:/test
  • docker run -p 3000:80 -d --rm --name gons 390ae7841551
  • docker build -t goals:latest .

6. 이미지 공유

  • DOCKER FILE 상위 경로를 ZIP 파일로 만들어서 공유.
  • DOCKER FILE이 아닌 완성된 이미지로 작업.
  • docker tag node:latest tjfbwkfy64/node-hello-world : 첫번째 image와 복사
  • docker push tjfbwkfy64/node-hello-world : push작업
  • docker pull tjfbwkfy64/node-hello-world

핵심

  1. 이미지는 읽기/쓰기 엑세스 권한이 있는 인스턴스를 실행하는 컨테이너의 ‘블루프린트’이다.

  2. 여러 컨테이너가 서로 간섭하지 않고 동일한 이미지를 기반으로 서로 완전히 격리돼 있다.

  3. 컨테이너는 이미지를 기반으로 하는 격리된 소프트웨어 유닛이다. 이미지의 인스턴스

  4. 이미지의 모든 명령은 캐시 가능한 레이어를 생성한다. 레이어는 이미지 재구축 및 공유이다.

  5. Docker build . : 이미지생성, docker run 이미지id : 이미지id 컨테이너생성

  6. 하나의 동일한 이미지를 기반으로 하는 여러 컨테이너를 실행할 수 있으며, 다양한 컨테이너를 위해 여러 이미지를 생성할 수 있다. 이러한 컨테이너가 이미지 위에 작은 레이어로 구성된다.

  7. docker pull이용하여 다운로드하고 docker push로 저장소에 올릴 수 있다.

  8. 레이어 개념은 빌드 속도를 최적화하기 위해 존재한다. 도커는 레이어를 캐시할 수 있다.

    * docker run -p 3000:80 -it –name gong -d –rm bmi-app:1
profile
O0

0개의 댓글