雖然之前也曾用docker環(huán)境運(yùn)行了一些項目,但對于鏡像這塊還不是很理解,且鑒于網(wǎng)上現(xiàn)成的鏡像都包含太多用不到的庫,所以決定從零開始構(gòu)建一個自己的鏡像。
alpine linux為基礎(chǔ)鏡像
docker pull gliderlabs/alpine
alpine linux 鏡像地址
目前最新的tag是3.8版本,鏡像只有4M的大小,非常的精簡。
運(yùn)行鏡像
docker run -it gliderlabs/alpine
運(yùn)行后可以看到里面有基本的linux文件系統(tǒng),這里不做演示,有興趣者可自行嘗試。
安裝php 和 nginx
apk update
apk add php7 nginx
接下來,根據(jù)自己的需要可以繼續(xù)安裝php相關(guān)擴(kuò)展包,或者其他linux擴(kuò)展包。
搜索擴(kuò)展包,如php7工具包,可通過以下指令:
安裝php擴(kuò)展
復(fù)制代碼 代碼如下:
apk add php7-mysqli php7-pdo_mysql php7-mbstring php7-json php7-zlib php7-gd php7-intl php7-session php7-fpm php7-memcached
目錄結(jié)構(gòu)
- php7目錄: /etc/php7
- nginx目錄: /etc/nginx
啟動php-fpm和nginx
# 先創(chuàng)建pid文件,否則nginx運(yùn)行不了
mkdir /run/nginx
touch /run/nginx/nginxpid
# 先運(yùn)行php,再運(yùn)行nginx
/usr/sbin/php-fpm7
/usr/sbin/nginx
至此,能看到php和nginx正常運(yùn)行,鏡像環(huán)境已經(jīng)基本完成了。 接下來,可以看看怎么把這個鏡像保存起來。
創(chuàng)建鏡像
另起一個終端,用 docker ps查看鏡像ID,如下指令可以保存鏡像:
docker commit -a "yisonli" -m "my first php7-nginx" 9d9c6030e5e9 yisonli/php7-nginx-alpine:0.1
注:9d9c6030e5e9為鏡像ID,yisonli/php7-nginx-alpine為保存的鏡像名,版本定義為0.1
運(yùn)行新生成的鏡像
綁定8080端口看看效果
docker run -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1
手動啟動php-fpm和nginx后,瀏覽器就可看到效果了。
http://127.0.0.1:8080/index.php
docker補(bǔ)充記錄
【共享文件夾】
docker run -v `pwd`/www:/var/www/html -it -p 8080:8080 yisonli/php7-nginx-alpine:0.1
【刪除未運(yùn)行的容器】
docker rm $(docker ps -a -q)
【用Dockerfile方式構(gòu)建鏡像】
docker build -t yisonli/php7-nginx-alpine:0.2 .
0.2是本文流程稍作優(yōu)化后,寫成Dockerfile后build出來的,而且?guī)幽_本。
已上傳到 Docker Hub,可供下載研究。
【給鏡像添加額外的tag標(biāo)簽】
docker tag 9d9c6030e5e9 test/mytag
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。