용어 |
의미 |
컨테이너 |
앱이 구동되는 환경까지 감싸서 어디서든 쉽게 실행할 수 있도록 하는 격리 기술 |
도커 |
컨테이너를 다루는 도구 중 가장 유명한 것 |
쿠버네티스 |
컨테이너를 오케스트레이션 하는 도구 |
오케스트레이션 |
여러 서버에 컨테이너 분산 배치, 문제 생긴 컨테이너 교체 등 컨테이너 분산 배치, 상태 관리 및 컨테이너 구동환경까지 관리 |
리눅스에서 도커 설치
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 경로
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 : 빌드할 베이스 이미지 지정
- RUN: 컨테이너에서 실행할 명령어 지정
- 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 셀 실행