Docker 容器内中文显示乱码

在 docker 容器内使用 Bash 通过 ls 列取中文目录、文件时,中文会显示为乱码,简单一步就可以解决此烦恼。

在创建容器时加入环境变量: LANG=C.UTF-8

命令行方式:docker run … -e LANG=C.UTF-8 …

也可以在进入容器的时候指定:docker exec -it -e LANG=C.UTF-8 <container> bash

分类至 Docker
0条评论

docker 搭建 bitwarden 私人密码管理库

在互联网上冲浪,我们经常需要注册各种账号,日积月累,账号越来越多。如果密码都设置一样,某个网站被攻破则其他网站账号也跟着泄露;而如果密码设置成不一样,又怕时间久了自己忘记。于是,我们就需要一款密码管理软件来帮我们记录账号密码。

我最近试用了 1Password,在 Edge 浏览器上的体验还不错。半个月试用期很快就到了,虽然可以继续使用,但不能再进行编辑。

在网上寻找同类软件,找到了开源的 Bitwarden。它的管理界面跟 1Password 类似,操作体验区别不大。最重要的是,Bitwarden 除了官网提供的付费服务外,还支持自建服务器。

分类至 Docker
0条评论

docker CMD和ENTRYPOINT指令

CMD 和 ENTRYPOINT 指令都是用来指定容器启动时运行的命令。

单从功能上来看,这两个命令几乎是重复的。单独使用其中的一个就可以实现绝大多数的用例。

exec 模式和 shell 模式

CMD 和 ENTRYPOINT 指令都支持 exec 模式和 shell 模式的写法,所以要理解 CMD 和 ENTRYPOINT 指令的用法,就得先区分 exec 模式和 shell 模式。这两种模式主要用来指定容器中的不同进程为 1 号进程。Docker容器仅在它的1号进程(PID为1)运行时,会保持运行。如果1号进程退出了,Docker容器也就退出了。

分类至 Docker
0条评论

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

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

$ docker exec -it php-fpm bash

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

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

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

 

分类至 Docker
1条评论

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