Docker用户切换

Docker用户切换

Docker镜像多数仅包含root用户,且设置容器以root身份启动。如果想要以其他用户身份启动容器,需要保证镜像中含有其他用户,并在容器启动时指定用户。

镜像构建

  • 方法一:使用Dockerfile重新构建包含其他用户的镜像。
  • 方法二:在目标容器中添加其他用户后,再打包成镜像。以由root用户添加ubuntu用户为例。
    useradd -d  "/home/ubuntu" -m -s "/bin/bash" ubuntu -u 1002
    echo 'ubuntu:12345678' | chpasswd
    

指定用户启动

使用docker-compose启动

version: '3.5'
services:
	dgl_cluster:
		container_name: dgl_cluster
        image: dgl_single:v1.0
        user: "dgl"
        stdin_open: true
        tty: true
        command: /bin/bash

用户切换

当容器以非root用户身份启动时,若需要运行某些需要root权限的命令,则需要先切换成root用户,并在命令执行后切换回来。以启动sshd为例。

  • 使用expect命令编写/home/dgl/.ssh/sshd.sh脚本
    #!/bin/bash	
    expect <<-EOF
    set timeout -1
    spawn su root
    expect "Password:"
    send "12345678\r"
    expect "#"
    send "chown pbg:pbg -R /home/pbg/MyWorkspace\r"
    expect "#"
    send "/usr/sbin/sshd\r"
    expect "#"
    send "exit\r"
    expect eof
    EOF
    

    使用apt install expect进行安装

  • 在容器启动时启动脚本
    version: '3.5'
    services:
    	dgl_cluster:
    		container_name: dgl_cluster
      		image: dgl_single:v1.0
      		user: "dgl"
            stdin_open: true
            tty: true
            command: /bin/bash -c "/bin/bash /home/dgl/.ssh/sshd.sh && /bin/bash"
    
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值