雖然之前也曾用docker環(huán)境運(yùn)行了一些項(xiàng)目,但對(duì)于鏡像這塊還不是很理解,且鑒于網(wǎng)上現(xiàn)成的鏡像都包含太多用不到的庫(kù),所以決定從零開(kāi)始構(gòu)建一個(gè)自己的鏡像。
alpine linux為基礎(chǔ)鏡像
docker pull gliderlabs/alpine
alpine linux 鏡像地址
目前最新的tag是3.8版本,鏡像只有4M的大小,非常的精簡(jiǎn)。
運(yùn)行鏡像
docker run -it gliderlabs/alpine
運(yùn)行后可以看到里面有基本的linux文件系統(tǒng),這里不做演示,有興趣者可自行嘗試。
安裝php 和 nginx
apk update apk add php7 nginx
接下來(lái),根據(jù)自己的需要可以繼續(xù)安裝php相關(guān)擴(kuò)展包,或者其他linux擴(kuò)展包。
搜索擴(kuò)展包,如php7工具包,可通過(guò)以下指令:
# apk search php7
安裝php擴(kuò)展
目錄結(jié)構(gòu)
啟動(dòng)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)基本完成了。 接下來(lái),可以看看怎么把這個(gè)鏡像保存起來(lái)。
創(chuàng)建鏡像
另起一個(gè)終端,用 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
手動(dòng)啟動(dòng)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出來(lái)的,而且?guī)?dòng)腳本。
已上傳到 Docker Hub,可供下載研究。
【給鏡像添加額外的tag標(biāo)簽】
docker tag 9d9c6030e5e9 test/mytag
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
標(biāo)簽:湘潭 巴中 阜陽(yáng) 珠海 襄陽(yáng) 西藏 張家口 開(kāi)封
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker從零構(gòu)建php-nginx-alpine鏡像的方法》,本文關(guān)鍵詞 Docker,從,零,構(gòu)建,php-nginx-alpine,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。