>  기사  >  운영 및 유지보수  >  도커 컨테이너에 파일을 복사하는 방법

도커 컨테이너에 파일을 복사하는 방법

PHPz
PHPz원래의
2023-04-10 14:14:156848검색

클라우드 컴퓨팅의 급속한 발전으로 Docker는 많은 기업과 클라우드 서비스 제공업체의 표준 배포 플랫폼이 되었습니다. Docker 컨테이너를 사용할 때 호스트와 컨테이너 간에 파일을 전송해야 하는 경우가 종종 있으며 이러한 요구 사항으로 인해 파일 복사가 필요한 기술이 됩니다. 이 문서에서는 Docker 컨테이너에 파일을 복사하는 방법을 소개합니다.

1. docker cp 명령 사용

Docker는 호스트와 컨테이너 간에 파일을 복사할 수 있는 특수 명령 docker cp를 제공합니다. 구체적인 사용법은 다음과 같습니다.

docker cp <src_path> <container_id>:<dest_path>
docker cp <container_id>:<src_path> <dest_path>

그 중 <src_path></src_path><dest_path></dest_path>는 각각 소스 경로와 대상 경로를 나타내며, <container_id> ;</container_id>는 컨테이너 ID를 나타냅니다. <src_path><dest_path>分别表示源和目标路径,<container_id>表示容器ID。

例如,要将宿主机中的文件/home/user/file.txt复制到容器中的/var/www/目录下,可以执行以下命令:

docker cp /home/user/file.txt <container_id>:/var/www/

同样的,如果想要将容器中的文件/var/log/nginx/access.log复制到宿主机的/home/user/目录下,可以执行以下命令:

docker cp <container_id>:/var/log/nginx/access.log /home/user/

需要注意的是,如果<dest_path>/结尾,表示目标路径是一个目录,此时需要保证目标路径存在。如果<dest_path>不以/结尾,表示目标路径是一个文件,此时需要保证目标路径的上层目录存在。

2. 使用共享文件夹

另一个向Docker容器下拷贝文件的方法是使用共享文件夹。这个方法的前提条件是在创建容器时需要把宿主机的目录映射到容器内部,这个映射可以通过-v--mount选项来完成:

docker run -v <host_dir>:<container_dir> <image_name>

或者

docker run --mount type=bind,source=<host_dir>,target=<container_dir> <image_name>

其中,<host_dir>表示宿主机中的目录,<container_dir>表示容器中的目录。 接下来,容器内部就可以像使用本地目录一样使用映射目录。

在这种情况下,对于需要传输的文件,只需要将它们放在映射目录下,就可以在容器中访问它们。同样地,容器中生成的文件也可以放在映射目录下,然后在宿主机上访问和处理。

3. 使用Docker Volume

使用Docker Volume也是向Docker容器下拷贝文件的另一种方法。与共享文件夹相似,使用Docker Volume时创建容器时需要把一个宿主机的目录挂载到容器内部。不同的是,这个挂载动作会在Docker守护进程中创建一个标准卷,并将这个卷与容器内的目录关联起来。这使得宿主机和容器之间可以高效地共享文件,而不依赖本地文件系统。

具体使用方法如下:

docker run -v <volume_name>:<container_dir> <image_name>

或者

docker run --mount type=volume,source=<volume_name>,target=<container_dir> <image_name>

其中,<volume_name>表示Docker守护进程中标准卷的名称,<container_dir>表示容器中的路径。与共享文件夹不同的是,Docker Volume需要显式地创建和删除。它可以通过以下命令来完成:

docker volume create <volume_name>
docker volume rm <volume_name>

最后,可以通过以下命令来在宿主机和容器之间复制文件:

docker cp <file_path> <container_id>:<container_dir>
docker cp <container_id>:<container_dir> <file_path>

在这里,<file_path>表示本地路径,<container_id>表示容器ID,<container_dir>

