容器端口和权限修改

docker修改已有容器的权限和端口映射

使用docker的容器时,可能会遇到当前容器的权限不足,或是端口映射不正确的情况,此时需要对其进行修改。常用的方法是将容器打包成镜像,再通过镜像创建新的容器,在创建时添加权限和新的端口映射,这里给出不通过创建新容器来修改已有容器权限和端口映射的方法。

查看容器的配置信息

docker inspect 容器名

创建一个非特权模式的,3311端口映射到3306端口的centos7容器。

[root@centos2 ~]# docker create -it --name centos7 -h mycentos7 -p 3311:3306  centos:7.9.2009
0adffc8b817f00f07d2b6dd077dbbcff3ef27f400ab0d8141142faede38894db

记录id

进入这个容器

[root@centos2 ~]# docker start centos7
centos7
[root@centos2 ~]# docker exec -it centos7 /bin/bash
[root@mycentos7 /]#

安装httpd并运行,此时没有权限

[root@mycentos7 /]# yum -y install httpd
[root@mycentos7 /]# systemctl start httpd
Failed to get D-Bus connection: Operation not permitted

退出容器,关闭容器和docker

进入宿主机/var/lib/docker/containers目录,找到对应容器id的目录

cd /var/lib/docker/containers

此处只创建了一个容器,进入该目录

请添加图片描述

找到

config.v2.json

hostconfig.json

两个文件
请添加图片描述

先备份

cp -ar config.v2.json config.v2.json.backup
cp -ar hostconfig.json hostconfig.json.backup

修改hostconfig.json

vim hostconfig.json

请添加图片描述

字段"PortBindings":{“3306/tcp”:[{“HostIp”:“”,“HostPort”:“3311”}]}为端口映射,将容器的3306映射到宿主机的3311,这里将其修改为映射到3313

字段"Privileged":false为特权模式标签,这里标记为非特权模式,将其修改为true

请添加图片描述

保存退出

修改config.v2.json

vim config.v2.json

请添加图片描述

“ExposedPorts”:{“3306/tcp”:{}}为存在映射端口,此处不修改

两处/bin/bash 修改为/sbin/init

请添加图片描述

保存退出

重启docker,启动容器

请添加图片描述

可以看到容器shell已经改变

查看端口映射,可以看到3306的映射端口已经从3311改为了3313

请添加图片描述

进入容器,启动httpd,正常启动,说明已经进入特权模式

请添加图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值