Docker 实践指南(6)

接下来做些准备工作,然后启动 PHP、Nginx 组件的容器

下载解压 WordPress

$ wget https://cn.wordpress.org/wordpress-4.9.4-zh_CN.tar.gz 
$ tar zxf ./wordpress* -C /www/wwwroot/ && chmod 777 -R /www/wwwroot/

创建各组件互联用的网络

 $ docker network create lnmp_network

关于 Docker 网络的内容即抽象又复杂,暂不多表,在这就理解成创建了一台虚拟交换机,后面要把各容器的“网线”连到这台交换机上。

在宿主中建立工作目录

$ tree /www
www
├── conf.d
│   ├── logstash
│   ├── nginx
│   └── php
├── run
├── data
├── log
│   ├── mysql
│   ├── nginx
│   └── php
└── wwwroot    <----存放网站文件

运行 PHP 容器

通常来说,运行一个跑服务的容器会附带大量的参数,包括网络、存储、资源限制等等,后面启动 PHP 容器的时候会作大体的介绍。对于服务的配置文件来说,通常我们直接是在本地修改,而后重启服务。换到 Docker 中则需要反复进入容器中修改,这显然是个笨办法。稍灵活一些的作法是使用 --volume 参数把宿主目录映射到容器中,如此一来即可在宿主层面操作配置文件,完成后使用 docker restart 重启容器生效(等同于重启服务),本例 PHP 、Nginx 使用的都是这种方法。如果管理的容器数量很大,这个办法显然还是有问题的。更高明的做法是在镜像中加入启动脚本,配合环境变量灵活的赋予参数,后面的 MySQL 使用的即是这种方法。

1. 创建 php-fpm 配置文件

$ cat /www/conf.d/php/php-fpm.conf
[global]
pid = /www/run/php-fpm.pid
error_log = /www/log/php/php-fpm.log
daemonize = no
[www]
user = www-data
group = www-data
listen = 0.0.0.0:9000
listen.owner = www-data
listen.group = www-data
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
chdir = /

2. 启动容器

$ docker run --name lnmp_php --detach \
--net lnmp_network \
--volume /www:/www lnmp/php \
--fpm-config /www/conf.d/php/php-fpm.conf

参数说明:

  • --name 给容器指定名称,不指定也行,Docker 启动的时候会随机给它取名。这个名称同时还是该容器的主机名
  • --net 告诉容器要连接到哪个网络(虚拟交换机)上
  • --volume 该操作将 : 前面的宿主目录挂载到后面容器里的目录,可以指定读写权限
  • --fpm-config 这个是 php-fpm 的启动参数,并非 docker,用以手动指定配置文件

运行 Nginx 容器

1. 创建 Nginx 配置文件

$ cat /www/conf.d/nginx/ngx.conf
user www-data;
worker_processes 1;
#此处建议是CPU核心的数量
pid /www/run/nginx.pid;
daemon off;
#关掉守护进程模式,改为手动启动 nginx。这是因为要保持 docker 容器的活跃状态,就得有运行中的进程。
events {
    worker_connections 768;
}
http {
    sendfile on;
    tcp_nopush on;
    tcp_nodelay on;
    keepalive_timeout 65;
    types_hash_max_size 2048;
    include /etc/nginx/mime.types;
    default_type application/octet-stream;
    gzip on;
    gzip_disable "msie6";
    server {
        listen    0.0.0.0:80;
        server_name    _;
        root  /www/wwwroot/;
        index    index.html    index.htm;
        access_log    /www/log/nginx/access.log;
        error_log    /www/log/nginx/error.log;
        location ~ \.php$ {
            fastcgi_split_path_info ^(.+\.php)(/.+)$;
            # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini      
            fastcgi_pass lnmp_php:9000;
            fastcgi_index index.php;
            include /etc/nginx/fastcgi_params;
        }
    }
}

fastcgi_pass lnmp_php:9000; 一列中使用 PHP 的容器名指定其IP地址,前提是它们在同一个 --net 里,使用命令 docker network inspect lnmp_network 查看。

2. 启动 Nginx 容器

$ docker run --name lnmp_nginx --detach \
--net lnmp_network --publish 80:80 \
--volume /www:/www lnmp/nginx:1.4.6 \
-g "/www/conf.d/nginx/ngx.conf"

参数说明:
--publish 80:80 把容器的80端口映射到宿主的80端口上,使用命令 docker port lnmp_nginx 查看。

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

推荐阅读更多精彩内容