Docker的实践笔记

学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

参考:php7的安装以及编译中的错误

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的实践笔记》上有4条评论

  1. Pingback引用通告: Docker的启动参数 | 精彩每一天

  2. Pingback引用通告: Docker的命令之数据卷管理 Volume | 精彩每一天

  3. Pingback引用通告: Docker create / Docker run 的选项详解 | 精彩每一天

  4. Pingback引用通告: Docker的命令之安全管理 Docker secret | 精彩每一天

发表评论

电子邮件地址不会被公开。 必填项已用*标注

您可以使用这些HTML标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>