1. 程式人生 > >如何在Docker容器內外互相拷貝資料

如何在Docker容器內外互相拷貝資料

從容器內拷貝檔案到主機上
[[email protected] soft]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
8d418a7b6021        postgres            "/docker-entrypoint.   7 hours ago         Up 7 hours                              test1    
[
[email protected]
soft]# docker exec -t -i 8d418a7b6021 /bin/bash
[email protected]:/var/lib/postgresql# pwd
/var/lib/postgresql
[email protected]:/var/lib/postgresql# ls
data
[email protected]:/var/lib/postgresql# exit
exit
[[email protected] soft]# docker cp 8d418a7b6021:/var/lib/postgresql/data /opt/soft/
完成拷貝
docker run -v /opt/soft:/mnt 8d418a7b6021


從主機上拷貝檔案到容器內
1.用-v掛載主機資料捲到容器內
通過-v引數,冒號前為宿主機目錄,必須為絕對路徑,冒號後為映象內掛載的路徑。
[
[email protected]
soft]# docker run -it -v /opt/soft:/mnt postgres /bin/bash
這種方式的缺點是隻能在容器剛剛啟動的情況下進行掛載
2.直接在主機上拷貝到容器物理儲存系統
[[email protected] soft]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
8d418a7b6021        postgres            "/docker-entrypoint.   8 hours ago         Up 8 hours                              test1               
[
[email protected]
soft]# docker inspect -f   '{{.Id}}' 8d418a7b6021
8d418a7b60216ed677ada5ca5fe1e82a953af6702837e8e05c95b16d23241d47
在docker中,其實是對映到/var/lib/docker/devicemapper/mnt/8d418a7b60216ed677ada5ca5fe1e82a953af6702837e8e05c95b16d23241d47/這個資料夾中的
這個檔案下面就是docker中的根目錄裡面的內容,然後我們就可以按照我們想要的內容隨便進行拷貝了