学Docker差不多两个星期了,主要学习container、image、volume、network、plugin、system这六个部分,今天想通过以上的学习,制作一个centos + nginx + php7的镜像。
1、创建数据卷
因为镜像一旦创建了,镜像的文件是不能被修改的(本人亲测,如果本人理解错误,请指正),所以想把php和nginx的配置、日志、php文件,以数据卷的形式挂载到新创建的容器。
docker volume create conf docker volume create logs docker volume create www
2、创建网络
docker network create --subnet=192.168.30.0/24 --ip-range=192.168.30.0/24 br30
3、以centos为基础,创建容器php01
docker create -i --name=php01 --net=br30 --ip=192.168.30.10 --expose={80,443,8080,9000} -v=conf:/data/conf -v=logs:/data/logs -v=www:/data/www centos:latest
4、copy nginx和php7的安装包到容器
因为 php01容器挂载了数据卷www,所在暂时将安装包cp到该目录。libmcrypt是php加密依赖包。
cp php-7.1.6.tar.gz /var/lib/docker/volumes/www/_data cp nginx-1.12.0.tar.gz /var/lib/docker/volumes/www/_data cp libmcrypt-2.5.8.tar.gz /var/lib/docker/volumes/www/_dat
5、启动、并进入容器
docker start php01 && docker exec -it php01 bash
6、设置网络代理 - 可省略
因为本公司的网络需要使用代理,才能链接外网。
alias "la=ll -a" alias "pa=ps aux | grep " http_proxy=http://10.199.75.12:8080 https_proxy=http://10.199.75.12:8080 ftp_proxy=http://10.199.75.12:8080 no_proxy=192.168.80.1,localhost,127.0.0.1,192.168.10.10,192.168.20.10,192.168.30.10 export http_proxy https_proxy ftp_proxy no_proxy
7、在php01容器的/data/www目录下解压,并安装php7.1.6
8、安装Nginx
参考: Nginx的安装 nginx的编译安装部分
9、移动相关的文件到/usr/bin
# 处理php二进制文件 cd /usr/local/php7/bin rm -rf phar mv phar.phar /usr/bin/phar mv ./* /usr/bin rm -rf bin # 处理php-fpm cd /usr/local/php7/etc mv init.d.php-fpm /usr/bin/php-fpm && chmod 755 /usr/bin/php-fpm # 处理php和php-fpm配置文件 mv etc /data/conf/php ln -s /data/conf/php/ etc # 处理 nginx cd /usr/local/nginx mv sbin/nginx /usr/bin/nginx rm -rf sbin mv conf /data/conf/nginx ln -s /data/conf/nginx conf
10、设置php和nginx的设置
下载地址:docker.volume.default.tar.gz
11、测试nginx 和 php-fpm是否安装成功
php-fpm start nginx -c /usr/local/nginx/conf/nginx.conf cd /data/www && echo "<?php phpinfo();" > index.php
12、从容器中提交
docker commit -m "centos、php-fpm、php7.1.6、nginx" php01 binphp:v1
测试:
docker create -i --net=br30 --ip=192.168.30.20 --name=php02 -v=conf:/data/conf \ -v=logs:/data/logs -v=www:/data/www binphp:v1 # 进入容器,并启动php-fpm和nginx php-fpm start nginx -c /usr/local/nginx/conf/nginx.conf
13、导出binphp的镜像,用于在其他的宿主机上使用
docker save bindocker | gzip > bindocker.tar.gz
推荐相关文档:
- Docker的安装
- Docker的配置文件 daemon.json 详细解
- Docker的启动参数
- Docker的命令之概述
- Docker的命令之容器管理 Container
- Docker的命令之镜像管理 Image
- Docker的命令之网络管理 network
- Docker的命令之集群节点管理 Swarm node
- Docker的命令之插件管理 Plugin
- Docker的命令之安全管理 Docker secret
- Docker的命令之集群服务管理 Service
- Docker的命令之 Docker stacks
- Docker的命令之集群管理 swarm
- Docker的命令之系统管理 Docker system
- Docker的命令之数据卷管理 Volume
- Docker的命令之快捷指令
- Docker中的镜像构建-Dockerfile指令详解
- Docker的实践笔记
- Docker create / Docker run 的选项详解
Pingback引用通告: Docker的启动参数 | 精彩每一天
Pingback引用通告: Docker的命令之数据卷管理 Volume | 精彩每一天
Pingback引用通告: Docker create / Docker run 的选项详解 | 精彩每一天
Pingback引用通告: Docker的命令之安全管理 Docker secret | 精彩每一天