230614 WED
학습 주제 - Airflow 환경 구축을 위한 Docker와 K8S 실습 (3)
Docker 명령어 정리
Image
$ docker build --platform=linux/amd64 -t seungeonkim/hangman
$ docker images
$ docker image ls
$ docker rmi
$ docker image rm
Docker hub
$ docker login -u 사용자ID -p 사용자PW
$ docker pull seungeonkim/hangman
$ docker push seungeonkim/hangman
Container
$ docker create
$ docker run --name -p -v 이미지이름
$ docker ps
$ docker ps -a
$ docker ps -q
$ docker stop 컨테이너이름 (혹은 컨테이너ID)
$ docker start 컨테이너이름 (혹은 컨테이너ID)
$ docker restart 컨테이너이름 (혹은 컨테이너ID)
$ docker kill 컨테이너이름 (혹은 컨테이너ID)
$ docker pause 컨테이너이름 (혹은 컨테이너ID)
$ docker unpause 컨테이너이름 (혹은 컨테이너ID)
$ docker rm 컨테이너이름 (혹은 컨테이너ID)
Container logs
$ docker logs -f 컨테이너이름 (혹은 컨테이너ID)
$ docker logs --tail 100 컨테이너이름 (혹은 컨테이너ID)
exec
$ docker run --name=hangman seungeonkim/hangman
$ docker exec hangman cat/etc/hosts
Container detach & attach
$ docker run seungeonkim/hangman
$ docker run -d seungeonkim/hangman
$ docker attach 컨테이너이름 (혹은 컨테이너ID)
Docker Volume
필요성
- Docker Container가 실행되고 있다고 어떤 이유에서 갑자기 중단되면 데이터들은 어떻게 될까?
- 특정 소프트웨어가 Docker Container를 통해 일회성으로 동작하는 것이 아니라 계속해서 동작해야 한다면 데이터는 영구적으로 보관되어야한다! => Data Persistance
- 따라서 Docker Container내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 맵핑해주어야 한다! => 이게 바로 Docker Volume
정의
호스트 파일 시스템 폴더를 Docker Container 파일 시스템의 폴더로 마운트하는 것
* 파일 시스템에서 마운트란?
디스크와 같은 물리적인 장치를 파일 시스템의 특정 위치(폴더)에 연결해주는 것
예를 들어, 윈도우에서 USB를 꽂으면 내 컴퓨터에 새로운 :D 혹은 :E 폴더가 생기는 것
종류
Host Volumes : docker run -v를 실행할 때 페어로 지정
$ docker run -v /home/seungeon/logs:/var/lib/airflow/logs
# 앞이 호스트 파일 시스템 path, 뒤가 Docker Container 파일 시스템 path
Anonymous Volumes : docker run -v를 실행할 때 컨테이너 패스만 지정
$ docker run -v /var/lib/mysql/data
# Dockerfile에서 사용되는 방식, 호스트 쪽에 액세스 되지 않지만 재시작해도 유지된다.
Named Volumes : docker run -v를 실행할 때 이름과 컨테이너 path를 지정
$ docker run -v name:/var/lib/mysql/data
# 가장 선호되는 방식으로, 하나의 Volume을 다수의 container에서 공유하는 것도 가능하게 해준다.
# Volume을 Readonly로 지정하고 싶다면?
$ docker run -v name:/var/lib/mysql/data:ro
데모ㅗㅗㅗㅗㅗㅗㅗㅗㅗ
'[프로그래머스] 데이터엔지니어링 데브코스 1기 > TIL (Today I Learned)' 카테고리의 다른 글
TIL_day8 Beautifulsoup (1) | 2024.01.24 |
---|---|
셀레니움 크롬드라이버 설치(버전 이슈) (1) | 2024.01.21 |
TIL_day47 CI/CD, Docker와 Github Actions (1) | 2023.06.13 |
TIL_day46 Docker 개념 (1) | 2023.06.12 |
TIL_day41 Data Pipeline, ETL 코드 (0) | 2023.06.06 |