docker入门php-nginx环境搭建

docker的基本介绍这里就不在叙述了,百度以及谷歌上很多介绍。这里主要是介绍如何使用docker搭建基本的php-nginx环境。
docker下一般将每个服务器作为一个单独的容器,这里也是这样来实现。
本文中使用的镜像均为官网上的。
准备工作,现在电脑上创建一个目录作为映射到容器中的配置文件、数据库db等,路径根据自己的环境修改。
mkdir -p /docker/www
mkdir -p /docker/nginx/conf.d
mkdir -p /docker/php/7-2/
创建专属的网络,使用bridge模式。
docker network create -d bridge lnmp-network
1.安装nginx
docker pull nginx
在电脑上创建nginx配置文件(可以直接从别的地方拷贝过来)
vim /docker/nginx/conf.d/default.conf

server {
  listen  80 default_server;
  server_name _;
  root   /usr/share/nginx/html;

  location / {
   index index.html index.htm index.php;
   autoindex off;
  }
  location ~ \.php(.*)$ {
   root   /var/www/html/;
   fastcgi_pass localhost: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;
  }
}

启动nginx服务

docker run -itd --network lnmp-network  -p 33231:80 --name nginx \
-v /docker/www/:/usr/share/nginx/html \
-v /docker/nginx/conf.d:/etc/nginx/conf.d \
--privileged=true \
-d nginx

这的命令是
-d: 后台运行容器,并返回容器ID;
-i: 以交互模式运行容器,通常与 -t 同时使用;
-t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用;
--network 指定使用的网络,不填则为默认的bridge0
-p 指定与宿主主机的IP地址映射,这里是本机的33231端口映射到nginx容器中的80端口
--name 指定容器的名字
-v 将本地的配置文件映射到容器,本地修改后会同步修改容器(修改配置信息记得需要重启服务)
--privileged 容器中的root用户将会获得root权限(容器的root用户为一般用户权限)
-d 指定镜像
运行后,就可以通过http://localhost:33231进行访问


2.安装php7-2-2
docker pull php:7.2.2-fpm
这里对不修改php的配置文件,就直接启动了。如有需要修改就类似nginx的方式进行配置文件映射即可

docker run --net=container:nginx --name php72 \
-v /docker/www/:/var/www/html/ \
-d php:7.2.2-fpm

这里的命令是:
--net="bridge": 指定容器的网络连接类型,支持 bridge/host/none/container: 四种类型;这里使用的是container类型,与nginx的容器是公用同一个网络,这种情况下就不需要单独的配置端口映射,IP地址等。因为docker每次启动的ip地址都是不固定的,通过这种方式,只需要localhost即可。
在很多时候本机有一个php版本,已经占用了9000端口,通过这种网络方式可以不要占用本机的端口进行映射。
其他的命令与nginx一致,就不在多说了。

下面介绍下四种网络类型:

  • bridge模式是docker默认的,也是开发者最常使用的网络模式。在这种模式下,docker为容器创建独立的网络栈,保证容器内的进程使用独立的网络环境。
    -host模式| 由于容器和宿主机共享同一个网络命名空间,换言之,容器的IP地址即为宿主机的IP地址。所以容器可以和宿主机一样,使用宿主机的任意网卡,实现和外界的通信。其网络模型可以参照下图
image

采用host模式的容器,可以直接使用宿主机的IP地址与外界进行通信,若宿主机具有公有IP,那么容器也拥有这个公有IP。同时容器内服务的端口也可以使用宿主机的端口,无需额外进行NAT转换,而且由于容器通信时,不再需要通过linuxbridge等方式转发或者数据包的拆封,性能上有很大优势。

当然,这种模式有优势,也就有劣势,主要包括以下几个方面:

1)最明显的就是容器不再拥有隔离、独立的网络栈。容器会与宿主机竞争网络栈的使用,并且容器的崩溃就可能导致宿主机崩溃,在生产环境中,这种问题可能是不被允许的。

2)容器内部将不再拥有所有的端口资源,因为一些端口已经被宿主机服务、bridge模式的容器端口绑定等其他服务占用掉了。
-none模式在这种模式下,容器有独立的网络栈,但不包含任何网络配置,只具有lo这个loopback网卡用于进程通信。也就是说,none模式为容器做了最少的网络设置,但是俗话说得好“少即是多”,在没有网络配置的情况下,通过第三方工具或者手工的方式,开发这任意定制容器的网络,提供了最高的灵活性。
-container模式是docker中一种较为特别的网络的模式。在这个模式下的容器,会使用其他容器的网络命名空间,其网络隔离性会处于bridge桥接模式与host模式之间。
网络拓扑图如下:

image

当容器共享其他容器的网络命名空间,则在这两个容器之间不存在网络隔离,而她们又与宿主机以及除此之外其他的容器存在网络隔离。
在这种模式下的容器可以通过localhost来同一网络命名空间下的其他容器,传输效率较高。而且这种模式还节约了一定数量的网络资源,但它并没有改变容器与外界通信的方式。
在一些特殊的场景中非常有用,例如,kubernetes的pod,kubernetes为pod创建一个基础设施容器,同一pod下的其他容器都以其他容器模式共享这个基础设施容器的网络命名空间,相互之间以localhost访问,构成一个统一的整体。


docker常用命令介绍
容器启动,停止,重启操作:
docker start container(容器名)
docker stop container(容器名)
docker restart container(容器名)
查看容器实时状态:
docker stats
查看容器运行列表:
docker ps
停止所有正在运行的容器:
docker kill $(docker ps -a -q)
删除所有已停止运行的容器:
docker rm $(docker ps -a -q)
进入容器内进行操作:
docker exec -it content-name-or-id /bin/bash

搭建到这就完成了,特别感谢以下资料来源:
http://www.jb51.net/article/113296.htm
http://www.cnblogs.com/kevingrace/p/6590319.html
https://www.centos.bz/2017/01/docker-network-create-create-a-network/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,491评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,856评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,745评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,196评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,073评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,112评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,531评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,215评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,485评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,578评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,356评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,215评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,583评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,898评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,174评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,497评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,697评论 2 335

推荐阅读更多精彩内容

  • 转载自 http://blog.opskumu.com/docker.html 一、Docker 简介 Docke...
    极客圈阅读 10,454评论 0 120
  • 五、Docker 端口映射 无论如何,这些 ip 是基于本地系统的并且容器的端口非本地主机是访问不到的。此外,除了...
    R_X阅读 1,714评论 0 7
  • 一、Docker 简介 Docker 两个主要部件:Docker: 开源的容器虚拟化平台Docker Hub: 用...
    R_X阅读 4,370评论 0 27
  • 今天要介绍的这一位博主 Phil Cohen 是我介绍过的博主中易模仿程度最高的 因为他分享的穿搭都是最日常的基本...
    粒子的极简男士穿搭阅读 2,137评论 2 21
  • 自定义构造函数创建对象 基本写法 function 构造函数名(参数1,参数2,参数3...) { //设置对象的...
    曾基锟阅读 420评论 0 0