Docker/Kubernetes - (2) Docker image/container

2022. 3. 12. 16:34·AI Engineering/MLOps
Enviroment: Ubuntu 18.04

1. Docker image/container

Docker Engine에서 사용하는 기본 단위가 container와 image이고 image는 container를 생성할때 필요한 요소입니다.

1.1 Docker image

Docker image 특성

  • 여러 개의 계층으로 된 바이너리 파일
  • 컨테이너를 생성하고 실행할 때 읽기 전용으로 사용
  • 도커 명령어로 image 다운 가능

Docker image 구성은 다음과 같습니다.

docker image

 

  • 저장소
    • 이미지가 저장된 장소를 의미하고 명시되지 않을경우 docker hub라는 공식 이미지 저장소에서 해당 이미지를 가져옵니다.
  • 이미지 이름
    • 가져올 이미지를 뜻하고 그에 대한 이름은 어떤 역할을 하는지를 나타냅니다.
  • 태그
    • 이미지의 버전 관리 혹은 리비전 관리에 사용됩니다. latest는 등록된 버전 중 가장 최신버전을 의미합니다.

1.2 Docker container

위에서 설명한 image로 container를 생성하면 해당 이미지의 파일시스템과 격리된 시스템 자원 및 네트워크를 사용할 수 있는 독립적 공간이 생성됩니다.

다음과 같이 한 image로 여러개의 docker container를 생성가능하며 생성된 각 container는 독립된 공간을 가지기 때문에 각 container안에서 새로 설치할 파일은 다른 container에 영향을 주지 않습니다.

docker container

2. Docker image 다운로드 및 container 생성

docker engine의 pull명령어로 docker hub(docker image들이 저장되어있는 공식적인 장소)에서 ubuntu:16.04라는 docker image를 다운받아 봅시다.

docker pull ubuntu:16.04

image가 잘 다운되었는지 확인하려면 "docker images"로 확인가능합니다.

docker images

docker engine의 run명령어로 ubuntu:16.04 image로 container생성을 해봅시다.

docker run -i -t  ubuntu:16.04

다음과 같이 container안으로 들어오게 되고 해당 container안에서 ubuntu 버전 확인시 16.04임을 확인가능합니다. 참고로 -i -t는 컨네이터 내부로 들어가게 하여 상호작용 가능한 셸환경을 설정하는 것입니다.

docker run

 

docker run에 유용한 옵션은 다음과 같습니다.

--name [명칭]
  • docker run -i -t --name myubuntu ubuntu:16.04
  • name옵션은 container의 명칭을 정해주는 것입니다.
-p [포트]
  • docker run -i -t -p 88:80 ubuntu:16.04
  • -p 뒤의 88(호스트의 포트):80(컨테이너 포트)로 호스트와 컨테이너의 포트를 바인딩시킵니다.
    컨테이너안의 apache 웹서비스가 설치되어 있고 해당 웹서비스가 80포트를 사용하게될 경우 다음과 같은 접근이 가능합니다.
  • 외부에서 호스트의 IP의 88번 포트로 접근
  • 88번 포트는 컨테이너의 80번 포트로 포워딩
  • 컨테이너 안의 웹서버 접근 가능
-e [환경설정]
  • docker run -i -t -e MYSQL_ROOT_PASSWORD=password mysql
  • -e옵션은 컨테이너 내부의 환경변수를 설정합니다. DB(mysql)과 같은 특정 image에서는 e옵션을 통해 환경설정을 안해줄경우 실행이 되지않는 경우가 있으니 주의하세요.
-v (볼륨)
  • docker run -i -t -v /home/wordpress_db:/var/lib/mysql mysql:5.7
  • -v옵션 뒤의 home/wordpress_db(호스트의 볼륨):/var/lib/mysql(컨테이너 볼륨)은 호스트의 디렉터리와 컨테이너의 디렉터리를 공유한다는 뜻입니다.
--workdir (실행 디렉터리)
  • docker run -i -t --workdir="/var/www" nginx:latest
  • --workdir 옵션 뒤의 /var/www 디렉토리에서 프로세스가 실행된다라는 뜻입니다.

3. Docker container관련 유용한 명령어

docker engine의 유용한 명령어는 다음과 같습니다.

  1. 정지된 container 포함하여 모든 container 출력
    • docker ps -a
  2. 실행 중인 컨테이너 정지/삭제
    • docker stop/rm ${CONTAINER ID 또는 NAMES}
  3. 실행 중인 모든 컨테이너 삭제
    • docker container prune
  4. 정지된 컨테이너 시작/접속
    • docker start/attach ${CONTAINER ID 또는 NAMES}
반응형
저작자표시 (새창열림)

'AI Engineering > MLOps' 카테고리의 다른 글

Docker/Kubernetes - (6) Docker daemon  (0) 2022.03.15
Docker/Kubernetes - (5) Dockerfile  (0) 2022.03.14
Docker/Kubernetes - (4) docker image 이해 및 배포  (0) 2022.03.14
Docker/Kubernetes - (3) docker container 네트워크/로깅/제한  (0) 2022.03.13
Docker/Kubernetes - (1) Docker란?  (0) 2022.03.12
'AI Engineering/MLOps' 카테고리의 다른 글
  • Docker/Kubernetes - (5) Dockerfile
  • Docker/Kubernetes - (4) docker image 이해 및 배포
  • Docker/Kubernetes - (3) docker container 네트워크/로깅/제한
  • Docker/Kubernetes - (1) Docker란?
Sin-Han Kang
Sin-Han Kang
Explainable AI (XAI), Model Compression, Image and Video Encoding and NAS
    250x250
  • Sin-Han Kang
    da2so
    Sin-Han Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 (78)
      • AI Engineering (40)
        • TensorFlow (10)
        • PyTorch (6)
        • MLOps (15)
        • NVIDIA (5)
        • OpenVINO (3)
      • AI paper review (6)
        • Explainable AI (5)
        • Model Compression (10)
        • Mobile-friendly (7)
      • Computer Science (6)
      • 일상 (4)
  • 블로그 메뉴

    • Home
    • About me
    • Guest book
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    TFLite
    Model Compression
    Mediapipe
    pytorch
    Python
    object detection
    TensorFlow.js
    Airflow
    style transfer
    Explainable AI
    kubernetes
    docker
    OpenVINO
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Sin-Han Kang
Docker/Kubernetes - (2) Docker image/container
상단으로

티스토리툴바