亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Docker 運(yùn)行時(shí)的用戶與組管理的方法

 更新時(shí)間:2018年10月24日 10:06:17   作者:Yujiaao  
這篇文章主要介紹了Docker 運(yùn)行時(shí)的用戶與組管理的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

docker 以進(jìn)程為核心, 對(duì)系統(tǒng)資源進(jìn)行隔離使用的管理工具. 隔離是通過(guò) cgroups (control groups 進(jìn)程控制組) 這個(gè)操作系統(tǒng)內(nèi)核特性來(lái)實(shí)現(xiàn)的. 包括用戶的參數(shù)限制、 帳戶管理、 資源(CPU,內(nèi)存,磁盤I/O,網(wǎng)絡(luò))使用的隔離等. docker 在運(yùn)行時(shí)可以為容器內(nèi)進(jìn)程指定用戶和組. 沒(méi)有指定時(shí)默認(rèn)是 root .但因?yàn)楦綦x的原因, 并不會(huì)因此喪失安全性. 傳統(tǒng)上, 特定的應(yīng)用都以特定的用戶來(lái)運(yùn)行, 在容器內(nèi)進(jìn)程指定運(yùn)行程序的所屬用戶或組并不需要在 host 中事先創(chuàng)建.

進(jìn)程控制組cgroups主要可能做以下幾件事:

  • 資源限制 組可以設(shè)置為不超過(guò)配置的內(nèi)存限制, 其中還包括文件系統(tǒng)緩存
  • 優(yōu)先級(jí) 某些組可能會(huì)獲得更大的 CPU 利用率份額或磁盤 i/o 吞吐量
  • 帳號(hào)會(huì)計(jì) 度量組的資源使用情況, 例如, 用于計(jì)費(fèi)的目的
  • 控制 凍結(jié)組進(jìn)程, 設(shè)置進(jìn)程的檢查點(diǎn)和重新啟動(dòng)

與 cgroups(控制進(jìn)程組) 相關(guān)聯(lián)的概念是 namespaces (命令空間).

命名空間主要有六種名稱隔離類型:

  • PID 命名空間為進(jìn)程標(biāo)識(shí)符 (PIDs) 的分配、進(jìn)程列表及其詳細(xì)信息提供了隔離。

雖然新命名空間與其他同級(jí)對(duì)象隔離, 但其 "父 " 命名空間中的進(jìn)程仍會(huì)看到子命名空間中的所有進(jìn)程 (盡管具有不同的 PID 編號(hào))。

  • 網(wǎng)絡(luò)命名空間隔離網(wǎng)絡(luò)接口控制器 (物理或虛擬)、iptables 防火墻規(guī)則、路由表等。網(wǎng)絡(luò)命名空間可以使用 "veth " 虛擬以太網(wǎng)設(shè)備彼此連接。
  • UTS 命名空間允許更改主機(jī)名。
  • mount(裝載)命名空間允許創(chuàng)建不同的文件系統(tǒng)布局, 或使某些裝入點(diǎn)為只讀。
  • IPC 命名空間將 System V 的進(jìn)程間通信通過(guò)命名空間隔離開來(lái)。
  • 用戶命名空間將用戶 id 通過(guò)命名空間隔離開來(lái)。

普通用戶 docker run 容器內(nèi) root

如 busybox, 可以在 docker 容器中以 root 身份運(yùn)行軟件. 但 docker 容器本身仍以普通用戶執(zhí)行.

考慮這樣的情況

echo test | docker run -i busybox cat

前面的是當(dāng)前用戶當(dāng)前系統(tǒng)進(jìn)程,后面的轉(zhuǎn)入容器內(nèi)用戶和容器內(nèi)進(jìn)程運(yùn)行.

