Docker入门(php开发环境)

编写本文的主要目的是让大家对docker有一个简单的认识,知道它能做什么,也希望大家能考虑这个工具本身能给大家带来哪些便利。

一、 什么是Docker?

        Docker是一个开源的引擎,可以轻松的为任何应用创建一个轻量级的、可移植的、自给自足的容器。

        开发者在笔记本上编译测试通过的容器可以批量地在生产环境、测试环境、预发布环境 中部署。

二、 为什么要用Docker?

简化程序

Docker 让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,便可以实现虚拟化。Docker改变了虚拟化的方式,使开发者可以直接将自己的成果放入Docker中进行管理。方便快捷已经是 Docker的最大优势,过去需要用数天乃至数周的 任务,在Docker容器的处理下,只需要数秒就能完成。

避免选择恐惧症

如果你有选择恐惧症,还是资深患者。那么你可以使用 Docker 打包你的纠结!比如 Docker 镜像;Docker 镜像中包含了运行环境和配置,所以 Docker 可以简化部署多种应用实例工作。比如 Web 应用、后台应用、数据库应用、大数据应用比如 Hadoop 集群、消息队列等等都可以打包成一个镜像部署。

节省开支

一方面,云计算时代到来,使开发者不必为了追求效果而配置高额的硬件,Docker 改变了高性能必然高价格的思维定势。Docker 与云的结合,让云空间得到更充分的利用。不仅解决了硬件管理的问题,也改变了虚拟化的方式。

三、 Docker初体验(PHP开发环境)

docker安装教程忽略,有兴趣请查看以下链接

MAC : https://www.runoob.com/docker/macos-docker-install.html

CentOS :https://www.runoob.com/docker/centos-docker-install.html


(一)、 创建容器

Nginx容器创建并启动

docker run  -itd  -p 80:80  --name nginxm  \

-v /Users/XXX/Docker/www/:/usr/share/nginx/ \

-v /Users/XXX/Docker/nginx/conf/:/etc/nginx/conf.d/    \

--privileged=true  -d nginx


 Php容器创建并启动

docker run  -p 9000:9000  --name php5-6  \

-v /Users/XXX/Docker/www/:/usr/share/nginx/ \

-v /Users/XXX/Docker/php/conf/:/usr/local/etc/php/  \

-d php:5.6-fpm


docker-php-ext-install pdo_mysql  # 需要先进入PHP容器 安装pdo  看实际项目本身的代码需要


Mysql容器创建并启动

docker run -p 3306:3306 --name mysql5.6 \

-v /Users/XXX/Docker/mysql/conf:/etc/mysql/conf.d  \

-v /Users/XXX/Docker/mysql/logs:/logs \

-v /Users/XXX/Docker/mysql/data:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=123456 \

-d mysql:5.6


mysql -h 172.17.0.4  -u root -p # mysql 链接语句


Redis 容器创建并启动

docker run -p 6379:6379 -v /Users/XXX/Docker/redis/data:/data  -d redis:latest redis-server --appendonly yes

docker exec -it 容器名称 redis-cli -h 172.17.0.5 -p 6379 -a your_password


(二)、容器常用操作

查看容器

docker ps -a #查看所有容器

docker ps  #查看开启的容器


启动容器

docker start nginx

# docker start 容器名称


进入/退出 容器

docker exec -it php5-6 /bin/bash 

# docker exec -it 容器名称 /bin/bash  #进入docker

exit  #退出


查看容器IP地址

docker inspect 容器名称或 id  #查看容器IP


PS:

1、每次重启docker软件,启动容器后,各容器的IP都会变化,因此需要特别留意;

2、需要检查nginx站点配置里的fastcgi_pass IP 为PHP容器的IP;代码中链接数据库host为MySQL容器的IP;

(三)、Nginx配置

站点配置config(1.修改配置后需要重启nginx;2.配置文件存放在创建容器时,所映射的目录)

server

  {

    listen       80;

    server_name  xxx.com;

    index index.html index.htm index.php index.shtml;

    root  /usr/share/nginx/XXX/xxx.com/;

    location ~ /uploads/.*\.(php|php5)$ {

         deny all;

  }

    location ~ .*\.(php|php5)?$

    {

   fastcgi_pass 172.17.0.3:9000;

   fastcgi_index index.php;

   fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;

   fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

   fastcgi_param PATH_INFO $fastcgi_path_info;

   fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;

   include  fastcgi_params;

    }

   error_page 404 = /404.php;

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$

    {

      expires      1h;

    }

    location ~ .*\.(js|css)?$

    {

      expires      1h;

    }

    location ^~ /daemon{

      deny all;

      break;

   }

  }

(四)、其他

容器下常用工具的安装(需要先进入容器)

    1、vim

apt-get update  # 同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引。这样才干获取到最新的软件包。

apt-get install vim #安装vim

将容器做成镜像

docker commit -m  ""   -a  ""   容器ID(可以简写)  镜像名称  #-m  提示信息    -a  作者 

docker commit -m  "nginx"  -a "xxx" d7537e914c48 nginx0731a


四、 讲在最后

    最后,Docker可以应用在很多方面,这里只是一个入门初体验,如果大家想了解更多关于docker内容,可以进入docker官网学习,后续有任何问题都可以共同探讨。

附上官网地址: https://docs.docker.com/

你可能感兴趣的:(Docker入门(php开发环境))