Docker网段冲突、docker-compose安装等Docker常见问题汇总

         一、docker 网段冲突

1.  问题产生

       因为疫情的原因居家办公,发现公司的阿里云数据库,通过外网可以访问,但是在容器里面访问不到。后经排查是因为docker容器的网段和公司的网段冲突了,导致登陆不上去。

       

docker 网络测试 docker网络不稳定_Docker

       这里需要解决的问题是:docker默认网段是172.17,和公司的网段冲突的问题       

      2.  解决方案

      方案一:不改docker网段,创建不和公司网段冲突的docker子网段

      1) 创建新的网段

      docker network create --driver=bridge --subnet=192.161.0.0/16 monitor_net

      2)运行容器时指定上面创建的网络

  monitor_net

     3)在docker-compose同样通过networks指定,形如下

1 version: '3'
 2 networks:
 3    monitor:
 4    #使用已经存在的网络
 5      external:
 6        name: monitor_net  
 7 
 8 services:
 9     prometheus:
10         image: prom/prometheus
11         container_name: prometheus
12         hostname: prometheus
13         privileged: true
14         restart: always
15         volumes:
16             - /usr/local/src/config/prometheus.yml:/etc/prometheus/prometheus.yml
17             - /usr/local/src/config/node_down.yml:/etc/prometheus/node_down.yml
18         ports:
19             - "9091:9090"
20         networks:
21             - monitor
22         links:
23             - alertmanager
24             - node-exporter

修改docker默认网段 (我这里采用的这种方式,比较方便,主要是不用改yml文件,再重新运行容器^_^)

      1)  停止docker
      systemctl stop docker
      2)  删除原有网桥

      ip link del docker0 down

      3)  vi /etc/docker/daemon.json,添加形如下内容
     "bip":"192.161.20.1/24"
      如果没有daemon.json文件,则新建。文件内容形如下:

1 {
 2  "registry-mirrors":[
 3    "http://yxs0oar5.mirror.aliyuncs.com",
 4    "http://registry.docker-cn.com",
 5    "http://docker.mirrors.ustc.edu.cn",
 6    "http://hub-mirror.c.163.com"
 7  ],
 8  "insecure-registries":[
 9   "registry.docker-cn.com",
10   "docker.mirrors.ustc.edu.cn"
11  ],
12   "bip":"192.161.20.1/24"
13 }

    4) 重启docker服务

    systemctl restart docker

    二、docker-compose安装

    1.  安装方式:使用二进制文件安装

     centos系统下安装:

     Linux 上我们可以从 Github 上下载它的二进制包下载到本地并发送linux下,复制到 /usr/local/bin/就可以正常使用,最新发行的版本地址:https://github.com/docker/compose/releases。

     1) 运行以下命令以下载 Docker Compose 的当前稳定版本

     sudo curl -L "https://github.com/docker/compose/releases/download/v2.2.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

     2)将可执行权限应用于二进制文件:

     sudo chmod +x /usr/local/bin/docker-compose
     3)创建软链

    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
     4)  测试是否安装成功

     docker-compose --version

      

docker 网络测试 docker网络不稳定_docker 网络测试_02

      三、退出程序/容器

      1.   退出容器,而不终止容器

      按Ctrl+p,后按Ctrl+q,如果按Ctrl+C会使容器内的应用进程终止,进而会使容器终止。

      2. hyperf 2.0 中Ctrl+C无法退出程序的问题

      hypef 2.0版本框架服务,本地执行过composer更新 后,导致程序启动后Ctrl + C 无法退出程序。
      解决方案:
      将composer.json中添加 "symfony/console": "5.4.11.*" 锁定版本。

       

docker 网络测试 docker网络不稳定_docker 网络测试_03

      执行 composer update symfony/console,即可恢复。

      

docker 网络测试 docker网络不稳定_docker_04