如何在Docker容器內外互相拷貝數據

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


從主機上拷貝文件到容器內
1.用-v掛載主機數據捲到容器內
通過-v參數,冒號前爲宿主機目錄,必須爲絕對路徑,冒號後爲鏡像內掛載的路徑。
[root@oegw1 soft]# docker run -it -v /opt/soft:/mnt postgres /bin/bash
這種方式的缺點是隻能在容器剛剛啓動的情況下進行掛載
2.直接在主機上拷貝到容器物理存儲系統
[root@oegw1 soft]# docker ps
CONTAINER ID        IMAGE               COMMAND                CREATED             STATUS              PORTS               NAMES
8d418a7b6021        postgres            "/docker-entrypoint.   8 hours ago         Up 8 hours                              test1               
[root@oegw1 soft]# docker inspect -f   '{{.Id}}' 8d418a7b6021
8d418a7b60216ed677ada5ca5fe1e82a953af6702837e8e05c95b16d23241d47
在docker中,其實是映射到/var/lib/docker/devicemapper/mnt/8d418a7b60216ed677ada5ca5fe1e82a953af6702837e8e05c95b16d23241d47/這個文件夾中的
這個文件下面就是docker中的根目錄裏面的內容,然後我們就可以按照我們想要的內容隨便進行拷貝了
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章