Centos用gosu安装
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/assets
和gosu/centos:tag
,是我们需要的内容.
- 将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
- 根据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安装相关推荐
- linux 6.4 图形界面,为CentOS 6.4安装图形界面并用VNC远程连接
为CentOS 6.4安装图形界面并用VNC远程连接 1.安装VNC服务 #yum install -y tigervnc-server #passwd ...
- 如何在 CentOS 7 中安装或升级最新的内核
转 原创 2017-03-19 译者:geekpi Linux中国 随着新的设备和技术定期出来,如果我们想充分利用它们,保持最新的内核就很重要.此外,更新内核将帮助我们利用新的内核函数,并保护自己免受 ...
- 在CentOS 7中安装与配置Tomcat-8方法
安装前提 在CentOS 7中安装与配置JDK8 安装tomcat apache-tomcat-8.0.14.tar.gz文件上传到/usr/local中执行以下操作: [root@localhos ...
- Centos系统上安装php遇到的错误解决方法集锦
Centos系统上安装php遇到的错误解决方法集锦 1.configure: error: xml2-config not found. Please check your libxml2 insta ...
- CentOS下编译安装python包管理安装工具pip教程
ubuntu 安装pip 代码如下: apt-get install python-pip 安装requests, pip install requests 对于centos的,直接 yum inst ...
- Centos 7.5 安装Zabbix4.0
Centos 7.5 安装Zabbix4.0 一.参考链接 zabbix官方安装文档:https://www.zabbix.com/cn/download zabbix官方产品文档:https://w ...
- mysql linux centos 安装_Linux centos 下在线安装mysql
1,查看是否有安装过mysql: #rpm -qa | grep mysql 如果无结果返回,说明没有安装Mysql,可以全新安装. 2,查看在线服务器提供的Mysql相关的安装包有哪些: #yum ...
- CentOS 6.0安装VNC Server
2019独角兽企业重金招聘Python工程师标准>>> 环境 服务器:192.168.10.181 系统:CentOS 6.0 安装过程 1.切换至root用户 2.检测系统是否安装 ...
- Centos下Yum安装PHP5.5,5.6
Centos下Yum安装PHP5.5,5.6 默认的版本太低了,手动安装有一些麻烦,想采用Yum安装的可以使用下面的方案: 1.检查当前安装的PHP包 yum list installed | gre ...
最新文章
- Spring Boot 拦截器
- Scapy之ARP询问
- NLog自定义Layout Renderer
- 数据库数据规范化看不懂_数据库管理系统中的规范化
- django界面上弹出bootstrap modal对话框,对话框中包含iframe并请求一个新的页面
- php 手写签批 手机办公_手写签批 打造无纸化办公的完美替代
- ip地址配置 mongodb_MongoDB 3.6版本中bind_ip设置详解
- 明明是数字“1000”转换成整形时却报错---BOM 非法字符 /65279(FEFF) big endian(FEFF)和little endian(FFFE) 模式
- Win10 多出4个显示器无法删除的“通用非即插即用监视器”问题解决
- CS224n(一) 自然语言处理与深度学习简介
- “远程网络教学系统”教师参与者的用例图(志志)
- PHPStorm运行PHP代码(新手教程),PHP新手入门教程
- 企业微信调用扫一扫接口
- 《书生云超融合一体机》T-CAM评审会召开
- SIGBUS:BUS_ADRERR for stack access violation in memcpy
- 修订歌词《仙剑》电视原声插曲《逍遥叹》
- R学习之统计算法与R优化包(矩估计法也即Newton) --(R语言编程)-----数模
- vue结合elementUI实现tag多标签页
- TensorFlow2.0学习笔记2-tf2.0两种方式搭建神经网络
- 大疆图像算法面试流程