在docker容器中使用非root用户执行脚本 *** 作

在docker容器中使用非root用户执行脚本 *** 作,第1张

在docker容器中使用非root用户执行脚本 *** 作

本文详细介绍了非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用户的实际 *** 作就是我分享给大家的全部。期待给你一个参考,也期待你的申请。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/774143.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-03
下一篇 2022-05-03

发表评论

登录后才能评论

评论列表(0条)

保存