Docker网段冲突、docker-compose安装等Docker常见问题汇总
一、docker 网段冲突
1. 问题产生
因为疫情的原因居家办公,发现公司的阿里云数据库,通过外网可以访问,但是在容器里面访问不到。后经排查是因为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
三、退出程序/容器
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.*" 锁定版本。
执行 composer update symfony/console,即可恢复。