예를 들어 호스트의 /home/user/file.txt 파일을 컨테이너의 /var/www/ 디렉터리에 복사하려면 다음을 실행하면 됩니다. 다음 명령 :

rrreee

마찬가지로 컨테이너의 /var/log/nginx/access.log 파일을 /home/user/ 디렉터리에 복사하려는 경우 호스트의 경우 다음 명령을 실행할 수 있습니다:

rrreee

<dest_path>/로 끝나면 대상 경로가 디렉터리이며 대상 경로가 존재하는지 확인해야 합니다. <dest_path>/로 끝나지 않으면 대상 경로가 파일이라는 의미입니다. 이 경우 대상의 상위 디렉터리를 확인해야 합니다. 경로가 존재합니다. 🎜🎜2. 공유 폴더 사용🎜🎜Docker 컨테이너에 파일을 복사하는 또 다른 방법은 공유 폴더를 사용하는 것입니다. 이 방법의 전제 조건은 컨테이너를 생성할 때 호스트 디렉터리가 컨테이너 내부에 매핑되어야 한다는 것입니다. 이 매핑은 -v 또는 --mount를 통해 완료할 수 있습니다. code> 옵션: 🎜 rrreee🎜or🎜rrreee🎜 여기서 <host_dir>는 호스트의 디렉터리를 나타내고 <container_dir>는 컨테이너의 디렉터리를 나타냅니다. 다음으로, 매핑된 디렉터리를 로컬 디렉터리처럼 컨테이너 내부에서 사용할 수 있습니다. 🎜🎜이 경우 전송해야 하는 파일의 경우 해당 파일을 매핑된 디렉터리에 배치하기만 하면 컨테이너에 있는 파일에 액세스할 수 있습니다. 마찬가지로 컨테이너에서 생성된 파일도 매핑된 디렉터리에 배치된 다음 호스트에서 액세스하고 처리할 수 있습니다. 🎜🎜3. Docker 볼륨 사용🎜🎜Docker 볼륨을 사용하는 것은 파일을 Docker 컨테이너에 복사하는 또 다른 방법입니다. 공유 폴더와 마찬가지로 Docker 볼륨을 사용하여 컨테이너를 생성하는 경우 호스트 디렉터리를 컨테이너에 탑재해야 합니다. 차이점은 이 탑재 작업이 Docker 데몬에 표준 볼륨을 생성하고 이 볼륨을 컨테이너 내의 디렉터리와 연결한다는 것입니다. 이를 통해 로컬 파일 시스템에 의존하지 않고 호스트와 컨테이너 간에 효율적인 파일 공유가 가능해집니다. 🎜🎜구체적인 사용법은 다음과 같습니다. 🎜rrreee🎜 또는 🎜rrreee🎜 여기서 <volume_name>는 Docker 데몬 프로세스의 표준 볼륨 이름을 나타내고 <container_dir> 는 의 컨테이너 경로를 나타냅니다. 공유 폴더와 달리 Docker 볼륨은 명시적으로 생성하고 삭제해야 합니다. 다음 명령을 사용하면 됩니다. 🎜rrreee🎜마지막으로 다음 명령을 사용하면 호스트와 컨테이너 간에 파일을 복사할 수 있습니다. 🎜rrreee🎜여기서 <file_path>는 로컬 경로를 나타내고, <container_id>는 컨테이너 ID를 나타내고, <container_dir>는 컨테이너의 디렉터리를 나타냅니다. 🎜🎜결론🎜🎜Docker 컨테이너를 사용하는 과정에서 파일 복사는 종종 해야할 일입니다. 이 문서에서는 docker cp 명령, 공유 폴더 및 Docker 볼륨을 사용하여 Docker 컨테이너에 파일을 복사하는 세 가지 방법을 소개합니다. 이러한 방법에는 장점과 단점이 있습니다. 실제로는 특정 요구 사항에 따라 가장 적합한 방법을 선택해야 합니다. 🎜

위 내용은 도커 컨테이너에 파일을 복사하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.