ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker: cp & tar 다중 파일 복사
    공부합시다!/Container 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

    '공부합시다! > 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
Designed by Tistory.