當(dāng)在容器內(nèi) PID 以1運(yùn)行時(shí), Linux 會(huì)忽略信號(hào)系統(tǒng)的默認(rèn)行為, 進(jìn)程收到 SIGINT 或 SIGTERM 信號(hào)時(shí)不會(huì)退出, 除非你的進(jìn)程為此編碼. 可以通過(guò) Dockerfile STOPSIGNAL signal指定停止信號(hào).

如:

STOPSIGNAL SIGKILL

創(chuàng)建一個(gè) Dockerfile

FROM alpine:latest
RUN apk add --update htop && rm -rf /var/cache/apk/*
CMD ["htop"]
$ docker build -t myhtop . #構(gòu)建鏡像
$ docker run -it --rm --pid=host myhtop #與 host 進(jìn)程運(yùn)行于同一個(gè)命名空間

普通用戶 docker run 容器內(nèi)指定不同用戶 demo_user

docker run --user=demo_user:group1 --group-add group2 <image_name> <command>

這里的 demo_user 和 group1(主組), group2(副組) 不是主機(jī)的用戶和組, 而是創(chuàng)建容器鏡像時(shí)創(chuàng)建的.

當(dāng)Dockerfile里沒(méi)有通過(guò)USER指令指定運(yùn)行用戶時(shí), 容器會(huì)以 root 用戶運(yùn)行進(jìn)程.

docker 指定用戶的方式

Dockerfile 中指定用戶運(yùn)行特定的命令

USER <user>[:<group>] #或
USER <UID>[:<GID>]

docker run -u(--user)[user:group] 或 --group-add 參數(shù)方式

$ docker run busybox cat /etc/passwd
root:x:0:0:root:/root:/bin/sh
...
www-data:x:33:33:www-data:/var/www:/bin/false
nobody:x:65534:65534:nobody:/home:/bin/false

$ docker run --user www-data busybox id
uid=33(www-data) gid=33(www-data)

docker 容器內(nèi)用戶的權(quán)限

對(duì)比以下情況, host 中普通用戶創(chuàng)建的文件, 到 docker 容器下映射成了 root 用戶屬主:

$ mkdir test && touch test/a.txt && cd test
$ docker run --rm -it -v `pwd`:/mnt -w /mnt busybox  /bin/sh -c 'ls -al /mnt/*' 
-rw-r--r--  1 root   root       0 Oct 22 15:36 /mnt/a.txt

而在容器內(nèi)卷目錄中創(chuàng)建的文件, 則對(duì)應(yīng) host 當(dāng)前執(zhí)行 docker 的用戶:

$ docker run --rm -it -v `pwd`:/mnt -w /mnt busybox  /bin/sh -c 'touch b.txt'
$ ls -al
-rw-r--r-- 1 xwx staff  0 10 22 23:36 a.txt
-rw-r--r-- 1 xwx staff  0 10 22 23:54 b.txt

docker volume 文件訪問(wèn)權(quán)限

創(chuàng)建和使用卷, docker 不支持相對(duì)路徑的掛載點(diǎn), 多個(gè)容器可以同時(shí)使用同一個(gè)卷.

$ docker volume create hello #創(chuàng)建卷

hello

$ docker run -it --rm -v hello:/world -w /world busybox /bin/sh -c 'touch /world/a.txt && ls -al'  #容器內(nèi)建個(gè)文件
total 8
drwxr-xr-x  2 root   root     4096 Oct 22 16:38 .
drwxr-xr-x  1 root   root     4096 Oct 22 16:38 ..
-rw-r--r--  1 root   root       0 Oct 22 16:38 a.txt

$ docker run -it --rm -v hello:/world -w /world busybox /bin/sh -c 'rm /world/a.txt && ls -al' #從容器內(nèi)刪除
total 8
drwxr-xr-x  2 root   root     4096 Oct 22 16:38 .
drwxr-xr-x  1 root   root     4096 Oct 22 16:38 ..

外部創(chuàng)建文件, 容器內(nèi)指定用戶去刪除

$ touch c.txt && sudo chmod root:wheel c.txt
$ docker run -u 100 -it --rm -v `pwd`:/world -w /world busybox /bin/sh -c 'rm /world/c.txt && ls -al'

實(shí)際是可以刪除的

rm: remove '/world/c.txt'? y
total 4
drwxr-xr-x  4 100   root      128 Oct 23 16:09 .
drwxr-xr-x  1 root   root     4096 Oct 23 16:09 ..
-rw-r--r--  1 100   root       0 Oct 22 15:36 a.txt
-rw-r--r--  1 100   root       0 Oct 22 15:54 b.txt

docker 普通用戶的1024以下端口權(quán)限

 $ docker run -u 100 -it --rm -p 70:80 busybox /bin/sh -c 'nc -l -p 80'
nc: bind: Permission denied #用戶id 100 時(shí), 不能打開80端口
 $ docker run -u 100 -it --rm -p 70:8800 busybox /bin/sh -c 'nc -l -p 8800' #容器端口大于1024時(shí)則可以
...
 $ docker run -it --rm -p 70:80 busybox /bin/sh -c 'nc -l -p 80' #容器內(nèi)是 root 也可以
...

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

相關(guān)文章

  • 關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決

    關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決

    最近工作中遇到一個(gè)問(wèn)題,項(xiàng)目?jī)?nèi)部需要訪問(wèn)外網(wǎng),但上傳文件,但是一直報(bào)unknown host,無(wú)法解析域名,所以下面這篇文章主要給大家介紹了關(guān)于Docker容器內(nèi)部無(wú)法解析域名問(wèn)題的解決方法,需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-07-07
  • 如何查看docker容器的內(nèi)存占用

    如何查看docker容器的內(nèi)存占用

    這篇文章主要介紹了如何查看docker容器的內(nèi)存占用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 使用Docker將容器打成鏡像的方法步驟

    使用Docker將容器打成鏡像的方法步驟

    本文主要介紹了使用Docker將容器打成鏡像的方法步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Docker 如何安裝 Nginx

    Docker 如何安裝 Nginx

    這篇文章主要介紹了Docker 如何安裝 Nginx,幫助大家更好的使用docker容器,感興趣的朋友可以了解下。
    2020-09-09
  • Docker中的容器文件拷貝及目錄掛載方式

    Docker中的容器文件拷貝及目錄掛載方式

    這篇文章主要介紹了Docker中的容器文件拷貝及目錄掛載方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • Docker-Compose實(shí)現(xiàn)Mysql主從的示例代碼

    Docker-Compose實(shí)現(xiàn)Mysql主從的示例代碼

    本文主要介紹了Docker-Compose實(shí)現(xiàn)Mysql主從的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • Dockerfile中multi-stage(多階段構(gòu)建)詳解

    Dockerfile中multi-stage(多階段構(gòu)建)詳解

    在2017年5月3日即將發(fā)行的 Docker 17.05.0-ce 中,Docker 官方提供了簡(jiǎn)便的多階段構(gòu)建 (multi-stage build) 方案,下面這篇文章主要給大家介紹了關(guān)于Dockerfile中multi-stage(多階段構(gòu)建)的相關(guān)資料,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-03-03
  • Docker login和logout的使用

    Docker login和logout的使用

    本文主要介紹了Docker login和logout的使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Docker swarm如何通過(guò)docker-compose部署應(yīng)用

    Docker swarm如何通過(guò)docker-compose部署應(yīng)用

    這篇文章主要介紹了Docker swarm如何通過(guò)docker-compose部署應(yīng)用問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-02-02
  • 超級(jí)簡(jiǎn)潔的使用YUM安裝docker

    超級(jí)簡(jiǎn)潔的使用YUM安裝docker

    這篇文章主要給大家介紹了關(guān)于使用YUM安裝docker的相關(guān)資料,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,需要的朋友可以參考下
    2023-08-08

最新評(píng)論