[도커] - 이미지와 컨테이너

yeom yaloo·2024년 2월 13일
0

FISA

목록 보기
51/61
post-thumbnail

도커와 개발, 운영

[개발 환경]

1. 도커를 이용한 방식

app
ㅤ- docker image(도커 이미지화)
ㅤㅤ- 도커 허브로 공유
ㅤㅤ- 도커 파일을 이미지화 하기
ㅤ- docker container(도커 컨테이너화)

[운영 관점]

1. 무중단 실행

운영 관점
ㅤ- 실행
ㅤ- 시작 -> 실행(정상 실행이 되는지 유지 여부를 모니터링)
ㅤㅤㅤㅤ-> 운영 관리

2. 빌드

  • 개발자가 개발한 코드를 서버에 배포하기 위한 구성을 의미한다.
    • jar or war

3. 배포

  • 서버에 세팅해서 서비스할 수 있는 상황을 의미한다.

image? container?

[도커에서의 이미지와 컨테이너]

1. 차이점

  • 이미지를 동적인 형태로 만든 것이 컨테이너의 개념이다.
  • 컨테이너로 만드는 것은 특정 OS나 특정 환경이 경량 가상화로 구현된다는 것을 의미한다.

도커와 image

[이미지란?]

1. 도커 이미지란?

  • 파일로 어플리케이션 실행에 필요한 독립적 환경을 포함한 것을 의미한다.
  • 도커 이미지에서는 소스 코드, 라이브러리, 종속성, 응용 프로그램을 실행하는데 필요한 기타 파일을 포함하는 불변 파일이다.
  • 이는 템플릿이기 때문에 시작하거나 실행할 수 없다.
    • 컨테이너의 경우엔 수정이 가능하다.

2. 장점

  • 불변이기 때문에

[이미지 구조]

[이미지]


도커와 container

[컨테이너란?]


도커 명령어

[명령어 사용 전에]

0. 사용 이유

  • 우분투 사용 시 해당 명령어를 특정한 패키지 다운로드 전에 항상 선행으로 해주는 것이 좋다.
  • debian 서버와의 싱크를 맞추기 위해서이다.
    • 패키지들을 최신으로 업데이트하는 것이 아니고 설치 가능한 리스트를 업데이트 하는 작업이 apt update와 apt upgrade이다.

1. apt update

  • sudo apt update

2. apt upgrade

  • sudo apt upgrade

[컨테이너 명령어]

1. 컨테이너 실행 & 검색 & 중지

  • docker start containerId: 실행
  • docker ps: 실행 중인 컨테이너 검색
  • docker ps -a: 실행 중이지 않은 컨테이너까지 모조리 전부 검색
  • docker stop: 중지

2. [컨테이너 삭제]

2-1. 부분 삭제

  • docker ps -a: 현재 실행 중이지 않은 컨테이너까지 모두 출력한다.
  • docker rm containerId: 컨테이너 아이디를 이용해서 해당 도커 컨테이너 삭제

2-2. 전체 삭제

  • docker rm $(docker ps -aq): 현재 도커 내부의 있는 컨테이너 모두 삭제하는 명령어

2. 컨테이너에 명령어 사용하기 싶다면? (bash)

  • docker exec -it <컨테이너명 or 컨테이너Id> bash

[이미지 명령어]

1. 이미지 검색

  • docker images

2. 이미지 삭제

  • docker rmi 이미지명: 이미지 삭제
  • docker rmi -f 이미지명: 강제 삭제
  • $ docker rmi $(docker images -q): 도커내의 이미지 전체 삭제

[이미지 pull 후 컨테이너 생성]

1. 이미지 다운로드 후 컨테이너 직접 생성하기

1-1. 이미지가 존재하는지 검색

  • docker search tomcat:9.0

1-2. 이미지 pull

  • docker pull tomcat:9.0

1-3. 컨테이너 생성

  • docker create [옵션] 이미지 이름:[Tag(버전)]

2. 이미지 다운로드 없이 컨테이너 실행으로 컨테이너 생성하기

해당 작업이 1번의 작업과 다른 점은 이미지를 먼저 땡겨오지 않는다는 것이다.
이 작업은 도커를 실행시킴과 동시에 없는 이미지를 알아서 받아오는 작업이 진행되기 때문에 더욱 편리하게 사용이 가능하다.

2-1. 컨테이너 실행

  • $ docker run (<옵션>) <이미지 식별자> (<명령어>) (<인자>)

  • docker run --name mytomcat9 -p 8080:8080 tomcat:9.0

    • 해당 tomcat9 버전을 mytomcat9라는 이름으로 사용하겠다는 의미이다.

    • 해당 톰캣의 포트를 8080을 컨테이너에서 8080으로 사용하겠다는 의미다.

      2-2. openjdk와 가튼 이미지를 컨테이너로 바로 실행할 경우에?

      openjdk 이미지 구성
      실행 가능한 os
      컨테이너 생성
      docker ps -a로는 확인 가능
      docker ps는 확인 불가
      서버는 24시간 365일 구동중인 컨테이너를 확ㅇ

      -> 리소스 절약 전략이다.


      컨테이너 로그

      [컨테이너 로그 기록 확인]

      1. 이미 기록된 내용 확인하는 방법

  • docker logs <컨테이너명 or 컨테이너 id>

    2. 실시간 기록 내용 확인하는 방법

  • docker logs -f <컨테이너명>


    [netstat]

  • sudo apt install net-tools

    • 도커 내부 bash에서 해당 network state 확인을 위해서 사용하는 명령어를 사용하기 위해서 다운 받는 명령어이다.
  • netstat -lntp |grep 80: 80포트를 사용하는 것을 출력하는 명령어

profile
즐겁고 괴로운 개발😎

0개의 댓글