Docker 컨테이너를 다른 호스트로 복사/이동하는 방법

Docker 컨테이너를 다른 호스트로 복사/이동하는 방법
컴퓨터 책상에서 작업 중인 사람의 사진입니다.

Docker 컨테이너는 작은 소프트웨어 상자이므로 컴퓨터에서 컴퓨터로 쉽게 복사하고 이동할 수 있습니다. 로컬 컴퓨터의 Docker 인스턴스에서 작업하고 이를 더 강력한 서버로 이동하기로 결정했을 수도 있습니다. 아니면 여러 컴퓨터에 사용자 지정 컨테이너를 배포하고 “복사하여 붙여넣기”하고 싶을 수도 있습니다. 때로는 클라우드 컴퓨팅 제공업체가 만족스럽지 않아 다른 제공업체로 전환하고 싶을 수도 있습니다. 여기에서는 기존 Docker 컨테이너 이미지와 데이터 볼륨을 한 Linux 호스트에서 다른 Linux 호스트로 이동하는 방법을 보여줍니다.

소스 호스트에서 컨테이너 이미지 저장

시스템에서 실행 중인 사용 가능한 Docker 컨테이너를 나열하는 것부터 시작하세요. 제 경우에는 Nginx Docker 컨테이너를 새 머신으로 내보내고 싶습니다.

시스템에 사용 가능한 Docker 컨테이너를 강조 표시하는 터미널입니다.

복사하려는 컨테이너를 찾은 후 인스턴스를 중지합니다.

docker stop 명령의 출력을 보여주는 터미널입니다.

Docker 컨테이너는 일반적인 초기 이미지로 빌드됩니다. 시간이 지남에 따라 이 기본 이미지에 자신의 변경 사항을 추가합니다. 컨테이너 내부에서 실행되는 프로세스도 자신의 데이터를 저장하거나 다른 변경 사항을 만들 수 있습니다. 이 모든 것을 보존하려면 컨테이너의 현재 상태를 새 이미지에 커밋합니다.

현재 실행 중인 이미지에서 새 이미지를 생성하는 docker commit 명령의 출력을 보여주는 터미널입니다.

인스턴스가 현재 실행 중인 경우 이 작업을 수행하면 콘텐츠가 저장되는 동안 인스턴스가 일시 중지됩니다. 이것이 문제인 경우 docker commit -p=false NAME_OF_INSTANCE mycontainerimage대신 입력하여 일시 중지를 피할 수 있습니다. 그러나 꼭 필요한 경우가 아니면 이렇게 하지 마세요. 이 경우 일관성이 없거나 불완전한 데이터가 포함된 이미지를 생성할 확률이 높아집니다.

이제 새로 커밋한 Docker 컨테이너 이미지를 보관 파일에 저장합니다.

선호하는 파일 전송 방법을 사용하고 Docker 컨테이너를 이동하려는 호스트에 .tar 파일을 복사합니다. 예를 들어, 다음 명령은 scp를 사용하여 내 Nginx Docker 이미지를 전송합니다.

컨테이너에서 Docker 볼륨 내보내기

Docker 이미지 저장의 단점 중 하나는 컨테이너와 함께 설정한 Docker 액세서리가 함께 제공되지 않는다는 것입니다. 여기에는 영구 데이터를 저장하기 위해 만든 모든 네트워크 바인딩 마운트와 볼륨이 포함됩니다.

데이터 볼륨을 제대로 내보내려면 먼저 로컬 머신에 Git을 설치하세요.

Docker용 볼륨 내보내기 스크립트를 다운로드하려면 다음 명령을 실행하십시오.

내보내기 스크립트에 올바른 권한 비트가 있는지 확인한 다음 이를 컴퓨터의 “/usr/local/bin:”에 복사하세요.

스크립트가 제대로 작동하는지 테스트한 후 컨테이너와 관련된 모든 볼륨을 추출합니다.

Docker 컨테이너에 대한 연관된 ​​모든 데이터 볼륨을 백업하는 과정을 보여주는 터미널입니다.

새로 보관된 Docker 볼륨 파일을 원격 머신으로 보내세요.

대상 호스트에 컨테이너 이미지 로드

원격 호스트에 로그인한 후 다음 명령을 실행하여 원격 머신의 Docker 데몬에 로드합니다.

docker create소스 머신의 원래 실행 플래그로 Docker 컨테이너 이미지를 다시 초기화하는 데 사용합니다 . 예를 들어, 내 Nginx Docker 컨테이너는 원래 포트 80이 내 호스트 머신의 포트 8080에 매핑되었습니다.

