美文网首页
Docker 小问题

Docker 小问题

作者: 子丿龙 | 来源:发表于2021-04-19 09:55 被阅读0次

1. 更改端口映射,(例如,启动mysql是忘记配置端口映射)

方法1:

1.先停止容器

docker stop mysqlA

2.再停止docker

systemctl stop docker

3.修改docker配置文件,在这个json文件里,找到 PortBindings 对象,追加新端口参数

vi   /var/lib/docker/containers/{container_id}/hostconfig.json

例如,追加一个3307端口映射:

"PortBindings": {
     "3306/tcp": [
         {
             "HostIp": "",
             "HostPort": "3306"
         }
     ],
     "3306/tcp": [
         {
             "HostIp": "",
             "HostPort": "3307"
         } 
     ]
 }

4.检查config.v2.json文件里是否也记录了端口映射,也要修改

"Config": {
    ....
    "ExposedPorts": {
        "8898/tcp": {}
    },
    ....
},
"NetworkSettings": {
....
"Ports": {
     "8898/tcp": [
         {
             "HostIp": "",
             "HostPort": "8082"
         },
        {
             "HostIp": "",
             "HostPort": "8083"
         }
     ],

5.启动docker服务

systemctl start docker

6.启动容器

docker start  mysqlA
方法2:

本质就是创建新镜像重新启动,但是如果原来的容器已经配置了参数,那么这种方式可以保留参数(因为是用原来带参数的容器构建的镜像)。
1.先停止容器

docker stop mysqlA

2.将容器commit成为一个镜像

docker commit mysqlA  mysqlB

3.运行容器

docker run  -p 3306:3306   -d  mysqlB

2. 容器A 无法访问 在同一个宿主机内的 容器B(例如:端口8082),

  • 正常情况下,我们想到的的是localhost。但是不对,容器里localhost并不是指宿主机的localhost,所以,并不能在A容器中通过localhost:8082访问到同一个宿主机的B容器
  • docker在运行时就建立了虚拟网卡,并命名为docker0,再宿主机运行 ifconfig,可以发现 docker0的本地ip是172.17.0.1,将localhost改为这个即可访问。

3. redis容器无法被 其他容器访问(例如容器A)

  • redis.conf文件里 有一个bind参数,默认是bind 127.0.0.0。bind参数意思是限制只能通过本机客户端访问(不是网上说的限制只能那个ip访问,这里bind的只能是本机ip,其他没用),懂了bind的意义后,我们就好办了。
  • 因为现在是redis容器,所以他的本机地址不再是127.0.0.0,所以你启动redis后,通过docker inspect redis,发现报127.0.0.0链接错误。我这里通过 docker ispect redis 发现 redis启动后,给自动分配的ip地址是 172.17.0.5(我这里是这个),所以redis.conf文件里,把bind参数改为bind这个即可。

4. 容器时间和宿主机时间不一致(例如:我的lottery容器)

#将宿主机时间文件拷贝至容器
docker cp /etc/localtime  lottery:/etc/
  • 执行完如果报错:
    Error response from daemon: Error processing tar file(exit status 1): invalid symlink "/etc/localtime" -> "../usr/share/zoneinfo/Asia/Shanghai"
    就换成下边方式执行。
docker cp  /usr/share/zoneinfo/Asia/Shanghai   lottery:/etc/localtime

相关文章

网友评论

      本文标题:Docker 小问题

      本文链接:https://www.haomeiwen.com/subject/cwfplltx.html