docker php-fpm 一直重启问题处理

docker php-fpm 一直重启问题处理,第1张

使用 docker-compose up -d 启动 php-fpm 容器后会发现容器成功启动之后会马上关闭。由于设置了 restart: always 会导致容器再次启动然后关闭

官方 php-fpm : 71 镜像,使用自定义的 php-fpm 配置。
php-fpm 配置是从现有生产服务器上复制过来的。配置没有问题。

看log,发现fpm正常启动了,然后马上就退出

跟镜像中自带的 php-fpmconf 比较发现镜像中使用 daemonize = no ,而我自定义配置中 daemonize = yes 是后台运行的。
那么很明显官方镜像是故意使用 daemonize = no 不让 fpm 在后台中运行,进而阻止容器退出

修改 php-fpmconf 中如下
daemonize = no

阿里云服务器 CentOS72 启动docker-compose报错
系统防火墙: firewall

解决方式
service docker restart 重启docker即可
错误原因分析:
测试发现只要在docker运行期间更改防火墙状态(打开或者关闭防火墙)都会报这个错,所以应该是和防火墙有关系
查了些资料说应该是: 原地址到目标地址转换的时候没有在docker主机的iptables规则中找到nat表规则,但是centos7都没有使用iptables了,具体什么问题还没有确定

1、首先将下载下来的所有rpm包上传到服务器,执行如下命令进行离线安装,该命令会自动解决依赖。
2、其次安装完毕后执行如下命令可以看到系统里已经有相关文件。
3、然后最后执行如下命令重启docker即可。Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。

当前Ubuntu 系统下的 Docker 的安装包只提供64位。如果你想运行32位的 Docker,你需要。
安装 Docker
通过 apt-get 安装 Docker 简直是小菜一碟。
$ sudo apt-get install dockerio
如果你不是 root 组的用户,你可以把自己加入到 docker 用户组。下面的命令可以让没有 root 权限的用户使用 Docker:
$ sudo usermod -a -G docker $USER
重新登录,以便让你的用户组权限生效。
下一步是编辑 Docker 配置文件,确定 Docker 可执行文件的路径:
$ sudo vi /etc/default/dockerio
DOCKER= /usr/bin/dockerio
重启 Docker 服务:
$ sudo service dockerio restart
管理 Docker Container 容器
如果你想在新的 Docker 容器下创建一个新的 Ubuntu *** 作系统,你首先需要 pull 一个 的 Docker 镜像。下面的命令可以通过网络下载 Docker 镜像:
$ docker pull ubuntu
你可以使用下面的命令启动 Docker 里面的 Ubuntu 系统。最后的参数 /bin/bash 表示一旦容器启动,首先会执行简单的 bash。
$ docker run -i -t ubuntu /bin/bash
上面的命令会立即启动 Ubuntu container 容器(这是一个完美的容器!),然后它会提供一个 shell 提示符运行环境给你。现在开始你可以通过这个沙箱环境访问一个完整的 Ubuntu 系统了。

输入 exit 命令退出 Docker 容器。
你也可以用下面的命令进入不同的系统。比如 Fedora:
$ dockerio run -i -t fedora /bin/bash
如果系统中还不存在 Fedora Docker 镜像,这个命令会自动下载它,然后启动这个 Fedora 的 Docker 容器。

如果你想要开启指定版本的系统,比如 Ubuntu 1304,你可以使用下面的命令:
$ dockerio run -i -t ubuntu:1304 /bin/bash
Container 容器网络设置
Docker 使用 Linux 桥接技术与其他容器通信,以及连通外网。安装完 Docker 后你应该可以看到 docker0 这个网桥,这是 Docker 默认创建的。你创建的每个容器都会通过这个网桥连接到网络。

自定义 Linux 网桥
如果你想自定义网桥,你可以执行以下步骤。你可以在这个网桥后面分配一个子网,并为这个子网分配地址。下面的命令会为 Docker 子网分配 10000/24 地址段:
$ sudo apt-get install bridge-utils
$ sudo brctl addbr br0
$ sudo ifconfig br0 10001 netmask 2552552550
然后在 /etc/default/dockerio 文件的 DOCKER_OPTS 变量里添加 -b=br0 选项,并重启 Docker 服务:
$ sudo service dockerio restart
到目前为止,任何创建的容器都会连上 br0 网桥,它们的 IP 地址会从 10000/24 中自动分配(译注:在10002到1000254之间随机分配)。
其他自定义设置
你可以通过 /etc/default/dockerio 文件的 DOCKER_OPTS 变量设置其他一些属性:
-dns 8888 -dns 8844 : 为容器指定 DNS 服务器。
-icc=false : 将容器与其他容器隔离出来
疑难解答
1、当你运行 dockerio 命令时,你可能会遇到以下问题:
dial unix /var/run/dockersock: no such file or directory
这个错误可能是由于 Docker 后台进程没有启动。检查下 Docker 后台进程的状态,确认它已经处于启动状态:
$ sudo service dockerio status$ sudo service dockerio start


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13480702.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-15
下一篇 2023-08-15

发表评论

登录后才能评论

评论列表(0条)

保存