새로 가져온 Docker 컨테이너를 실행합니다.

시스템의 모든 활성 컨테이너를 나열하여 가져온 이미지가 제대로 작동하는지 확인하세요.

다른 시스템에서 실행되는 동일한 Docker 컨테이너 이미지를 보여주는 터미널입니다.

Docker 볼륨을 컨테이너로 가져오기

.tar Docker 볼륨 파일을 가져오려면 먼저 새 호스트에 Git을 다운로드하세요.

원래 시스템과 마찬가지로 docker-volume.sh 도우미 스크립트를 다운로드하고 권한 비트를 “실행”으로 설정한 다음 새 머신의 “/usr/local/bin” 디렉토리에 복사합니다.

컨테이너에 연관된 데이터를 백업하기 위한 Docker Volume 스크립트를 얻고 설치하는 과정을 보여주는 터미널입니다.

내보낸 이미지 파일을 사용하여 새 Docker 컨테이너를 만듭니다.

원본으로 docker-volume.sh 스크립트를 실행합니다. tar 파일을 새 시스템의 Docker 데몬에 로드합니다.

다음 명령을 실행하여 새 Docker 컨테이너를 시작합니다.

내부 구성 데이터를 확인하여 컨테이너가 볼륨을 올바르게 로드하고 있는지 테스트하세요.

새로운 기계로 가져온 볼륨 데이터를 강조 표시하는 터미널입니다.

파일을 생성하지 않고 이미지 전송

때로는 파일 생성을 건너뛰고 싶을 수도 있습니다 mycontainerimage.tar.gz. 컨테이너에 많은 데이터가 있어서 디스크 공간이 충분하지 않을 수도 있습니다. 하나의 명령으로 대상 호스트에 이미지를 저장, 전송 및 로드할 수 있습니다. docker commit위에서 설명한 명령을 실행한 후 다음을 사용할 수 있습니다.

이제 SSH 클라이언트가 내장되어 있으므로 Windows에서도 작동합니다(PuTTY는 더 이상 필요하지 않음).

docker create상황에 맞는 명령을 계속 진행하십시오 .

SSH 파이프를 통해 이미지를 이동한 후 새 Docker 컨테이너를 생성하는 프로세스를 보여주는 터미널입니다.

docker start마지막으로, 컨테이너 이름 뒤에 명령어를 입력하여 새로 가져온 Docker 컨테이너를 시작합니다 .

새 컨테이너를 시작하고 제대로 작동하는지 확인하는 프로세스를 보여주는 터미널입니다.

Docker Compose를 사용하여 전체 Docker 배포 이동

Docker는 Compose 플러그인을 통해 서버의 기본 소프트웨어 스택에 대해 걱정하지 않고도 복잡한 프로그램을 빌드, 구성 및 실행할 수 있도록 합니다. 이를 통해 서로 다른 Linux 시스템에서 재현 가능한 애플리케이션 배포를 빌드할 수 있습니다.

기존 Docker 설정을 Docker Compose로 마이그레이션하려면 먼저 해당 플러그인이 현재 시스템에 있는지 확인하세요.

Docker Compose 설치를 위해 홈 디렉터리에 새 폴더를 만듭니다.

즐겨 사용하는 텍스트 편집기를 사용하여 애플리케이션에 대한 “docker-compose.yml” 파일을 만듭니다.

다음 코드 블록을 Compose 파일에 붙여넣은 다음, 특정 요구 사항에 맞게 조정하세요.

새 Compose 파일을 저장한 후 다음 명령을 실행하여 시작합니다.

마지막으로 Compose 배포가 제대로 작동하는지 테스트합니다. 제 경우에는 웹 브라우저를 열고 “localhost:8080″으로 이동하여 Nginx Docker 컨테이너를 테스트합니다.

가져온 Nginx Docker 컨테이너가 새 머신 호스트에서 제대로 작동하는 모습을 보여주는 스크린샷.

Docker 컨테이너를 다른 Linux 호스트로 복사하고 이동하는 방법을 배우는 것은 머신으로 수행할 수 있는 몇 가지 작업 중 하나일 뿐입니다. Docker를 사용하여 Linux에 Minecraft 서버를 설치하여 이 멋진 셀프 호스팅 세계를 탐험해보세요.

이미지 출처: Max Duzij via Unsplash . 모든 변경 사항과 스크린샷은 Ramces Red가 제공했습니다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다