티스토리 뷰

 

🔗 컨테이너와 호스트 사이에 파일 복사    

### 기본적으로 docker cp 원본경로 복사할경로 ###

# 호스트 -> 컨테이너로 파일 복사
# docker cp 호스트_경로 컨테이너_이름:컨테이너_경로
docker cp C:\Users\woori\Documents\index.html exapache:/usr/local/apache2/htdocs/

# 컨테이너 -> 호스트로 파일 복사
# docker cp 컨테이너_이름:컨테이너_경로 호스트_경로
docker cp exapache:/usr/local/apache2/htdocs/index.html C:\Users\woori\Documents

 

 

🔒 스토리지 마운트

  - 볼륨이란? 스토리지의 한 영역을 분할한 것. 즉, 하드디스크나 SSD를 분할한 하나의 영역임

  - 마운트란? 연결하다 그 의미 그 자체

  - 그럼 볼륨마운트란? 대상을 연결해 운영체제 또는 스프트웨어의 관리하에 두는 일.
    ex) USB랑 PC는 연결되어있지 않지만 USB를 PC에 꽂으면 연결되어 사용할 수 있는거랑 비슷함

  • 바인드 마운트
    • 컨테이너와 파일을 연동하는 데 많이 사용됨. *LAMP 스택을 실무에 활용할 때 필수적임
    • 도커가 설치된 컴퓨터의 문서 폴더 등 도커엔진에서 관리하지  않는 영역의 기존 디렉터리를 컨테이너에 마운트하는 방식이다.
    • 디렉터리가 아닌 파일 단위로도 마운트가 가능하다.
    • 자주 사용하는 파일을 두는 데 사용한다.
    • 기존과 동일한 방식으로 파일을 사용할 수 있다.
  • 볼륨 마운트
    • 도커 엔진이 관리하는 영역 내에 만들어진 볼륨을 컨테이너에 디스크 형태로 마운트한다.
    • 이름만으로 관리가 가능해서 다루기 쉽지만
    • 볼륨에 비해 직접 조작하기 어려움.
    • 임시목적으로 사용하거나 자주는 쓰지 않지만 지우면 안되는 파일들을 목적으로 많이 사용함
    • 운영체제 또는 환경에 따라 명령어가 달라지는 등의 의존성 문제가 일어나지 않는다.(ex. 윈도우->macOS로 변경했을 때 경로 수정 안해도 됨)
    • 볼륨에 접근할 때 무조건 도커 컨테이너를 경유해야 한다. 백업의 절차도 매우 복잡함
항목 볼륨 마운트 바인드 마운트
스토리지 영역 볼륨 디렉터리 또는 파일
물리적 위치 도커 엔진의 관리 영역 어디든지 가능
마운트 절차 볼륨을 생성한 후 마운트 기존 파일 또는 폴더를 마운트
내용 편집 도커 컨테이너를 통해서 일반적인 파일과 같이
백업 절차가 복잡함 일반적인 파일과 같이

* LAMP스택 ? : 웹 개발에서 널리 사용되는 오픈소스소프트웨어 세트로, Linux(운영체제), Apache(웹서버), Mysql(데이터베이스 관리시스템), PHP(서버 사이드 스크립팅 언어)로 구성되어있음.

 

🧵 Image 만들기

  •   방법1. commit 커맨드로 컨테이너를 이미지로 변환
    • 도커환경에서 사용하고있는 컨테이너를 commit 명령어를 사용해서 이미지로 변환한다.
docker commit 컨테이너_이름 새로운_이미지_이름

 

  • 방법2. Dockerfile 스크립트로 이미지 만들기
    • 바인드 마운트 한 로컬 폴더에서 Dockerfile을 작성하고, docker환경에서 build한다.
docker build -t 생성할_이미지_이름 재료_폴더_경로

## 여기서 -t는 태그를 주는 옵션
# Dockerfile 스크립트의 예시

FROM 이미지_이름
COPY 원본_경로 대상_경로
RUN 리눅스_명령어
...

 

🧾 도커 컴포즈

  ✔ 도커 컴포즈의 개념

      - 시스템 구축과 관련된 명령어를 하나의 텍스트파일(YAML)에 기재해 명령어 한 번에 시스템 전체를 실행하고 종료, 폐기한다.

      - 데이터베이스와 애플리케이션 컨테이너를 함께 시작하고 싶다거나, 환경을 대량으로 생성해야 할 때 유용

      - 산출물이 텍스트 파일 형태로 남는다 (관리에 유용함)

      - 도커 컴포즈는 도커 엔진과는 별개로 따로 설치해야한다 (Windows, macOs는 아마 docker 다운로드하면서 같이 받아졌을거임. Linux만 별개 설치)

      - 도커 컴포즈를 사용하려면 docker-compose.yml 이름을 사용해야 한다.

      - docker-componse.yml파일은 한 폴더에 하나만 있을 수 있다.

 

  ✔ 도커 컴포즈 커맨드

      -  up command  : (≒ docker run) 이미지를 내려받고 컨테이너를 생성 및 실행

      -  down command  : (≒ docker rm) 컨테이너와 네트워크를 정지 및 삭제. 볼륨과 이미지는 삭제하지 않는다

 

  ✔ 도커 컴포즈 vs Dockerfile

      - 도커 컴포즈 : 네트워크, 볼륨을 포함하여 컨테이너 run 명령어를 모아놓은 파일

      - Dockerfile : 네트워크나 볼륨은 포함하지 않고, 이미지를 만들기 위한 파일

 

  ✔ 도커 컴포즈 파일의 항목

항목 설명
version Docker Compose 파일의 버전을 정의합니다. 예: version: '3.8'
services 어플리케이션의 각 서비스를 정의하는 섹션입니다.
image 사용할 Docker 이미지의 이름과 태그를 지정합니다.
build Dockerfile을 사용하여 이미지를 빌드하는 설정입니다.
ports 컨테이너의 포트를 호스트와 매핑합니다. 예: "호스트포트:컨테이너포트"
volumes 호스트와 컨테이너 간의 데이터 공유를 위한 볼륨을 정의합니다.
environment 컨테이너에서 사용할 환경 변수를 설정합니다.
depends_on 서비스 간의 의존성을 정의합니다.
networks 사용자 정의 네트워크를 설정하여 서비스 간의 통신을 관리합니다.
restart 컨테이너가 종료되었을 때 자동으로 재시작할 정책을 설정합니다.
command 서비스 시작 시 실행할 명령어를 지정합니다.
healthcheck 컨테이너의 상태를 확인하기 위한 헬스 체크를 정의합니다.

 

  ✔ docker-compose.yml 파일 예시

version: '3.8'

services:
  web:
    image: nginx:latest
    ports:
      - "80:80"
    volumes:
      - ./data:/app/data
    environment:
      - NODE_ENV=production
    restart: always
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: example
    volumes:
      - db_data:/var/lib/mysql

volumes:
  db_data:

 

  ✔ 작성한 docker-compose.yml파일 실행

# docker-compose -f 파일경로/docker-compose.yml up 옵션
docker-compose -f C:\Users\***\Documents\com_folder\docker-compose.yml up -d

# docker-compose -f 파일경로/docker-compose.yml down 옵션
docker-compose -f C:\Users\***\Documents\com_folder\docker-compose.yml down

 

 

 

 

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
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
글 보관함