-
Docker: cp & tar 다중 파일 복사공부합시다!/Container 2023. 1. 5. 00:14728x90
디렉토리내에 많은 파일이 존재한다거나 /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'공부합시다! > Container' 카테고리의 다른 글
Dockerfile - CentOS7 + HTTPD (0) 2023.05.19 Podman: Container를 System Service로 관리 (0) 2023.01.25 PODMAN: Network (0) 2022.12.20 PODMAN: Copy와 Volume Mount (0) 2022.12.19 PODMAN: Registry와 Search (0) 2022.12.16