Docker制作php+nginx的镜像

系统环境:

1.系统环境:Centos 7.3

系统内核信息:

Linux version 3.10.0-514.21.1.el7.x86_64 (builder@kbuilder.dev.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-11) (GCC) ) #1 SMP Thu May 25 17:04:51 UTC 2017

2.Centos中安装docker

yum install docker.x86_64

docker –version  #安装完

Docker version 1.12.6, build 85d7426/1.12.6

#启动docker

systemctl start docker

#设置开机自动启动

chkconfig docker on

3.修改docker的镜像地址(修改到国内地址比较快):

vim /etc/docker/daemon.json 在json文件中增加

“registry-mirrors”: [“https://docker.mirrors.ustc.edu.cn”]

4.docker 默认的容器和镜像存储的位置:/var/lib/docker

修改docker默认的容器和镜像存储位置:

#停止镜像

systemctl stop docker

mv /var/lib/docker /data/docker

ln -s /data/docker /var/lib/docker

systemctl start docker

5.php+nginx的镜像制作方式采用成熟centos镜像拉起容器后再加进编译进nginx+php后使用docker file定制容器

    5.1.下载镜像及启动容器

docker pull centos

docker run -it –name nginxPhp centos bash(这种方式启动docker后,当退出伪tty终端时,这个容器也就停止了)

docker ps 查看当前正常执行的容器

docker ps -a 查看所有镜像包含退出,停止,异常的容器

注意当希望docker使用daemon守护进程方式后台启动时,需要启动后的容器内一直有个前端进程运行,不然就会遇到容器已启动就已经自动退出的机制。

      docker run -d –name nginxPhp centos  这个命令进去后啥也没做,所以这个容器直接就又关闭了。

变通解决方案:

docker run –name test2 -d centos /bin/bash -c “while true;do echo hello;sleep 1;done”

5.2.进入容器进行安装nginx和php

官网下载nginx和php 的编译包,nginx1.13.7,php-7.2

将nginx,php安装包:nginx-1.13.7.tar.gz,php-7.2.0.tar.gz放至宿主机 /data/soft下,安装nginx

重新启动一个新的容器挂载进宿主机目录

docker run –name test3 -v /data/soft:/data/soft -d centos /bin/bash -c “while true;do echo hello;sleep 1;done”

docker exec -it test3 bash

为php,nginx安装基础组件: yum -y install pcre-devel gcc libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel libmcrypt-devel libxslt-devel.x86_64 libxslt.x86_64 

安装完后进入cd /data/soft/nginx-1.13.7

./configure–prefix=/data/soft/nginx \

–user=root–group=root \

–with-pcre \

–with-ipv6 \

–with-http_ssl_module \

–with-http_gzip_static_module

make&& make install

ln -s /data/soft/nginx/sbin/nginx /usr/local/bin/nginx

继续安装php

cd /data/soft/php-7.2.0

./configure –prefix=/data/soft/php –with-curl –with-freetype-dir –with-gd –with-gettext –with-iconv-dir \ –with-kerberos –with-libdir=lib64 –with-libxml-dir –with-mysqli –with-openssl –with-pcre-regex –with-pdo-mysql \ –with-pdo-sqlite –with-pear –with-png-dir –with-xmlrpc –with-xsl –with-zlib –enable-fpm –enable-bcmath \ –enable-libxml –enable-inline-optimization –enable-gd-native-ttf –enable-mbregex –enable-mbstring –enable-opcache \ –enable-pcntl –enable-shmop –enable-soap –enable-sockets –enable-sysvsem –enable-xml –enable-zip –with-jpeg-dir \ –with-mcrypt

make && make install

退出容器将此容器提交打上版本的镜像

docker commit –auther=gaogao –message=’安装完php,nginx的基础包’  test3 centos:v1

使用新的镜像启动容器,这一次启动时进行端口的绑定,将宿主机的80绑定到容器80

docker run –name test4 -v /data/soft:/data/soft -v /data/website:/data/website -p 80:80 -d centos:v1 bash -c “while true;do echo hello;sleep 1; done”

docker exec -it test4 bash

nginx 启动

/data/soft/nginx/sbin/nginx

退出宿主机,使用浏览器访问宿主机IP,已经可以访问nginx的默认页面。

docker,还有太多的东西,等待继续..

    原文作者:追月之神
    原文地址: https://www.jianshu.com/p/b3d953ae0493
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