앞선 포스트에서 언급한 바와 같이, 데이터 공유 및 볼륨 마운트에 대해 알아보고자 한다.
데이터 공유라 하면, Host - Container 간 공유일 수 있고, Container - Container 간 공유일 수 있다.
# Host -> Container 데이터 이동
docker cp [host 파일경로] [container name]:[container 내부 경로]
(예시)
docker cp ~/data/test.md my_container:/root/data/
# Container -> Host 데이터 이동
Host -> Container 로 이동과 반대로 명령을 하면 이동이 된다.
docker cp [container name]:[container 내부 경로] [host 파일경로]
(예시)
docker cp my_container:/root/data/test.md ~/data/
위의 두 명령을 보게된다면, 컨테이너 간의 공유도 비슷한 방식으로 할 수 있지 않을까? 라는 생각이 들 것이다.
docker cp [container1 name]:[container1 내부 경로] [container2 name]:[container2 내부 경로] 와 같이 말이다.
하지만 실제로 이 명령을 실행하게 되면, 아래 그림과 같은 에러를 뱉어낸다.
컨테이너 간 데이터를 주고 받는 것을 지원하지 않기 때문에, 우리는 다른 방법을 사용해서 컨테이너 간의 공유를 해야한다.
볼륨 마운트를 통해, Container 간의 공유가 가능해질 수 있다. 사실, Host - Container 간에 마운트를 하는 방식이 앞서 소개했던 cp를 통한 단발성 데이터 전송보다는 훨씬 편리하고 유용하다.
자 이제, 볼륨마운트에 대해 알아보자.
# Container -> Container 데이터 공유(마운트)
# 마운트할 볼륨 생성
docker volume create [볼륨명]
docker volume create mount_vol
# 볼륨 마운트 명령
docker run <option> -v <volume-name>:<container-route> <image-name>
# Jupyter Notebook 볼륨 마운트&실행
docker run -d -p 32888:8888 \
-v mount_vol:/tf/mount_vol/ \
--name jupyter -e ROOT=TRUE -e PASSWORD=password tensorflow/tensorflow:latest-jupyter
# Rstudio 볼륨 마운트&실행
docker run -it -p 32787:8787 \
-v mount_vol:/home/rstudio/mount_vol \
--name rstudio -e ROOT=TRUE -e PASSWORD=password rocker/verse:3.6.2
# AIirflow 볼륨 마운트&실행
docker run -it -p 32080:8080 \
-v mount_vol:/opt/airflow/mount_vol \
--entrypoint=/bin/bash \
--name airflow \
apache/airflow:2.0.0-python3.8 \
-c '( \
airflow db init && \
airflow users create --username admin --password admin --firstname Anonymous --lastname Admin --role Admin --email admin@example.org \
); \
airflow webserver & \
airflow scheduler \
'
이제 각 컨테이너 환경에서 mount_vol을 볼수 있을 것이고, 컨테이너별 '경로/mount_vol/' 에 파일 또는 폴더가 공유가능해진다.
다음 시간에는 자원 컨테이너 별 자원할당에 대해 알아보고자 한다.
'Data Engineering(Pipeline, Hadoop...) > Docker' 카테고리의 다른 글
Docker Container 날짜(date) 한국시간(KST)으로 변경하기 (0) | 2022.10.20 |
---|---|
Docker 파헤치기 4(컨테이너 이미지화[commit] -> 배포[push]) (0) | 2022.09.24 |
Docker 파헤치기 3(컨테이너 자원 할당) (0) | 2022.09.23 |
Docker 파헤치기 1(기본 명령어 및 옵션) (1) | 2022.09.21 |
Docker 컨테이너(jupyter)로 khaiii 형태소분석기 실행해보기 (0) | 2022.09.21 |