当安装镜像后本地无法链接

当安装镜像后 出现 mysql 链接不上 redis链接不上
主要是容器内访问 mysql 不属于本地 要用 本地ip 地址

原因:
docker运行的每个容器都是隔离的,redis默认不允许外部连接,因此想要部署在docker容器内的应用连接上redis,需要修改redis默认配置,配置文件运行redis即可。

windows docker 打开又关闭

是 Hyper-V 是微软开发的虚拟机,未开启导致,阅读该 文章 安步骤处理

docker-compose命令不存在怎么办

解决方法:

  1. fedora系统内利用“dnf install docker-compose”命令安装“docker-compose”即可;
  2. CentOS 7/RHEL7”系统内利用“yum install docker-compose”命令安装即可;
  3. debian及其变种如Ubuntu系统内利用“apt-get install docker-compose”命令安装即可。

如果把 host 写成 IP 地址,

$host=’172.17.0.2’;
会报错

1
Error!: SQLSTATE[HY000] [2002] No route to host

应该写成mysql容器的名称,

例如
$host=’lnmp_mysql’;

这里有个前提:

  • 需要你的mysql容器和php容器在同一个docker网络,
  • 或者使用 —link 指定。

容器的时间与服务器不一致的修复方法

主要是docker默认使用的是美国时区,之行以下代码获取当前时区。

1
php -info | grep timezone

所以要进行调整,进入php容器内之行

1
printf '[PHP]\ndate.timezone = Asia/Shanghai\n' > /usr/local/etc/php/conf.d/tzone.ini

或者在dockerFile中添加以下命令,重新构建镜像

1
RUN printf '[PHP]\ndate.timezone = Asia/Shanghai\n' > /usr/local/etc/php/conf.d/tzone.ini

再查看,时区正常了

您可以使用以下命令将宿主机的时间同步到运行中的容器中,并将时区设置为北京时间:

1
docker exec -it <container_name> ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && date -s "$(date +%Y-%m-%d\ %H:%M:%S)"

请将 <container_name> 替换为您要同步时间的容器的名称。执行此命令后,容器的时间将与宿主机的时间同步,并且时区将设置为中国标准时间(北京时间)。

容器内运行 PHP 时,time() 函数返回的时间戳取决于容器内

在 Docker 容器内运行 PHP 时,time() 函数返回的时间戳取决于容器内 PHP 解释器的系统时区设置。如果该容器的系统时区设置为美国时区,则 time() 函数返回的时间戳也将基于该时区。

要更改容器内 PHP 的系统时区设置,可以在 Dockerfile 中使用 ENV 命令设置 TZ 环境变量,例如:

1
2
3
FROM php:7.4-fpm
ENV TZ=America/New_York
# ...其他指令

这将设置容器的系统时区为美国东部时区(New York)并在构建镜像时生效。您也可以在创建容器时使用 -e 参数来设置 TZ 环境变量,例如:

1
docker run -e TZ=America/New_York my-php-app

请注意,您应该选择与您所在地区相同或最相关的时区设置,以确保正确的时间戳。

启动不了容器

但是执行后仍旧没有重启,大概率是重启的时候报错了,查看日志:

1
sudo docker logs -f 容器名称

在日志里有容器启动不了的问题。

容器间不互通

容器都没有在网络中,想要互通就要以访问容器内的ip 进行访问。

如果在有容器在网络中,如果想要互通就比也加入网络中

1
2
3
docker network connect my-network container1

docker network connect my-network container2

返回 docker 系列

docker部署thinkphp之验证码问题 Call to undefined function Think\imagettftext();

gd库中没有freeType会产生这个问题,则按照以下步骤进行:
docker-php-ext-configure gd –with-freetype –with-jpeg –with-webp
重新编译:
docker-php-ext-install gd
安装完成后重启php 容器即可解决该问题

docker容器间启动有时会启动不了

一般都是端口冲突导致,有时面板docker显示已停用了容器,其实有时端口还是没被杀死,所以要手动杀死端口

windows查看端口占用,杀掉进程

  1. 首先启动cmd命令窗口 【windows+R
  2. 在命令窗口中输入“netstat -ano”命令,回车,就可看到系统当前所有端口的占用情况;或者输入“netstat -ano |findstr "端口号"”命令,回车,就可以看到指定端口的占用情况。

比如:netstat -ano|findstr "" , 其中3306 是要查找的端口

  1. 输入 tasklist|findstr “4876”, 通过PID查询出进程。

  2. 输入 taskkill /f /t /im mysqld.exe 或者 :taskkill /PID 53176 -T -F (其中-T是包括了子进程,-F是强制), 通过结束该进程。

Mac 上查看端口占用情况并结束进程的方法

步骤1:打开终端应用
在 Launchpad 或者应用程序文件夹中找到终端应用,双击打开。

步骤2:查看端口占用情况
在终端中输入以下命令来查看当前系统中所有的端口占用情况:

sudo lsof -i :<端口号>

将 <端口号> 替换为你要查询的端口号。例如,如果你想查看端口 80 的占用情况,命令应该是:

sudo lsof -i :80

按下回车键后,系统会列出所有正在使用该端口的进程信息,包括进程名称、进程 ID 等。

步骤3:结束进程
如果你确定要结束某个进程以释放端口,可以使用以下命令:

sudo kill -9 <进程ID>

将 <进程ID> 替换为你要结束的进程的实际 ID;加-9为强制杀死进程。例如,如果你要结束进程 ID 12345,命令应该是:

sudo kill -9 12345

请确保你确实想要结束该进程,因为这个操作是不可逆的。

步骤4:输入管理员密码
在终端中输入以上的结束进程命令后,系统会要求你输入管理员密码。输入密码时,终端中不会显示任何字符,但你可以正常输入。输入密码后按下回车键。

步骤5:验证进程是否结束
结束进程后,你可以再次运行步骤2的命令来验证进程是否已经结束。

通过以上步骤,你可以在 Mac 上查看特定端口的占用情况,并且结束相关的进程以释放端口。请注意,在使用 sudo 命令时要谨慎,确保你知道自己在做什么,并且只结束你所了解的进程。

avatar
懒觉猫先生
欢迎你们的到来!
关注我吧
最新文章
最新评论
正在加载中...
网站资讯
文章数目 :
177
已运行时间 :
本站总字数 :
120.4k
本站访客数 :
本站总访问量 :
最后更新时间 :