本文详细介绍了非root用户在docker容器中脚本 *** 作的应用,非常具有root实用价值,希望对大家有所帮助。跟我回去看看。
容器化后,docker容器启动,默认设置是root用户运行命令。因此,容器中的所有默认设置都由root用户运行,这具有很高的安全风险。那么我们如何应用非根业务流程用户来运行应用程序呢?
下面我举一个简单的例子来说明。
在这种情况下,容器中内置的用户用于运行一个简单的shell脚本,脚本的输出日志长在容器之外。接下来,让我们看看从制作图像到运行容器的整个过程。
1。设置镜像:
我可能会用dockerfile的方法构建镜像,基础镜像是ubuntu14.04(必须先拉镜像,dockerpullubuntu:14.04)。Dockerfile有以下内容
[root@host09test]#catDockerfile FROMdocker.io/ubuntu:14.04 MAINTAINERhepengfei RUNgroupaddhpf--建立用户组 RUNuseradd-d/data-ghpf-mhpf--建立用户 RUNsu-hpf-c"mkdir-p/data/scripts" RUNsu-hpf-c"mkdir-p/data/logs" WORKDIR/data/scripts COPYtest.sh/data/scripts/ RUNchownhpf:hpftest.sh RUNchmod755test.sh ENTRYPOINTsu-hpf-c"/data/scripts/test.sh"--应用所建立的用户来运行脚本 [root@host09test]#脚本内容如下:
[root@host09test]#cattest.sh while[1=1] do echo`id`>>/data/logs/hpf.log--将日志輸出到文档,起动容器的情况下做持久化 sleep1 done [root@host09test]#
接下来,我们来构建镜像:
[root@host09test]#dockerbuild-thpf:v2. SendingbuildcontexttoDockerdaemon3.072kB Step1:FROMdocker.io/ubuntu:14.04 --->c69811d4e993 Step2:MAINTAINERhepengfei --->Usingcache --->b8401d2eb439 Step3:RUNgroupaddhpf --->Usingcache --->2e0d20802c41 Step4:RUNuseradd-d/data-ghpf-mhpf --->Usingcache --->bac36ee97aba Step5:RUNsu-hpf-c"mkdir-p/data/scripts" --->Usingcache --->a92c3f5f8e34 Step6:RUNsu-hpf-c"mkdir-p/data/logs" --->Usingcache --->2e8665da7092 Step7:WORKDIR/data/scripts --->Usingcache --->7cf84a5a8aca Step8:COPYtest.sh/data/scripts/ --->7e4c24de2096 Removingintermediatecontainerf96358d91c35 Step9:RUNchownhpf:hpftest.sh --->Runninginfc9ab290c56c --->f38afd1ea62c Removingintermediatecontainerfc9ab290c56c Step10:RUNchmod755test.sh --->Runningina35b507a1527 --->5b5223249f4c Removingintermediatecontainera35b507a1527 Step11:ENTRYPOINTsu-hpf-c"/data/scripts/test.sh" --->Runningin1ee7cc7fbec7 --->26e7d603dbac Removingintermediatecontainer1ee7cc7fbec7 Successfullybuilt26e7d603dbac [root@host09test]#
查询镜像构建:
[root@host09test]#dockerimages REPOSITORYTAGIMAGEIDCREATEDSIZE hpfv226e7d603dbac42minutesago188.3MB docker.io/ubuntu14.04c69811d4e9933weeksago188MB [root@host09test]#2。启动容器:
注意,在启动容器之前,必须更改主机上/data/hepf/log文件目录的管理权限,否则,当容器启动时,脚本中的日志将没有写文件目录的管理权限。我马上把文件目录的管理权限改成了777。
[root@host09test]#chmod777/data/hepf/log
[root@host09test]#dockerrun-it-v/data/hepf/log:/data/logsHPF:v2
现在,查询/data/hepf/log文件目录中的日志文档:
[root@host09log]#pwd /data/hepf/log [root@host09log]#ll total12 -rw-rw-r--11000100010800Sep708:02hpf.log [root@host09log]#tail-2hpf.log uid=1000(hpf)gid=1000(hpf)groups=1000(hpf) uid=1000(hpf)gid=1000(hpf)groups=1000(hpf) [root@host09log]#可以看出,该文件的所有者与容器中建立的hpf用户一致:
hpf@ba688af3f598:~$id uid=1000(hpf)gid=1000(hpf)groups=1000(hpf) hpf@ba688af3f598:~$如果主机上有其他用户与容器中建立的用户id相同,则主机上日志文档的所有者将成为该用户,但暂时没有发现问题。
[root@host09log]#cat/etc/passwd|grephpf1 hpf1:x:1000:1000::/data1:/bin/bash[root@host09log]#ll total12 -rw-rw-r--1hpf1hpf111250Sep708:50hpf.log [root@host09log]#这个简单的案子到此结束。
填写专长:docker默认设置存储及其docker非root用户
模式1
sudodocker信息|grep"Docker根目录"
首先禁用Docker服务项目:
systemctl重新启动docker
或者
服务码头站
然后将所有/var/lib/docker文件目录移动到目标路径:
mv/var/lib/docker/root/data/docker
ln-s/root/data/docker/var/lib/docker
模式2
Docker的环境变量可以设置后台进程的大部分主要参数,每台电脑的 *** 作系统中存储的部分是不一致的。在Ubuntu中的位置是:/etc/default/docker,在CentOS中的位置是:/etc/sysconfig/docker。
如果是CentOS,添加下面一行:
OPTIONS=–graph="/root/data/docker"–selinux-enabled-HFD://
如果是Ubuntu,添加下面一行(因为Ubuntu默认设置不打开selinux):
OPTIONS=–graph="/root/data/docker"-HFD://
或者
DOCKER_OPTS="-g/root/data/DOCKER"
1.首先建立docker用户组,如果docker用户组中有可以忽略的。
sudogroupadddocker
2.将用户添加到docker组
sudogpasswd-一个${USER}docker
3.重启docker
sudo服务docker重启
4.如果一般用户执行docker命令,并且如果它提醒get…dialUNIX/var/run/docker.sock管理权限不足,则更改/var/run/docker.sock的管理权限。
您可以使用root来执行以下指令。
sudochmodarw/var/run/docker.sock
上面docker容器中的脚本应用非root用户的实际 *** 作就是我分享给大家的全部。期待给你一个参考,也期待你的申请。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)