1. 程式人生 > 實用技巧 >Docker基礎七(資料卷管理)

Docker基礎七(資料卷管理)

Docker 資料卷的使用場景; 複製宿主機檔案到容器中,怎樣建立資料卷, 以及資料卷的許可權管理。

一、資料卷特點

資料卷是一個可供一個或多個容器使用的本地檔案目錄,主要特性如下:

  1、資料卷可以在容器之間共享和重用
  2、對資料卷的修改會立即生效
  3、對資料卷的更新,不會影響映象 4)資料卷預設會一直存在,即使容器被刪除

提示:資料卷的使用,類似於 Linux 下對目錄進行 mount。

1、使用場景

  1、程式目錄
  2、程式日誌
  3、叢集資料目錄

2、資料卷操作

  從容器內拷貝檔案到主機上
  1、語法:
  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-

  將容器的/test.txt 拷貝到主機的 /tmp目錄中

[root@master docker]# docker run --name c1 -it -h c1-test centos /bin/bash
[root@c1-test /]# echo 111111 > /test.txt  # 容器操作
[root@master ~]# docker cp c1:/test.txt /tmp
[root@master ~]# ls /tmp/test.txt
/tmp/test.txt
[root@master ~]# cat /tmp/test.txt
111111

  2、推送檔案至容器/tmp 目錄下,通過容器ID

[root@master ~]# echo  22222222 > ceshi.txt
[root@master ~]# docker cp ./ceshi.txt c1:/tmp
# 注意複製到容器中的檔案與掛載本機的目錄到容器有不同, 如果是掛載的模式,在本機目錄寫入檔案 那麼也會同步到容器, 如果是複製檔案,則內容不會同步
[root@c1-test /]# ls /tmp
ceshi.txt  ks-script-2n9owwnh  ks-script-xm1o5azb
[root@c1-test /]# cat /tmp/ceshi.txt          # 容器操作
22222222

  3 檢查

[root@master ~]# docker attach c1 
或者
[root@master ~]# docker container exec -it c1 /bin/bash
[root@c1-test /]# ls /tmp
ceshi.txt  ks-script-2n9owwnh  ks-script-xm1o5azb
[root@c1-test /]# cat /tmp/ceshi.txt
22222222

3、建立資料卷

  使用docker run 命令中使用-v 標識來給容器內新增一個數據卷,也可以在一次docker run 命令中, 多次使用-v 標識掛載多個數據卷。

資料卷的使用場景
1、建立一個新容器並掛載本地目錄

# 將本地目錄/mnt 掛載到容器的/mnt
[root@master ~]# echo  555555 > /mnt/555555.txt
[root@master ~]# docker run --name centos-mnt -it -v /mnt/:/mnt centos /bin/bash
[root@a8edb31a1c87 /]# ls /mnt
555555.txt
[root@a8edb31a1c87 /]# cat /mnt/555555.txt
555555
# 在宿主機/mnt 建立目錄, 會在容器掛載目錄中實時看到
[root@master mnt]# mkdir 555
# 容器檢視
[root@a8edb31a1c87 mnt]# ls /mnt
555  555555.txt

4、資料卷許可權設定

  docker 預設情況下是對資料卷有讀寫許可權,但是通過這樣的方式讓資料卷只讀

[root@master ~]# docker run -it --name centos-ro -v /mnt:/mnt:ro centos /bin/bash
# 建立檔案報錯
[root@b62156d96de4 /]# cd  /mnt/
[root@b62156d96de4 mnt]# touch  111.txt
touch: cannot touch '111.txt': Read-only file syste