공부합시다!/Container
Docker: cp & tar 다중 파일 복사
간서치
2023. 1. 5. 00:14
728x90
디렉토리내에 많은 파일이 존재한다거나 /proc, /sys, /dev/, tmpfs와 컨테이너내에 사용자가 생성한 디렉토리를 local 시스템으로 가져온다거나 local system의 디렉토리를 container로 복사하기 위해서는 tar를 사용하셔야 합니다.
1. container -> local system
2. local system -> container
순서로 진행 합니다.
1. mysql container 생성 후 /var/lib/mysql 디렉토리내의 모든 파일을 local system의 /root/mysql 로 이동
1.1. /root/mysql 디렉토리 생성
1.2. mysql:5.7 image를 이용하여 m1 container 생성
1.3. m1 container의 /var/lib/mysql 내의 모든 파일을 /root/mysql 디렉토리 이동 후 파일 확인
1.4. m1 container의 /var/lib/mysql 내의 mysql 파일 확인
# mkdir ./mysql
# ls ./mysql/
# docker run -itd -p 63306:3306 -e MYSQL_ROOT_PASSWORD=It1 --name m1 mysql:5.7
사용 예시
#docker exec CONTAINER tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | tar Cxf DEST_PATH -
# docker exec m1 tar Ccf /var/lib/mysql - . | tar Cxf ./mysql -
# ls ./mysql/
auto.cnf client-cert.pem ib_logfile0 ibtmp1 performance_schema server-cert.pem
ca-key.pem client-key.pem ib_logfile1 mysql private_key.pem server-key.pem
ca.pem ib_buffer_pool ibdata1 mysql.sock public_key.pem sys
# docker exec m1 ls /var/lib/mysql
2. local system의 /root/mysql 디렉토리내의 모든 파일을 container의 /var/mysql 디렉토리로 이동
2.1. /root/mysql 디렉토리의 파일을 tar 후 m1 container의 /tmp 디렉토리로 복사
2.2. m1 container의 /var/mysql/디렉토리 확인
사용 예시
# tar Ccf $(dirname SRC_PATH) - $(basename SRC_PATH) | docker exec -i CONTAINER tar Cxf DEST_PATH -
# tar Ccf ./mysql - mysql | docker exec -i m1 tar Cxf /tmp -
# docker exec m1 ls /tmp
mysql
# docker exec m1 ls /tmp/mysql
columns_priv.MYD
columns_priv.MYI
columns_priv.frm
db.MYD
db.MYI
db.frm
db.opt
engine_cost.frm
engine_cost.ibd
event.MYD
-------중략-------
굳이 이 작업한 이유는 Kubernet에서의 복사 작업이 이런 형태로 이루어지기 때문입니다.
728x90