도커 2주차

Lee1231234·2022년 8월 16일
0

docker container의 데이터 유지

container를 다시 실행하면 기존에 기록했던 데이터들은 삭제됨
이를 해결하기 위한 방법 2가지가 있음 named volume, bind mount

named volume

docker volume create [볼륨의 이름]

다음과같이 볼륨을 만들어 데이터를 형성함

docker volume inspect [볼륨의 이름]

만든 볼륨의 정보를 알아내기 위한 커맨드.

docker run -p 27017:27017 -v [어플리케이션이름]:[볼륨의 위치] [저장소(mongo와 같은)]

bind mount

내가 원하는 볼륨을 컨테이너 내의 볼륨에 연결하는 기능.
코드가 수정될때마다 image를 생성하지않고 컨테이너를 띄워도 수정되게끔.

docker run -v {host_path}:{container_path} <docker_image>

docker network

docker끼리 통신이 가능하게 하는 방법

//네트워크 생성
docker network create test
//네트워크에 연결해서 컨테이너 실행
docker run -d -p 24017:24017 --network test --network-alias mongo mongo
//컨테이너에서 다른 컨테이너 호출
docker run -p 5000:5000 --network memo simple-memo-app:version3
/확인 해보기
docker run -it --network test nicolaka/netshoot
> dig mongo

mongoDB를 통한 예제
이때 실제 코드의 DBlink를 변경해줘야함.

docker 리소스 제한

공유해서 cpu,memory를 사용하기에 최악의 경우 필요한 프로세스를 삭제하는 경우가 생김
이를 제한하기 위한 방법

docker run -i -m [메모리량] [파일]
docker run -i --cpus=[cpu 사용량] [파일]
//컨테이너가 메모리 제한에 걸리면 삭제됨

리소스 제한 표준 문서

docker-compose

docker run...와 같은 cil 사용하지 않는법.

여러 컨테이너를 편리하게 실행하기 위한 도구
YAML 파일을 통해 옵션을 정의가능

  • YAML
    YAML Ain't Markup Language 데이터 저장하는 파일 포맷
//기존 커맨드
docker build . -t lee1231234/docker-memo:latest
docker run -d -p 5000:5000 lee1231234/docker-memo:latest
//yaml 생성
version: "3.9"  //어떤 버전을 사용
services:
  flask: 
    build:
      context: .
    volumes:
      - ./templates:/templates
    ports:
      - "5000:5000"
  mongo://DB 연결
    image: mongo:latest //어떤 이미지를 사용할건지
    volumes:// DB의 데이터 저장
      - mongo:/data/db/
    ports:
      - "27017:27017"

volumes:
  mongo:

컨테이너 삽입 삭제 방법

docker-compose up -d
docker-compose down

사용하지 않는 docker 리소스 정리

docker ps -a // 예전에 생성했던 컨테이너를 볼수있음(멈춰있는것들)
docker images 
docker network ls
docker volume ls
docker system prune -a //멈춰있는 컨테이너 사용하지않는 image,빌드 캐시,네트워크 삭제

##Docker 이미지가 빌드되는 형식 (컴파일)
layer가 새로 생기는 방식으로 이미지를 빌드함
자주 변경되는 부분이 위쪽에 있다면 layer caching을 사용하지 못함.

dockerignore
gitignore처럼 push할 파일을 임의적으로 제외하는것.

image 크기를 축소하기
tag를 사용하기 (파이썬)
alpine
작고 보안에 집중한 image
파이썬 기준으로 pip install을 할 때 불리함.
buster,jessie,stretch (os의 코드네임)
debian에서 만든 linux를 기반으로 만든 이미지
slim
실행에 필요한 환경만 만들어둔 이미지
기존 파이썬에 비해 1/5정도의 크기를 가짐

profile
not null

0개의 댓글