Docker

nextcloud经由nginx_proxy时max_size的问题

在我自己搭建的nextcloud中,我碰到了过大的文件无法上传的问题,我的nextcloud是搭建在nginx_proxy后方的,因为无法上传的文件大小大约为2m,和nginx的default client_max_body_size很相似,所以我非常有理由怀疑,是因为nginx的这个参数影响了上传 因为我太懒了,一直没去研究,最近在群里一问,张师傅直接给出了解决方案 在nginx_proxy中把vhost引出来,然后在对应域名的vhost中加入这个参数,并加入自己的配置,虽然这样有耦合了,不过至少解决问题了 在nginx_proxy添加对应的env配置项之前,也只能这样了 以下是配置详情 nginx_proxy docker-compose.yml version: '3' services:

Docker

让docker中的时区与主机保持一致

我们每次默认创建的docker,时区都会与主机不同,因为linux使用/etc/timezone与/etc/localtime来记录时区,而docker拥有单独的一整套系统套件,所以时区也是单独的。为了让docker与host的时区同步,我们只需将这两个文件映射进docker即可。 docker-compose写法: volumes: - /etc/timezone:/etc/timezone:ro - /etc/localtime:/etc/localtime:ro 经过使用,我发现上门的方法还有很大局限性: 要求docker host必须为linux系统,并且正确的设置了时区 如果docker镜像为像alpine这类轻量镜像,没有预装tzdata包,则无效

Ubuntu

在ubuntu16.04下安装Nvidia-docker

为了在docker中使用Nvidia显卡,我们需要使用Nvidia出的Nvidia-docker。在ubuntu 16.04 x64中安装Nvidia-docker的步骤归纳如下: 首先,必须启用Nvidia的专有显卡驱动,在ubuntu的设置-》软件与更新-》专有驱动下启用Nvidia的专有驱动即可。 然后我们需要安装docker官方维护的apt源下的docker-engine # 导入docker的apt源的gpg key sudo apt-key adv \ --keyserver hkp://ha.pool.sks-keyservers.net:80 \ --recv-keys 58118E89F3A912897C070ADBF76221572C52609D # 添加apt源 echo "deb https://apt.dockerproject.

Docker

在Dockerfile中使用apt-get update后清理产生的垃圾文件

在Dockerfile中,由于Docker的文件系统是层文件系统,Dockerfile中的每一条命令都将产生一个层,这样每次使用apt-get update && apt-get install后都会产生一些缓存文件。这些缓存文件对于Docker来说属于垃圾文件,假设你上一个层中缓存有apt-get update的结果,那么下次你的Dockerfile运行时就会直接使用之前的缓存,然后继续构建之后的命令,这样你的Docker中的apt软件源就不是最新的软件列表了,将会带来缓存过期的问题。并且这些缓存将占用不少空间,导致最终生成的image非常庞大,而这些垃圾文件是我们最终的image中无需使用到的东西,我们应当在Docker构建过程中予以删除。 基于Dockerfile的层镜像规则,我们的命令必须在同一条Docker指令中完成,也就是使用分行命令的方式完成,所以需要使用apt安装软件的命令应当写为如下形式:(以安装vim为例) apt-get update && apt-get install vim; apt-get

Ubuntu

在win10的ubuntu子系统中自如的使用docker

自从win10有了ubuntu子系统,在windows上也可以更方便的使用linux环境了。但是由于win10的linux子系统是被定制的不完全的linux环境,所以无法使用linux内的docker host,只能在windows下使用windows版本的docker,这就给linux环境带来了不便,许多脚本与makefile中的docker命令都无法正常运行。解决这个问题的方案,可以给docker配置默认访问对象为tcp协议的localhost。 经查阅,commandline版本的docker的配置可以通过环境变量来配置。 https://docs.docker.com/engine/reference/commandline/cli/ 通过在~/.zshrc(或~/.bashrc)中添加以下语句可以解决docker访问的deamon对象: export DOCKER_HOST=127.0.0.1 然后在linux中就可以直接使用docker命令访问windows下的docker守护进程了