Docker 以指定用户身份进入容器

平时习惯这样进入 php-fpm 容器:

$ docker exec -it php-fpm bash

进去以后,默认是 root 帐号。

现在有些指令想用 www-data 帐号来执行,切换 www-data 帐号时却提示该帐号未启用:

$ su www-data
This account is currently not available.

 

分类至 Docker
0条评论

Docker 容器挂载数据卷出现 Permission denied 权限问题的解决办法

问题原因及解决办法
原因是CentOS7中的安全模块SELinux把权限禁掉了,至少有以下三种方式解决挂载的目录没有权限的问题:

1.在运行容器的时候,给容器加特权,及加上 --privileged=true 参数。使用该参数,容器内的root拥有真正的root权限。否则,容器内的root只是外部的一个普通用户权限

  $ docker run --name study_mysql --privileged=true -p 3306:3306  -v /data/mysql/datadir:/var/lib/mysql -v /data/mysql/conf.d:/etc/mysql/conf.d -e  MYSQL_ROOT_PASSWORD=123456 -d  mysql:latest

2.临时关闭SELinux:
setenforce 0

3.添加SELinux规则,改变要挂载的目录的安全性文本
可参考:http://www.bubuko.com/infodetail-2075102.html

分类至 Docker
0条评论

Docker 快速搭建 Redis 集群

本篇,将介绍通过 docker-compose 编排的方式快速搭建 Redis 集群。

计划安排:

  • 构建6个容器,名称分别为 redis1 ~ redis6
  • 内网 IP 分配 172.10.1.1 ~ 172.10.1.6
  • 所有实例的 redis.conf 配置文件相同
  • 将6个实例连接为集群
  • 演示集群中故障自动检测与自动恢复
分类至 Docker
0条评论

Docker 私有仓库界面化管理

前一篇我们介绍了《Docker 私有仓库搭建》,但是搭建完的私有仓库没有 UI 管理界面,操作很不方便。我们可以借助第三方 registry-web 镜像来实现界面化管理,目前比较流行的镜像包是 hyper/docker-registry-web。

通过两条 docker run 指令快速搭建:

docker run -d -p 5000:5000 --name registry-srv registry:2
docker run -it -p 8080:8080 --name registry-web --link registry-srv -e REGISTRY_URL=http://registry-srv:5000/v2 -e REGISTRY_NAME=localhost:5000 hyper/docker-registry-web 

我们将私有仓库的容器命名为 registry-srv,将 WebUI 管理容器命名为 registry-web,第2条指令的 --link 参数让 registry-srv 和 registry-web 做连接,这样我们在 registry-web 内部就可以通过 registry-srv:5000 地址来访问私有仓库了。

分类至 Docker
0条评论

Docker 私有仓库搭建

在 Docker 中,当我们执行 docker pull xxx 的时候 ,它实际上是从 registry.hub.docker.com 这个地址去查找,这就是Docker公司为我们提供的公共仓库。在工作中,我们不可能把企业项目push到公有仓库进行管理。所以为了更好的管理镜像,Docker 不仅提供了一个中央仓库,同时也允许我们搭建本地私有仓库。

Docker 官方提供了一个搭建私有仓库的镜像 registry ,只需把镜像下载下来,运行容器并暴露5000端口,就可以使用了。

分类至 Docker
0条评论

docker 容器内的 laravel 项目访问变慢

因为重装 win10 系统,把 Docker 也重装了一遍,安装的时候提示系统支持 WSL 2,说是比 Hyper-V 启动更快,推荐使用。居然有好处,那就勾上这个选项吧。

启用 WSL 2 后,Docker 启动确实快了很多。

但是,今天发现,容器内的 Laravel 项目变慢了!

重装系统前,Laravel 项目 API 接口访问慢的时候也就几百毫秒,而现在却要 1.7 秒左右。追踪排查,我这个接口里用到的 SQL 也不复杂啊,就是一个简单的 Select 语句,放到 phpMyAdmin 里面执行也很快,确认不是 SQL 的问题...

分类至 Docker
0条评论

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条评论