ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 도커와 컨테이너 (컨테이너 생성 및 Dockerfile 사용)
    CS 공부/DevOps 2024. 9. 5. 16:29
    용어 의미
    컨테이너 앱이 구동되는 환경까지 감싸서 어디서든 쉽게 실행할 수 있도록 하는 격리 기술
    도커 컨테이너를 다루는 도구 중 가장 유명한 것
    쿠버네티스 컨테이너를 오케스트레이션 하는 도구
    오케스트레이션 여러 서버에 컨테이너 분산 배치, 문제 생긴 컨테이너 교체 등 컨테이너 분산 배치, 상태 관리 및 컨테이너 구동환경까지 관리

     

    리눅스에서 도커 설치

    • 도커 옛버전 삭제
    sudo apt-get remove docker docker-engine docker.io containerd runc

     

     

    • 도커 설치
    sudo apt-get install docker-ce docker-ce-cli containerd.io

     

    • 설치되었는지 확인
    docker--version

     

    • 도커 실행
    sudo systemctl status docker
    sudo /etc/init.d/docker start

     

    • 도커 이미지 빌드
    docker image build -t 이미지명[:태그명] Dockerfile 경로

     

    • 도커 이미지 pull
    docker image pull <repository명[:태그명]>

     

     

     

     

    명령어 모음

    명령어 설명
    docker ps 실행중인 컨테이너 목록 확인
    docker ps -a 전체 컨테이너 목록 확인
    docker container ls -a 전체 컨테이너 목록 확인
    docker start 컨테이너ID 컨테이너 시작
    docker attach 컨테이너ID 컨테이너 접속
    docker stop 컨테이너ID 컨테이너 멈춤
    docker run 컨테이너ID 컨테이너 생성 및 시작
    docker run -it 컨테이너ID 컨테이너 생성 및 시작 및 접속
    docker rm 컨테이너ID 컨테이너 삭제
    docker exec -it 컨테이너ID /bin/bash 실행되고 있던 컨테이너 접속
    exit 컨테이너 빠져나오기

     

    Dockerfile

    • 도커 이미지를 만들기 위한 설정파일
    • 구성요소
      • FROM : 빌드할 베이스 이미지 지정
        • ex.FROM ubuntu:latest
      • RUN: 컨테이너에서 실행할 명령어 지정
        • ex. RUN apt-get update
      • ADD: 컨테이너에서 배치할 파일이나 디렉토리 지정
        • ex. ADD ./message /message (로컬의 message 파일을 컨테이너의 루트 디렉토리에 배치)
      • CMD: 컨테이너 시작할 때 실행할 명령어 지정 (이미 빌드된 이미지 시작할 때)
      • ENTRYPOINT: CMD와 동일. CMD에서는 param 값을 대체할 수 있지만 ENTRYPOINT는 불가능
      • LABEL: key-value 형식의 메타데이터를 이미지에 추가
      • ENV: LABEL과 동일하지만 메타데이터 대신 환경변수 설정
      • VOLUME: 컨테이너 내의 특정 디렉토리 지정. 특정 디렉토리가 외부 경로에 마운트되어 컨테이너가 삭제되어도 디렉토리의 정보는 보존 가능

     

     

    Dockerfile 생성

    # 디렉토리 생성 및 이동
    mkdir test
    cd test
    
    # Dockerfile 생성
    touch Dockerfile
    vi Dockerfile
    
    # Dockerfile 내용
    FROM ubuntu:latest
    MAINTAINER myname # 관리자: myname
    RUN apt-get install -y
    ADD testfile1 /testfile2
    VOLUME /mountcheck # 컨테이너 생성할 때 /mountcheck 디렉토리 생성
    
    # 이미지 빌드
    docker build --tag Myimage:1.0
    
    # 이미지 확인
    docker image ls
    
    # 이미지 생성,실행,접속
    docker run -it Myimage:1.0​

     

     

     

    Docker 컨테이너 실행 명령어

    docker run --restart=always -it \ # 컨테이너 종료되면 항상 다시 시작
       --gpus '"device=0"' \ # GPU 번호 지정 
       --name yoonpyo \ # 컨테이너 이름 지정 
       -e DISPLAY=$DISPLAY \ # 호스트 GUI 애플리케이션 실행 가능하게 함
       -v /tmp/.X11-unix:/tmp/.X11-unix \ # socket mount하여 X11 Forwarding 가능하게 함
       -v /data1/yoonpyo:/data/ \  # 로컬의 /data1/yoonpyo 폴더를 컨테이너의 /data 폴더로 마운트
       -p 39001:22 \ # 호스트와 컨테이너 포트 매핑
       -p 39003:8888 \ 
       pytorch/pytorch:2.4.0-cuda12.1-cudnn9-runtime \ #이미지 선택
       /bin/bash # 컨테이너 내에서 bash 셀 실행

     

    'CS 공부 > DevOps' 카테고리의 다른 글

    Kubernetes Orchestrations 장점  (0) 2024.12.18
    Kubernetes 기본 구조와 명령어  (0) 2024.10.23
    Kubernetes (쿠버네티스) 이론  (0) 2024.10.22
    Docker 이미지 빌드 및 배포  (0) 2024.10.22
Designed by Tistory.