内网DNS服务搭建

内网DNS服务搭建 docker搭建DNS服务

  1. docker pull andyshinn/dnsmasq
  2. 工作目录 /websys/opt/dnsmasq
  3. 域名映射ip文件 my_dnsmasq_hosts
192.168.1.102   test1.com
192.168.1.102   test2.com
  1. dns文件 my_resolv.dnsmasq
nameserver 114.114.114.114
nameserver 8.8.8.8
  1. 启动容器
sudo docker run -d \
-p 192.168.1.102:53:53/tcp \
-p 192.168.1.102:53:53/udp \
-v /websys/opt/dnsmasq/my_dnsmasq_hosts:/etc/my_dnsmasq_hosts \
-v /websys/opt/dnsmasq/my_resolv.dnsmasq:/etc/my_resolv.dnsmasq \
--cap-add=NET_ADMIN \
--name my_dns_server \
andyshinn/dnsmasq
  1. 进入容器修改文件 docker exec -it my_dns_server /bin/sh
vi /etc/dnsmasq.conf 
# 修改两处地方,都需要取消掉注释,并制定文件
addn-hosts=/etc/my_dnsmasq_hosts
resolv-file=/etc/my_resolv.dnsmasq
  1. 退出容器重启-docker restart my_dns_server
  2. 修改路由器上的DNS或客户端电脑上的DNS

docker-compose.yml 版

version: '2'
services:
registry:
  image: andyshinn/dnsmasq:latest
  container_name: my_dns_server
  tty: true
  cap_add:
    - NET_ADMIN
  ports:
    - 192.168.1.102:53:53/tcp
    - 192.168.1.102:53:53/udp
  volumes:
    - /home/wilker/Desktop/a_dns/my_dnsmasq_hosts:/etc/my_dnsmasq_hosts
    - /home/wilker/Desktop/a_dns/my_resolv.dnsmasq:/etc/my_resolv.dnsmasq

相关资料

ubuntu_内网dns服务器搭建

PHP Fatal error: Class ‘Memcache’ not found

使用laradock构建镜像时报错误, Memcache

Memcache是什么?

Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个Hash表,Memcached自管理这些Hash表。

Memcached是简单而强大的。它简单的设计促进迅速部署,易于发展所面临的问题,解决了很多大型数据缓存。它的API可供最流行的语言。

Memcache官方网站:http://memcached.org/

Memcached又是什么?

Memcache是该系统的项目名称,Memcached是该系统的主程序文件(字母d可以理解为daemon),以守护程序方式运行于一个或多个服务器中,随时接受客户端的连接操作,使用共享内存存取数据

修复处理

1.打开php-fpm/Dockerfile 文件大概在320行-或搜索关键字INSTALL_MEMCACHED 修改

原件部分代码

    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && docker-php-ext-enable memcached\
;fi

修改后代码

...
    && ( \  
        cd memcached \
        && phpize \
        && ./configure \
        && make -j$(nproc) \
        && make install \
    ) \
    && rm -r memcached \
    && rm /tmp/memcached.tar.gz \
    && pecl install memcache \
    && docker-php-ext-enable memcached memcache \
;fi
...

2.重新docker-compose build php-fpm

测试代码

<?php
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);
$memcache = new Memcached;             //创建一个memcache对象
$memcache->connect('memcached', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test');        //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key');   //从内存中取出key的值

相关资料

memcache和memcached区别
PHP 连接 Memcached 服务
pecl-memcache

给docker运行总的容器添加端口

docker运行中的服务映射端口

docker inspect -f='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' [容器name] 获取容器的IP

iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000 IP是有上面一步查出来的、将外部端口8001映射到容器端口8000

iptables -nL 查看端口映射情况

但自己操作后、通过命令查看并没法发现端口映射成功

相关资料

查看docker的端口映射情况
Docker inspect 命令
Docker 给运行中的容器设置端口映射的方法

docker-walle2.0

walle 瓦力

官网-walle

测试安装环境

  • mac 10.13.1
  • docker 18.06.0-ce, build 0ffa825

部署步骤

  1. git clone https://github.com/owen-carter/walle-web
  2. docker-compose up -d
  3. docker exec -it walle-web_web_1 bash chmod +x ./admin.sh ./admin.sh migration
  4. 浏览器访问: http://127.0.0.1

部署错误

ERROR: for db  Cannot start service db: b'Mounts denied: \r\nThe path /data/walle/mysql\r\nis not shared from OS X and is not known to Docker.\r\nYou can configure shared paths from Docker -> Preferences... -> File Sharing.\r\nSee https://docs.docker.com/docker-for-mac/osxfs/#namespaces for more info.\r\n.'

原因: docker-compose.yml 中db服务volumes里的路径不在docker共享中.

处理方法: 自己的docker已把/users为docker路径那么, /data/walle/mysql修改为 ~/data/walle/mysql


启动后, 输入用户名密码登录的时候出现网络错误

原因: docker在构建启动的时候没有导入数据库

处理方法: 进入python的容器中, chmod +x ./admin.sh ./admin.sh migration


laradock目录说明-服务说明

