A서버에 구축된 테스트 자동화 시스템을 B서버로 고스란히 옮겨야 할 일이 생겼다.


이 작업을 위하여


1. 공유폴더 구성

2. docker의 컨테이너 속의 작업폴더내용들을 압축하여 서버내 공유폴더로 빼주기

3. 사용중인 컨테이너를 commit시켜 image화 시켜주고 그 image를 docker save를 사용하여 압축파일로 만들어 공유폴더로 넣어주기

4. B서버 에서 해당 압축파일을 docker load 시켜 image화 시켜주기, 작업 폴더 내용 적절한 곳에 압축풀기 

5. 해당 image 포트 설정 및 작업 폴더 Volume참조 시켜 run시키기

6. 확인


생각 보다 간단하다. (상황에 따라 추가 절차 있을 수 있음)




시작!


# sshfs root@<A서버 HOST>:<A서버 폴더> <B서버 폴더> -o allow_other  //B서버에서, -o allow_other는 옵션

# A서버에서 아무파일이나 넣어 B서버에서 확인이 가능한지 확인하여본다.

# docker exec -it <container> /bin/bash  컨테이너 내부 접속

# cd /var/ //대상 폴더 이동

# tar -cvzf <압축 파일 이름> <압축할 대상>

# ctrl + p +q 입력 하여 빠져나온 다음 docker cp <container>:<대상파일주소> <저장할 폴더> 이용하여 파일 빼준다(공유폴더로 뺴면 편함)

# docker commit <container> <image이름>:<tag>

# docker save -o <압축파일 이름> <image>:<tag> //공유폴더로 바로 저장해주면 편하다.

# 자 이제 B서버로 넘어와 공유폴더에 파일들이 제대로 위치했는지 확인해주자. 

# 해준 후 작업폴더 압축파일은 적절한 위치에 압축을 풀어준다. tar -xvzf <압축파일 이름>

# docker load -i <docker save 압축파일 이름> 를 하여 이미지화 //압축파일을 로드할때 -i 옵션 사용

# docker run -d -p <포트> -v <local 볼륨>:<container 내부 볼륨> <image>:<tag>  

//A서버에서 cp를 이용해 container 내부 파일을 빼주었지만, B서버에서 굳이 도로 넣어주기보다 -v를 사용하여 연결

+ Recent posts