商丘企业网站建设推荐,网站分析 工具,嘉兴网站排名优化报价,哪家公司建的沂南体育馆规划图docker fixuid 一、fixuid是什么二、使用场景三、问题dockerfiledocker run 一、fixuid是什么
fixuid是用go语言编写的#xff0c;当容器起来后可以修改容器中非root用户的UID/GID和文件权限。 项目地址#xff1a;https://github.com/boxboat/fixuid
二、使用场景
当容器… docker fixuid 一、fixuid是什么二、使用场景三、问题dockerfiledocker run 一、fixuid是什么
fixuid是用go语言编写的当容器起来后可以修改容器中非root用户的UID/GID和文件权限。 项目地址https://github.com/boxboat/fixuid
二、使用场景
当容器中的用户为UID:1000GID:1000HOST主机的用户为UID:1001, GID:1002此时挂载数据卷会提示提示”permission denied”。 通过使用fixuid在容器启动时当HOST主机的UID/GID传进去fixuid会将容器中用户的UID改成1001GID改成1002并且该用户下的所有文件权限也会改成1001:1002。由于容器内外用户的UID/GID一致此时再挂载数据卷不会由任何问题。
三、问题
默认情况下容器中的进程以 root 用户执行并且这个 root 用户和宿主机中的 root 是同一个用户这意味着 1.容器中运行的进程在合适的机会下有权限控制宿主机中的一切 2.容器中运行的进程以 root 用户执行外界很难追溯到真实的用户 3.容器进程生成的文件是 root 用户所有普通用户没有权限读取修改。fixuid可以自定义容器内普通用户的uid如果固定住了可以让拥有同样uid的宿主机使其目录做挂载做到权限分离
dockerfile
#在线部分
RUN USERdocker \GROUPdocker \curl -SsL https://github.com/boxboat/fixuid/releases/download/v0.5.1/fixuid-0.5.1-linux-amd64.tar.gz | tar -C /usr/local/bin -xzf - \chown root:root /usr/local/bin/fixuid \chmod 4755 /usr/local/bin/fixuid \mkdir -p /etc/fixuid \printf user: $USER\ngroup: $GROUP\n /etc/fixuid/config.yml#离线全部
FROM debian:latest
COPY fixuid-0.4.1-linux-amd64.tar.gz /opt
RUN useradd -m docker
RUN USERdocker \GROUPdocker \tar -xzf /opt/fixuid-0.4.1-linux-amd64.tar.gz -C /usr/local/bin \chown root:root /usr/local/bin/fixuid \chmod 4755 /usr/local/bin/fixuid \mkdir -p /etc/fixuid \printf user: $USER\ngroup: $GROUP\n /etc/fixuid/config.yml
USER docker:docker
ENTRYPOINT [fixuid]docker run
#这里没有写死uid需要同普通用户一样uid可以动态传入不想也可以单独传入不一样的uiddocker run --rm -it -u 1001:1000 vm01:v1 sh
fixuid: fixuid should only ever be used on development systems. DO NOT USE IN PRODUCTION
fixuid: updating user docker to UID 1001
fixuid: runtime GID 1000 already matches container group docker GID
fixuid: recursively searching path /
fixuid: chown /home/docker
fixuid: chown /home/docker/.bash_logout
fixuid: chown /home/docker/.bashrc
fixuid: chown /home/docker/.profile
$ id
uid1001(docker) gid1000(docker) groups1000(docker)# 换了普通的镜像
docker run --rm -it -u 1002:1001 centos:centos7 bash
bash-4.2$ id
uid1002 gid1001 groups1001
bash-4.2$ exit