在坚持Docker推动的关注分离原则时,Laradock在自己的Container上运行每个软件。您可以像任何容器一样打开/关闭任意数量的实例,而不必担心配置,一切都像魅力一样。

数据库引擎: MySQL – MariaDB – Percona – MongoDB – Neo4j – RethinkDB – MSSQL – PostgreSQL – Postgres-PostGIS。
数据库管理: PhpMyAdmin – Adminer – PgAdmin
缓存引擎: Redis – Memcached – Aerospike
PHP服务器: NGINX – Apache2 – Caddy
PHP编译器: PHP FPM – HHVM
消息队列: Beanstalkd – RabbitMQ – PHP工作者
排队管理: Beanstalkd控制台 – RabbitMQ控制台
随机工具: Mailu – HAProxy – Certbot – Blackfire – Selenium – Jenkins – ElasticSearch – Kibana – Grafana – Gitlab – Mailhog – MailDev – Minio – Varnish – Swoole – NetData – Portainer – Laravel Echo – Phalcon

Laradock将Workspace Image作为开发环境引入。它包含一组丰富的有用工具,所有这些工具都经过预先配置,可以与您选择的几乎任何容器和工具组合工作和集成.

工作区图像工具 PHP CLI – Composer – Git – Linuxbrew – Node – V8JS – Gulp – SQLite – xDebug – Envoy – Deployer – Vim – Yarn – SOAP – Drush

提高MacOS的速度

Tip: 更多见官网文档

在撰写本文时,Mac上的Docker 很慢。特别是对于大型项目,这可能是一个问题。问题是比2016年3月更早 – 因为这是一个长期存在的问题,我们将其包含在此处的文档中。

因此,与Linux相比,使用osxfs将代码共享到Docker容器中的性能非常差。可能有一些解决方法:

解决方法A:使用小艇
Dinghy使用docker-machine创建自己的VM,它不会修改现有的docker-machine VM。

快速设置giude,(我们建议您查看他们的文档)

1) brew tap codekitchen/dinghy

2) brew install dinghy

3)dinghy create –provider virtualbox(必须安装虚拟机,但如果您愿意,它们支持其他提供商)

4)完成上述命令后,它将显示一些env变量,将它们复制到bash配置文件或zsh或..(这将指示docker使用在VM内运行的服务器)

5) docker-compose up …

你可以在具有相同的使用任何时间有或无搬运工同步运行laradock .env和docker-compose.yml,因为当使用搬运工同步的配置被自动忽略。
您可以检查sync.sh脚本以了解每个命令,甚至添加自定义命令。
如果容器无法访问docker-sync上的文件,则可能需要在该容器的Dockerfile上设置id为1000的用户(这是nginx和php-fpm在laradock上配置的UID)。或者,您可以将权限更改为777,但不建议这样做 更多-docker-sync文档

Laradock有两个基本图像(Workspace和php-fpm,主要由以加快您的计算机上生成时间。

目录抓取时间: 2018年11月16日16:50:06

├── LICENSE
├── adminer Adminer替换phpMyAdmin
├── aerospike Aerospike(以下简称AS)是一个以分布式为核心基础,可基于行随机存取内存中索引、数据或SSD存储中数据的数据库
├── apache2
├── aws 亚马逊
├── beanstalkd Beanstalkd,一个高性能、轻量级的分布式内存队列系统
├── beanstalkd-console
├── caddy caddy是一个用go语言开发的服务器,可用作web端
├── certbot Certbot是EFF加密整个互联网的一部分。通过Web进行安全通信依赖于HTTPS,这需要使用数字证书,让浏览器验证Web服务器的身份
├── docker-compose.sync.yml
├── docker-compose.yml
├── docker-registry
├── docker-sync.yml
├── docker-web-ui
├── elasticsearch ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口
├── env-example
├── gitlab
├── grafana 自动创建监控图
├── haproxy haproxy是一款非常的专业的全7层的反向代理负载均衡器
├── hhvm HHVM (HipHop Virtual Machine)会将PHP代码转换成高级别的字节码(通常称为中间语言)。然后在运行时通过即时(JIT)编译器将这些字节码转换为x64的机器码。在这些方面,HHVM十分类似于C#的CLR和Java的JVM
├── ide-codiad Codiad是一个基于Web的IDE框架,占用空间小,需求量小。
├── ide-icecoder
├── ide-theia
├── ide-webide
├── ipython
├── jenkins
├── jupyterhub
├── kibana
├── laravel-echo-server
├── logs
├── maildev
├── mailhog
├── mariadb
├── memcached
├── minio
├── mongo
├── mongo-webui
├── mssql
├── mysql
├── neo4j
├── nginx
├── percona
├── pgadmin
├── php-fpm
├── php-worker
├── phpmyadmin
├── portainer
├── postgres
├── postgres-postgis
├── rabbitmq
├── redis
├── rethinkdb
├── selenium
├── solr
├── sync.sh
├── thumbor
├── travis-build.sh
├── varnish
└── workspace

相关资料

aerospike-官网
Certbot-官网
grafana-官网
codiad-官网

Aerospike使用介绍
PHP 使用 ElasticSearch 做搜索