最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解Docker目錄掛載的方法總結(jié)

 更新時間:2016年11月23日 11:49:19   作者:iVictor  
本篇文章主要介紹了Docker目錄掛載的總結(jié),現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

Docker容器啟動的時候,如果要掛載宿主機的一個目錄,可以用-v參數(shù)指定。

譬如我要啟動一個centos容器,宿主機的/test目錄掛載到容器的/soft目錄,可通過以下方式指定:

# docker run -it -v /test:/soft centos /bin/bash

這樣在容器啟動后,容器內(nèi)會自動創(chuàng)建/soft的目錄。通過這種方式,我們可以明確一點,即-v參數(shù)中,冒號":"前面的目錄是宿主機目錄,后面的目錄是容器內(nèi)目錄。

貌似簡單,其實不然,下面我們來驗證一下:

一、容器目錄不可以為相對路徑

[root@localhost ~]# docker run -it -v /test:soft centos /bin/bash
invalid value "/test:soft" for flag -v: soft is not an absolute path
See 'docker run --help'.

直接報錯,提示soft不是一個絕對路徑,所謂的絕對路徑,必須以下斜線“/”開頭。

二、宿主機目錄如果不存在,則會自動生成

如果宿主機中存在/test目錄,首先刪除它

[root@localhost ~]# rm -rf /test
[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var

啟動容器

[root@localhost ~]# docker run -it -v /test:/soft centos /bin/bash
[root@a487a3ca7997 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin soft srv sys tmp usr var

查看宿主機,發(fā)現(xiàn)新增了一個/test目錄

[root@localhost ~]# ls /
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var

三、宿主機的目錄如果為相對路徑呢?

這次,我們換個目錄名test1試試

# docker run -it -v test1:/soft centos /bin/bash

再到宿主機上查看是否新增了一個/test1目錄,結(jié)果沒有,是不是因為我用的是相對路徑,所以生成的test1目錄在當(dāng)前目錄下,結(jié)果發(fā)現(xiàn)還是沒有。那容器內(nèi)的/soft目錄掛載到哪里去了?通過docker inspect命令,查看容器“Mounts”那一部分,我們可以得到這個問題的答案。

"Mounts": [
    {
      "Name": "test1",
      "Source": "/var/lib/docker/volumes/test1/_data",
      "Destination": "/soft",
      "Driver": "local",
      "Mode": "z",
      "RW": true
    }
  ],

可以看出,容器內(nèi)的/soft目錄掛載的是宿主機上的/var/lib/docker/volumes/test1/_data目錄

原來,所謂的相對路徑指的是/var/lib/docker/volumes/,與宿主機的當(dāng)前目錄無關(guān)。

四、如果只是-v指定一個目錄,這個又是如何對應(yīng)呢?

啟動一個容器

[root@localhost ~]# docker run -it -v /test2 centos /bin/bash
[root@ea24067bc902 /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root run sbin srv sys test2 tmp usr var

同樣使用docker inspect命令查看宿主機的掛載目錄

"Mounts": [
    {
      "Name": "96256232eb74edb139d652746f0fe426e57fbacdf73376963e3acdb411b3d73a",
      "Source": "/var/lib/docker/volumes/96256232eb74edb139d652746f0fe426e57fbacdf73376963e3acdb411b3d73a/_data",
      "Destination": "/test2",
      "Driver": "local",
      "Mode": "",
      "RW": true
    }
  ],

可以看出,同3中的結(jié)果類似,只不過,它不是相對路徑的目錄名,而是隨機生成的一個目錄名。

五、如果在容器內(nèi)修改了目錄的屬主和屬組,那么對應(yīng)的掛載點是否會修改呢?

首先開啟一個容器,查看容器內(nèi)/soft目錄的屬性

[root@localhost ~]# docker run -it -v /test:/soft centos /bin/bash
[root@b5ed8216401f /]# ll -d /soft/
drwxr-xr-x 2 root root 6 Sep 24 03:48 /soft/

查看宿主機內(nèi)/test目錄的屬性

[root@localhost ~]# ll -d /test/
drwxr-xr-x 2 root root 6 Sep 24 11:48 /test/

在容器內(nèi)新建用戶,修改/soft的屬主和屬組

[root@b5ed8216401f /]# useradd victor
[root@b5ed8216401f /]# chown -R victor.victor /soft/
[root@b5ed8216401f /]# ll -d /soft/
drwxr-xr-x 2 victor victor 6 Sep 24 03:48 /soft/

再來看看宿主機內(nèi)/test目錄的屬主和屬組是否會發(fā)生變化?

[root@localhost ~]# ll -d /test/
drwxr-xr-x 2 mycat mycat 6 Sep 24 11:48 /test/

竟然變?yōu)閙ycat了。。。

原來,這個與UID有關(guān)系,UID,即“用戶標(biāo)識號”,是一個整數(shù),系統(tǒng)內(nèi)部用它來標(biāo)識用戶。一般情況下它與用戶名是一一對應(yīng)的。

首先查看容器內(nèi)victor對應(yīng)的UID是多少,

[root@b5ed8216401f /]# cat /etc/passwd | grep victor
victor:x:1000:1000::/home/victor:/bin/bash

victor的UID為1000,那么宿主機內(nèi)1000對應(yīng)的用戶是誰呢?

[root@localhost ~]# cat /etc/passwd |grep 1000
mycat:x:1000:1000::/home/mycat:/bin/bash

可以看出,宿主機內(nèi)UID 1000對應(yīng)的用戶是mycat。

六、容器銷毀了,在宿主機上新建的掛載目錄是否會消失?

在這里,主要驗證兩種情況:一、指定了宿主機目錄,即 -v /test:/soft。二、沒有指定宿主機目錄,即-v /soft

第一種情況:

[root@localhost ~]# rm -rf /test  --首先刪除宿主機的/test目錄
[root@localhost ~]# ls /  --可以看到,宿主機上無/test目錄
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
[root@localhost ~]# docker run -it --name=centos_test -v /test:/soft centos /bin/bash --啟動容器,為了刪除方便,我用--name參數(shù)指定了容器的名字
[root@82ad7f3a779a /]# exit
exit
[root@localhost ~]# docker rm centos_test  --刪除容器
centos_test
[root@localhost ~]# ls /  --發(fā)現(xiàn) /test目錄依舊存在
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys test tmp usr var

可以看出,即便容器銷毀了,新建的掛載目錄不會消失。進一步也可驗證,如果宿主機目錄的屬主和屬組發(fā)生了變化,容器銷毀后,宿主機目錄的屬主和屬組不會恢復(fù)到掛載之前的狀態(tài)。

第二種情況,通過上面的驗證知道,如果沒有指定宿主機的目錄,則容器會在/var/lib/docker/volumes/隨機配置一個目錄,那么我們看看這種情況下的容器銷毀是否會導(dǎo)致相應(yīng)目錄的刪除

首先啟動容器

[root@localhost ~]# docker run -it --name=centos_test -v /soft centos /bin/bash
[root@6b75579ec934 /]# exit
exit

通過docker inspect命令查看容器在宿主機上生成的掛載目錄

"Mounts": [
    {
      "Name": "b53164cb1c9f1917788638692fb22ad11994cf1fbbc2461b6c390cd3e10ea301",
      "Source": "/var/lib/docker/volumes/b53164cb1c9f1917788638692fb22ad11994cf1fbbc2461b6c390cd3e10ea301/_data",
      "Destination": "/soft",
      "Driver": "local",
      "Mode": "",
      "RW": true
    }
  ],

對應(yīng)的是/var/lib/docker/volumes/b53164cb1c9f1917788638692fb22ad11994cf1fbbc2461b6c390cd3e10ea301/_data目錄

銷毀容器,看目錄是否存在

[root@localhost ~]# docker rm centos_test
centos_test
[root@localhost ~]# ll /var/lib/docker/volumes/b53164cb1c9f1917788638692fb22ad11994cf1fbbc2461b6c390cd3e10ea301
total 0
drwxr-xr-x 2 root root 6 Sep 24 14:25 _data

發(fā)現(xiàn)該目錄依舊存在,即便重啟了docker服務(wù),該目錄依舊存在

[root@localhost ~]# systemctl restart docker
[root@localhost ~]# ll /var/lib/docker/volumes/b53164cb1c9f1917788638692fb22ad11994cf1fbbc2461b6c390cd3e10ea301
total 0
drwxr-xr-x 2 root root 6 Sep 24 14:25 _data

七、掛載宿主機已存在目錄后,在容器內(nèi)對其進行操作,報“Permission denied”。

可通過兩種方式解決:

1> 關(guān)閉selinux。

臨時關(guān)閉:# setenforce 0

永久關(guān)閉:修改/etc/sysconfig/selinux文件,將SELINUX的值設(shè)置為disabled。

2> 以特權(quán)方式啟動容器

指定--privileged參數(shù)

如:

# docker run -it --privileged=true -v /test:/soft centos /bin/bash

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • docker如何部署etcd集群

    docker如何部署etcd集群

    這篇文章主要介紹了docker如何部署etcd集群問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • docker?compose部署mongodb?分片集群的操作方法

    docker?compose部署mongodb?分片集群的操作方法

    分片機制(Sharding)是MongoDB中用于處理大規(guī)模數(shù)據(jù)集和高負(fù)載應(yīng)用的一種數(shù)據(jù)分布策略,通過將數(shù)據(jù)均勻分布在多個服務(wù)器上,分片技術(shù)能夠提高應(yīng)用的可擴展性和性能,本文給大家介紹docker?compose部署mongodb?分片集群的相關(guān)操作,感興趣的朋友一起看看吧
    2024-10-10
  • 主機Nginx + Docker WordPress Mysql搭建的詳細(xì)步驟

    主機Nginx + Docker WordPress Mysql搭建的詳細(xì)步驟

    這篇文章主要介紹了主機Nginx + Docker WordPress Mysql搭建的詳細(xì)步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • Docker如何使用nginx搭建tomcat集群(圖文詳解)

    Docker如何使用nginx搭建tomcat集群(圖文詳解)

    這篇文章主要介紹了Docker使用nginx搭建tomcat集群的教程,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-12-12
  • docker安裝Portainer CE的實現(xiàn)示例

    docker安裝Portainer CE的實現(xiàn)示例

    Portainer是一款易用的開源容器管理工具,適合各級經(jīng)驗的Docker用戶,它提供直觀的UI,方便管理、部署和監(jiān)控容器,本文就來介紹一下docker安裝Portainer CE的實現(xiàn)示例,感興趣的可以了解一下
    2024-09-09
  • Docker部署nginx并修改配置文件的實現(xiàn)方法

    Docker部署nginx并修改配置文件的實現(xiàn)方法

    這篇文章主要介紹了Docker部署nginx并修改配置文件的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • Docker容器中Mysql數(shù)據(jù)的導(dǎo)入/導(dǎo)出詳解

    Docker容器中Mysql數(shù)據(jù)的導(dǎo)入/導(dǎo)出詳解

    服務(wù)器在使用了 Docker 后,對于備份和恢復(fù)數(shù)據(jù)庫的事情做下記錄,下面這篇文章主要給大家介紹了Docker容器中Mysql數(shù)據(jù)導(dǎo)入/導(dǎo)出的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-09-09
  • docker可視化工具Portainer部署并漢化的操作

    docker可視化工具Portainer部署并漢化的操作

    這篇文章主要介紹了docker可視化工具Portainer部署并漢化的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 使用Docker打包和運行Java鏡像的完整指南

    使用Docker打包和運行Java鏡像的完整指南

    在這篇文章中,我們將詳細(xì)講解如何使用Docker打包和運行一個Java應(yīng)用鏡像,通過此教程,即使你是一個小白,也能輕松學(xué)會如何構(gòu)建Docker鏡像并運行Java應(yīng)用,感興趣的小伙伴跟著小編一起來看看吧
    2025-01-01
  • Docker中編碼和時區(qū)設(shè)置不生效問題排查小結(jié)

    Docker中編碼和時區(qū)設(shè)置不生效問題排查小結(jié)

    本文主要介紹了在Docker容器中排查編碼和時區(qū)設(shè)置不生效的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-01-01

最新評論

沭阳县| 定安县| 南部县| 周口市| 绵阳市| 清丰县| 陈巴尔虎旗| 台安县| 饶阳县| 饶阳县| 雷州市| 阿城市| 涞水县| 南川市| 安徽省| 郸城县| 名山县| 偏关县| 原阳县| 忻城县| 雅江县| 南汇区| 九江县| 金门县| 河南省| 济源市| 扶沟县| 新沂市| 嫩江县| 徐水县| 墨玉县| 隆子县| 策勒县| 衡东县| 芜湖县| 咸宁市| 肇州县| 大埔区| 赫章县| 衡山县| 连山|