Transfering Files Between Host and Container
Hermes versus Mercury.
With the SSH port, we can easily copy files between host and container.
For GNU/Linux and macOS users
You will use the build-in scp tool, and do not need to install an extra one. To copy file from container to host, issue the following command in the host terminal:
scp -P 20022 username@127.0.0.1:SRC_PATH HOST_PATHwhere
- usernameis the user name in Dockerfile. By default, it is- oslab
- SRC_PATHis the path of the file in container to copy
- HOST_PATHis the path of the host to copy to
For example, the following command will copy a file in the container to a host path:
scp -P 20022 oslab@127.0.0.1:/home/oslab/a.txt .To copy file from host to container, issue the following command in the host terminal:
scp -P 20022 HOST_SRC_PATH username@127.0.0.1:DEST_PATHwhere
- HOST_SRC_PATHis the path of the host file to copy
- usernameis the user name in Dockerfile. By default, it is- oslab
- DEST_PATHis the path in the container to copy to
For example, the following command will copy a folder in host into the container:
scp -P 20022 hello.c oslab@127.0.0.1:/home/oslabFor Windows users
Windows has no build-in scp tool, and you have to download one manually. Download the latest release version of pscp.exe here. Change the current directory of PowerShell to the one with pscp.exe in it. Then use the following commands to transfer files.
./pscp -P 20022 username@127.0.0.1:SRC_PATH HOST_PATH
./pscp -P 20022 HOST_SRC_PATH username@127.0.0.1:DEST_PATHThe explanation of these commands is similar to scp above. Refer to them for more information.
Have a try!
- New a text file with casual contents in the host. 
- Copy the text file to the container. 
- Modify the content of the text file in the container. 
- Copy the modified file back to the host. 
Check whether the content of the modified file you get after the last step is expected. If it is the case, you are done!
Last updated
Was this helpful?