Linux 系统里 Docker 容器挂载目录导致的权限问题

我们通常会将宿主机的目录挂载到容器中,这样当容器被销毁时,不至于删除一些仍有用的数据文件。在 Windows 系统安装使用 Docker 容器,挂载目录后,可以在容器里任意操作,不用担心目录权限问题。Docker 容器挂载了 Windows 目录,在容器内容可以看到,挂载的子目录权限为 777,文件的权限为 755,所有者是 root。而Linux 系统对权限比较敏感,在容器内很大概率会遇到没有写入权限的问题。简单粗暴的操作,就是在宿主机把挂载目录和文件权限全部改成 777,即可解决。另外一种解决办法...

分类至 Docker
0条评论

Docker 容器内部时间比宿主机时间晚 8 小时

Docker 容器内部时间比宿主机时间晚 8 小时,解决方法如下。

第一种方法

在创建容器时,通过 -v 参数加入时间挂载,使用宿主机时间:

docker run -d --name myphp -v /etc/localtime:/etc/localtime:ro -p 9000:9000  yangrz/php-fpm

 第二种方法

如果不想重新创建容器,则在进入容器后替换默认时区文件,也可以解决。

先进入容器:

docker exec -it myphp /bin/bash

然后在容器中执行命令: 

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

 

分类至 Docker
0条评论

win10 系统 docker 容器里 vi 打开文件时出现很多框框

Windows 系统下管理 docker 容器,我们一般用 PowerShell 或 Cmd,要进入 php 容器输入 docker exec -it php-fpm /bin/bash 即可。在容器中使用 vi 编辑文件时,如果开启了语法高亮功能,会出现很多框框。这些框框并不是中文乱码,而是因为 Windows 系统的 PowerShell 或 Cmd 终端无法正常解析颜色代码造成的。 Windows 系统上安装Git,会附带一个winpty.exe 的程序,用它可以正常解析颜色代码...

分类至 Docker
0条评论

构建自己的 php 镜像并上传至 Docker Hub

之前曾发布了一篇文章 用 docker-compose 构建 lnmp 开发环境,文中的 php 容器是通过自己写的 Dockerfile 构建的,其中 redis、swoole 扩展使用 pecl 指令在线安装,但是由于网络不佳,有时候代码包会下载失败,又得重新构建,很浪费时间。

Docker Hub 是 Docker 官方提供的一项容器镜像托管服务,它允许我们上传自己的镜像文件,方便与其他人共享。我们注册一个 Docker Hub 账号,然后上传自己生成的 php 镜像文件,这样下次使用到 php 容器的时候,直接从自己的 Docker Hub 仓库拉取,就不需要每次重新编译那些繁杂的 php 扩展了。

在命令行下,输入 docker login 指令登录自己的 Docker Hub 账号...

分类至 Docker
0条评论

docker-compose ports 和 expose 的区别

docker-compose中有两种方式可以暴露容器的端口:portsexpose

1、ports

ports暴露容器端口到主机的任意端口或指定端口,用法:

ports:
  - "80:80"     # 绑定容器的80端口到主机的80端口
  - "9000:80"   # 绑定容器的80端口到主机的9000端口
  - "443"       # 绑定容器的443端口到主机的任意端口,容器启动时随机分配绑定的主机端口号

不管是否指定主机端口,使用ports都会将端口暴露给主机和其他容器

2、expose

expose暴露容器给link到当前容器的容器,或者暴露给同一个networks的容器,用法:

expose:
  - "3000"
  - "8000"

以上指令将当前容器的端口30008000暴露给其他容器

ports的区别是,expose不会将端口暴露给主机,主机无法访问expose的端口。

分类至 Docker
0条评论

用 docker-compose 构建 lnmp 开发环境

基于 docker-compose,一键构建 lnmp 开发环境。搭建成功后,包含的容器/软件版本如下:

容器名称 基础镜像 当前安装成功版本
web-php php:7.2-fpm 7.2.21
web-nginx nginx:stable 1.16.0
web-mysql mysql:5.7 5.7.27
web-redis redis:latest 5.0.5

每个容器都是基于官方镜像构建。由于 php-fpm 官方镜像默认很多扩展没装上,这里单独做了一个 Dockerfile 文件来补充安装。

分类至 Docker
0条评论

win10 系统 docker 安装 lnmp 环境

1、创建目录
首先,位于D盘分别创建用于存放配置文件和数据文件的目录:
D:\dnmp
D:\dnmp\conf
D:\dnmp\html
D:\dnmp\mysql
D:\dnmp\redis
2、安装mysql
安装 mysql 5.7.25 版本,指令如下:
docker run -d --name mysql -v D:\dnmp\mysql:/var/lib/mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7.25
...

分类至 Docker
1条评论