<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## docker進行資源隔離的6種namespace |namespace|隔離內容|內核版本| |---|---|---| |UTS|主機名與域名|Linux 2.6.19| |IPC|信號量,消息隊列和共享內存|Linux 2.6.19| |PID|進程編號|Linux 2.6.24| |Network|網絡設備,網絡棧,端口|始于Linux 2.6.24 完成于 Linux 2.6.29| |Mount|文件掛載|Linux 2.4.19| |User|用戶用戶組| 始于 Linux 2.6.23 完成于 Linux 3.8| **其中User namespace是從docker1.10開始被支持,并且不是默認開啟的.** 以上內容不是這篇文章的重點,此篇文章主要是介紹user namespace ## 一.User namespace的作用 docker 使用namespace進行資源隔離,其中一種是user namespace.user namespace主要隔離了安全相關的標識符和屬性,包括用戶ID,用戶組Id,root目錄,key(密鑰)以及特殊權限. 默認的情況下,docker容器使用的root用戶和宿主機的root用戶是同一個用戶,盡管可以限制容器內root用戶的權限(capability),但本質上仍然和宿主機root用戶是同一個用戶. 有了user namespace之后,我們就可以將宿主機上的普通用戶映射為容器的root用戶,這樣容器中的實際用戶為普通用戶權限,可以將容器的安全程度提高一個等級! ### 實驗一:不使用user namespace進行資源隔離 * 運行一個容器 ``` docker run -it ubuntu:14.04 top ``` * 另外開一個終端,查看該容器進程在宿主機上的用戶 ``` ~$ ps -aux|grep top root 18724 0.2 0.0 19848 2400 pts/15 Ss+ 14:16 0:00 top ``` 可以看到,運行top命令的用戶是root,即容器中的root用戶就是宿主機的root用戶 ### 實驗二:使用user namespace進行資源隔離 #### 配置實現 * 運行docker deamon進程的時候加入參數`--userns-remap=default`,如:ubuntu中是修改/etc/default/docker中的DOCKER_OPTS,追加配置`--userns-remap=default` * 重啟docker deamon,如:ubuntu中是使用`service docker restart` #### 實驗內容 * 運行一個容器 ``` docker run -it ubuntu:14.04 top ``` * 另外開一個終端,查看該容器進程在宿主機上的用戶 ``` ~$ ps -aux|grep top 165536 19347 0.1 0.0 19848 2424 pts/15 Ss+ 14:32 0:00 top ``` 可以看到,在宿主機上top命令的執行使用的用戶是165536(uid),不是root * 看看容器內的top命令的輸出 ``` 1 root 20 0 19848 2424 2108 R 0.0 0.0 0:00.07 top ``` 容器內,看上去仍然是root用戶.即:有了user namespace之后,我們就可以將宿主機上的普通用戶映射為容器的root用戶. 那么,有一個問題?這個普通用戶是誰? ## 二.user namespace的默認映射用戶 上面的實驗中,我們已經使用了user namespace的最簡化配置.即:`--userns-remap=default` 實際上,docker新建了一個用戶和用戶組都叫做dockremap,容器內的root用戶映射到宿主機的這個dockremap用戶上. ``` $ cat /etc/passwd …… dockremap:x:10000:10000:,,,:/home/dockremap:/bin/false $ cat /etc/subuid …… dockremap:165536:65536 $ cat /etc/subgid …… dockremap:165536:65536 ``` ## 三.自定義映射用戶 首先在宿主機上創建用戶及用戶組,在啟動docker deamon的時候傳入如下參數. * --userns-remap=<uid> * --userns-remap=<uid>:<gid> * --userns-remap=<username> * --userns-remap=<username>:<groupname>
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看