일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 코테 연습
- 팀 프로젝트
- 데브코스
- SQL
- django
- 코딩테스트
- AWS
- cloud platform
- 코딩 테스트
- 슈퍼셋
- VPC
- Tableau
- Snowflake
- Til
- beuatifulsoup
- HTML
- 데이터 시각화
- 데이터 엔지니어
- Selenium
- PCCP
- airflow
- superset
- GCP
- Spark
- Kafka
- Today
- Total
주니어 데이터 엔지니어 우솨's 개발일지
데이터 엔지니어링 48일차 TIL 본문
학습내용
Docker 명령 정리 - Image
- 이미지 빌드 : docker build --platform=Linux/amd64 -t 이미지 이름
- 이미지 보기 : docker images
docker image ls
- 이미지 삭제 : docker rmi
docker image rm
Docker 명령 정리 - Docker Hub
- 로그인 : docker login -u 사용자ID -p 사용자PW
- 도커 풀(가져오기) : docker pull wsh120/hangman
- 도커 푸쉬 : docker push wsh120/hangman
Docker 명령정리 - 컨테이너
- 도커 생성 : docker create
- 도커 실행 : docker run --name -p -v
- --name(컨테이너아이디 임의설정), -p(포트번호), -v(도커 볼륨설정)
- 도커 확인 : docker ps
Docker 명령정리 - Container logs
- 로그 확인 : docker logs -f 컨테이너이름
- 로그 100줄 확인 : docker logs --tail 100 컨테이너이름
Docker 명령 정리 -exec
: 이미 실행이 된 도커에 명령 실행
- 컨테이너 접속(쉘) : docker exec -it 도커ID sh
Docker 명령정리 - Contianer detach & attach
- 백그라운드에서 실행 : docker run -d 도커이름
- 도커 attach 실행(백그라운드에서 풀그라운드에서 실행하도록 함) : docker attach 도커ID(앞 네자리만 실행해도 가능)
Docker Volume의 필요성
- Docker Container가 실행되었다가 중단되면 데이터들이 계속유지하기 위함
=> 이를 보장하는 기능이 Docker Volumes = Data Persistence
- Docker Container내의 가상 파일 시스템과 호스트 시스템의 파일 시스템을 맵핑한다.(마운팅)
- Docker Container가 중단되더라도 모든 Airflow logs는 기록이 남게 된다.
=> Container와 Host 시스템이 특정폴더를 공유
- Container가 사라지더라도 데이터는 남는 것 !
Docker Volume 타입
- Host Volumes: docker run -v를 실행할 때 페어로 지정
- docker run -v /home/keeyong/logs:/var/lib/airflow/logs
- :앞이 호스트 파일 시스템 패스이고 뒤가 컨테이너 파일 시스템 패스임
- Anonymous Volumes: docker run -v를 실행할 때 컨테이너 패스만 지정
- docker run -v /var/lib/mysql/data
- 이 방식이 Dockerfile에서 사용되는 방식으로 호스트쪽에 액세스되지는 않지만 재시작해도 유지됨
- Named Volumes: docker run -v를 실행할 때 이름과 컨테이너 패스를 지정
- docker run -v name:/var/lib/mysql/data
- 가장 선호되는 방식임. 이 방식이 하나의 Volume을 다수의 컨테이너에서 공유하는 것도
가능하게 해줌
- 이 포맷으로 docker-compose에서도 사용됨
- Volume을 Readonly로 지정하고 싶다면?
- name:/var/lib/mysql/data:ro
이미지 생성시 Docker Volume 사용법
- Dockerfile
- Volume 명령을 통해 anonymous volume만 지정 가능
- docker-compose
- Host Volume이나 Named Volume을 사용하는 것이 일반적이다
Docker 환경 클린업 (1) - 커맨드라인
- Docker Desktop에서 모든 삭제하는 것이 가장 직관적
- Image를 삭제하려면 먼저 실행 중인 Container가 없어야함
- 따라서 맞는 순서는 먼저 Container를 중단하고 다음으로 Image를 삭제
- 컨테이너 삭제
- 원래는 docker container ls를 하고 Container ID를 개별적으로 docker container rm 뒤에 추가해야함
- 하지만 한번에 이를 실행하는 것이 더 좋음
- $ docker container rm -f $(docker container ls -aq)
- 이미지 삭제
- 원래는 docker image ls를 하고 Image ID를 개별적으로 docker image rm 뒤에 추가해야함
- 하지만 한번에 이를 실행하는 것이 더 좋음
- $ docker image rm -f $(docker image ls -q)
- 정말 다 삭제되었는지 확인
- docker ps
- docker images
네트워크 연결 확인법
- root 도커로 진입 (docker exec -it --user root vote sh)
1. apt update
2. apt install iputils-ping(핑 설치)
3. ping redis(다른 컨테이너이름)
=> 컨테이너 모두 삭제 후, 네트워크 새로 생성
1. docker network create mynetwork
2. 컨테이너 다시 재실행(--network mynetwork 을 붙인다)
- docker run -d --name=redis --network mynetwork redis
- docker run -d -e POSTGRES_PASSWORD=postgres --name=db --network mynetwork postgres
- docker run -d --name=vote -p 5001:80 --network mynetwork vote
- docker run -d --name=result -p 5002:80 --network mynetwork result
- docker run -d --name=worker --network mynetwork worker
'데브코스' 카테고리의 다른 글
데이터 엔지니어링 50일차 TIL (1) | 2024.06.05 |
---|---|
데이터 엔지니어링 49일차 TIL (0) | 2024.06.05 |
데이터 엔지니어링 47일차 TIL (0) | 2024.06.05 |
데이터 엔지니어링 46일차 TIL (1) | 2024.06.05 |
데이터 엔지니어링 45일차 TIL (1) | 2024.06.05 |