docker开启容器后,修改配置文件解决忘记映射端口号问题

小编:饿狼 更新时间:2022-05-01

先看下操作,真是一顿操作猛如虎,一看战绩0-5

首先配置harbor仓库,拉取仓库中的redis镜像

[root@localhost /]# docker pull hub.vrgv.com/devops/redis:20210104

[root@localhost /]# docker run -di --privileged=true --name redis hub.vrgv.com/devops/redis:20210104 /usr/sbin/init

注:我这里给容器开启了最高权限,忘记映射端口号了,也就是容器内部开多少个服务,我外部也无法访问到

进入容器修改了redis的配置,修改完,发现我的redis咋连接不上呢,开始检查防火墙规则,检查端口号蒙了,没有映射!

ss -nltp|grep 6379 [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f43e2f0edd2d hub.vrgv.com/devops/redis:20210104 "/usr/sbin/init" 3 minutes ago Up 3 minutes 6379/tcp redis

开始想办法解决没有映射端口号的问题,第一我redis好不容易配置完的,不想再配置一遍,还有就是有没有直接修改的方案,懒得要死,不想commit后在docker run了。

找到了度娘,帮我解决了这个问题

步骤:

1.查看容器挂载位置

[root@localhost /]# df -h Filesystem Size Used Avail Use% Mounted on devtmpfs 2.0G 0 2.0G 0% /dev tmpfs 2.0G 0 2.0G 0% /dev/shm tmpfs 2.0G 8.8M 2.0G 1% /run tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup /dev/mapper/centos-root 8.0G 5.6G 2.5G 70% / /dev/sda1 1014M 179M 836M 18% /boot tmpfs 393M 0 393M 0% /run/user/0 overlay 8.0G 5.6G 2.5G 70% /vrgv/software/overlay2/50878e5cd036dbc68a07bebe1e38e7c7843f6daf43bd3a73c84a73a97fc337ec/merged shm 64M 0 64M 0% /vrgv/software/containers/f43e2f0edd2d5e92714feaf4419172e9d0e2e4db5dcd324b5251bf3eff138783/mounts/shm

我的是在/vrgv/software目录下,默认的是在/var/lib/下,我自定义修改过位置

2.查看容器ID号

[root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f43e2f0edd2d hub.vrgv.com/devops/redis:20210104 "/usr/sbin/init" 10 minutes ago Up 6 seconds 6379/tcp redis

3.关闭容器

[root@localhost /]# docker stop redis

4.修改容器配置文件

进入该容器的挂载位置

[root@localhost /]# cd /vrgv/software/containers/f43e2f0edd2d5e92714feaf4419172e9d0e2e4db5dcd324b5251bf3eff138783/

f43e2f0edd2d5e92714feaf4419172e9d0e2e4db5dcd324b5251bf3eff138783:第2步查看到的ID号,或者通过docker inspect查看容器具体信息,也会有显示

修改配置文件

[root@localhost f43e2f0edd2d5e92714feaf4419172e9d0e2e4db5dcd324b5251bf3eff138783]# vi hostconfig.jsondocker开启容器后,修改配置文件解决忘记映射端口号问题

原始是这个样子:"PortBindings":{},

修改成"PortBindings":{"6379/tcp":[{"HostIp":"","HostPort":"6379"}]},

前面的6379是容器内部的端口号,后面的是要映射出去的端口号,如果是修改端口号,那就更简单,直接修改数字即可

这时候千万不要重启容器,要重新docker引擎才会生效,要不然会恢复原始配置

[root@localhost /]# systemctl restart docker [root@localhost /]# docker start redis redis [root@localhost /]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f43e2f0edd2d hub.vrgv.com/devops/redis:20210104 "/usr/sbin/init" 28 minutes ago Up 2 seconds 0.0.0.0:6379->6379/tcp redis

好了,修改完成了


修改配置文件缺点:需要重新启动整个docker引擎!