gosu是什么?

gosu是个用来提升指定账号的权限的工具,作用与sudo命令类似,而docker中使用gosu的起源来自安全问题;

就连docker的官方也在说,不要在容器中使用sudo命令,因为sudo的执行机制问题,如下所示,我们在启动容器时执行了sudo ps -ef命令,发现我们命名只执行了一条命令,但是竟然会有2个进程,请注意PID,真正执行ps -ef的命令的PID是6,而不知1,这回导致当前进程无法接受Unix的SIGNAL.

也就是出于这个原因,在docker中官方推荐我们使用gosu工具.

gosu的安装

gosu的github地址如下,国内github不是很稳定,所以需要分时段和运气…

https://github.com/tianon/gosu/

如果实在打不开github,也可以直接将其github上的项目clone到本地:

git clone https://github.com/tianon/gosu/

不过上面的信息是基于Debian和alpine的,所以如果你用的是Debian可以直接参照使用.

如果用的是其他Linux的发行版,那么请继续往下看:(我这用的是Centos)

在dockerhub上,发现了有集成了gosu的linux镜像,点进去看了看,有了一些思绪.

https://hub.docker.com/r/gosu/assets/

gosu/assetsgosu/centos:tag,是我们需要的内容.

  1. 将gosu/assets/目录中的内容下载or复制到本地,并且保存在assets目路中,如下所示:
https://github.com/kaluzki/docker/tree/master/gosu/assets



2. 修改1.中的Dockerfile
将响应的带有gosu的Linux发行版的Dockerfile中的内容添加到1.的Dockerfile中,稍作修改:

https://github.com/kaluzki/docker/blob/gosu/gosu/centos/7.4.Dockerfile
# 为本次build阶段起一个name下面会引用
FROM alpine as gosu-assets
LABEL "author"="shuu"
COPY *.sh /opt/gosu/
RUN set -x \&& apk add --no-cache --virtual .gosu-deps \dpkg \gnupg \openssl \&& /opt/gosu/gosu.download.sh \&& apk del .gosu-deps \&& rm /tmp/* -rf
# tag随意,我这里本地有这个镜像免得下载了
FROM centos:centos7
COPY --from=gosu-assets /opt/gosu /opt/gosu
RUN set -x \&& /opt/gosu/gosu.install.sh \&& rm -fr /opt/gosu
  1. 根据Dockerfile构建镜像
sudo docker build -t centos:gosu .

整个过程会持续很久很久…我这里前一天半夜12点在后台跑的,看完成时间估计3个小时?因为有从google下载的内容,所以会很慢.

这里也只是做个演示,如果是想使用空的centos镜像,可以直接在dockerhub上下载安装.毕竟有时候我们是想要在现有的镜像中添加gosu,那么真个过程就不可避免了.

由于Dockerfile中我写了2段build,所以第一段并没有标签名,这里可以手动给它加个标签

sudo docker tag 1b858729a4e0 alpine:gosu

ok,得到镜像之后我们来试着运行下gosu,看看效果.

在这里插入代码片


看,与sudo不同,此时的PID为1.

进入容器中,创建一个test目录,可以看到默认的owner和group都是root.

当我们想要在root用户下,创建一个非以普通用户为owner和group的目录时可以使用gosu,这真的是一个很好用的工具:

我这里事先创建了一个普通用户.

# 以shuu的身份创建testgosu目录
gosu shuu mkdir ~shuu/testgosu
# 查看目录信息
ll -h ~shuu/

Centos用gosu安装相关推荐

  1. linux 6.4 图形界面,为CentOS 6.4安装图形界面并用VNC远程连接

    为CentOS 6.4安装图形界面并用VNC远程连接 1.安装VNC服务 #yum install -y tigervnc-server #passwd                        ...

  2. 如何在 CentOS 7 中安装或升级最新的内核

    转 原创 2017-03-19 译者:geekpi Linux中国 随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要.此外,更新内核将帮助我们利用新的内核函数,并保护自己免受 ...

  3. 在CentOS 7中安装与配置Tomcat-8方法

    安装前提 在CentOS 7中安装与配置JDK8 安装tomcat  apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...

  4. Centos系统上安装php遇到的错误解决方法集锦

    Centos系统上安装php遇到的错误解决方法集锦 1.configure: error: xml2-config not found. Please check your libxml2 insta ...

  5. CentOS下编译安装python包管理安装工具pip教程

    ubuntu 安装pip 代码如下: apt-get install python-pip 安装requests, pip install requests 对于centos的,直接 yum inst ...

  6. Centos 7.5 安装Zabbix4.0

    Centos 7.5 安装Zabbix4.0 一.参考链接 zabbix官方安装文档:https://www.zabbix.com/cn/download zabbix官方产品文档:https://w ...

  7. mysql linux centos 安装_Linux centos 下在线安装mysql

    1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...

  8. CentOS 6.0安装VNC Server

    2019独角兽企业重金招聘Python工程师标准>>> 环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装 ...

  9. Centos下Yum安装PHP5.5,5.6

    Centos下Yum安装PHP5.5,5.6 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | gre ...

最新文章

  1. Spring Boot 拦截器
  2. Scapy之ARP询问
  3. NLog自定义Layout Renderer
  4. 数据库数据规范化看不懂_数据库管理系统中的规范化
  5. django界面上弹出bootstrap modal对话框,对话框中包含iframe并请求一个新的页面
  6. php 手写签批 手机办公_手写签批 打造无纸化办公的完美替代
  7. ip地址配置 mongodb_MongoDB 3.6版本中bind_ip设置详解
  8. 明明是数字“1000”转换成整形时却报错---BOM 非法字符 /65279(FEFF) big endian(FEFF)和little endian(FFFE) 模式
  9. Win10 多出4个显示器无法删除的“通用非即插即用监视器”问题解决
  10. CS224n(一) 自然语言处理与深度学习简介
  11. “远程网络教学系统”教师参与者的用例图(志志)
  12. PHPStorm运行PHP代码(新手教程),PHP新手入门教程
  13. 企业微信调用扫一扫接口
  14. 《书生云超融合一体机》T-CAM评审会召开
  15. SIGBUS:BUS_ADRERR for stack access violation in memcpy
  16. 修订歌词《仙剑》电视原声插曲《逍遥叹》
  17. R学习之统计算法与R优化包(矩估计法也即Newton) --(R语言编程)-----数模
  18. vue结合elementUI实现tag多标签页
  19. TensorFlow2.0学习笔记2-tf2.0两种方式搭建神经网络
  20. 大疆图像算法面试流程

热门文章

  1. [原创]肥肉,肥肉!
  2. matlab考试试卷
  3. SpringBoot自动装配原理解析——面试可以这样会回答
  4. 【Neo4j】第 7 章:社区检测和相似性措施
  5. 认证服务系统和CA RA LRA
  6. C#获取系统当前是否处于锁屏状态
  7. 数据类型及其存储方式(C语言详解)
  8. Python 爬虫和数据分析实战
  9. Excel如何将一列多行数据转为多列多行显示
  10. 1043: 绩点计算