系统环境:
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,还有太多的东西,等待继续..