成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

docker自定義鏡像(php7)

zxhaaa / 2213人閱讀

摘要:首先進(jìn)行簡單的安裝。例子如可以將本地文件夾或者其他容器的文件夾掛在到容器內(nèi)。切換目錄使用,相當(dāng)于目錄指定的命令在構(gòu)建鏡像時不執(zhí)行,而是在它的子鏡像中執(zhí)行。

首先進(jìn)行簡單的docker安裝。
要進(jìn)行自定義鏡像,我們需要選擇一個基礎(chǔ)鏡像進(jìn)行構(gòu)建自己的鏡像:其實說白了,就是在一個有基礎(chǔ)定義好的容器內(nèi),執(zhí)行安裝各種程序的命令,生成 所謂的Dockerfile 文件,既然如此第一步我們首先需要找一個本地的鏡像作為基礎(chǔ)鏡像來操作即可:

1

如上圖所示,我們來以centos為基礎(chǔ)鏡像,來構(gòu)建一個Dockerfile

2第二步我們需要構(gòu)建一個目錄,用于存放Dockerfile文件


在root下構(gòu)建docker_demo目錄,存放 Dockerfile文件以及需要安裝的程序文件即可,因為我要搭建PHP的自定義環(huán)境,所以我們再來搞一個PHP7的壓縮包即可

wget http://am1.php.net/get/php-7.0.0.tar.gz/from/this/mirror

然后改名字

現(xiàn)在PHP nginx都有了,至于COMPOSER可以在php安裝成功以后再自行操作即可~~~

接下來就是編寫Dockerfile文件了,在此之前,簡單了解下Dockerfile編寫的關(guān)鍵字格式:
FROM 代表基于哪個鏡像
RUN 安裝軟件使用
MAINTAINER 鏡像的創(chuàng)建者
CMD 容器啟動時執(zhí)行的命令,但是一個Dockerfile中只能有一條CMD命令,多條則只執(zhí)行最后一條CMD
ENTRYPOINT 容器啟動時執(zhí)行的命令,但是一個Dockerfile中只能有一條CMD命令,多條則只執(zhí)行最后一條
USER 使用哪個用戶運行container
EXPOSE 容器內(nèi)部服務(wù)暴露的端口,主機上還需要在run容器時,做端口映射:

docker run -d -p 80:8080 centos6xxx 

上邊命令表示把容器內(nèi)部的8080端口映射到主機80端口上
ENV 用來設(shè)置環(huán)境變量
ADD 將主機上的文件拷貝到container內(nèi)的對應(yīng)路徑,所有拷貝到容器中的文件和文件夾權(quán)限為0755,uid和gid為0,如果文件是可識別的壓縮格式,則docker會幫忙解壓縮,ADD只有在build鏡像的時候運行一次,后面運行container的時候不會再重新加載了。
例子如:

ADD nginx-1.12.2.tar.gz /usr/local/src

VOLUME 可以將本地文件夾或者其他容器的文件夾掛在到容器內(nèi)。
WORKDIR 切換目錄使用,(相當(dāng)于cd目錄)
ONBUILD 指定的命令在構(gòu)建鏡像時不執(zhí)行,而是在它的子鏡像中執(zhí)行。
學(xué)完了Dockerfile基礎(chǔ)命令,我們來試著搞一搞這個環(huán)境.

docker pull centos

首先下載一個基礎(chǔ)鏡像,如果有這一步請忽略,下面是我的Dockerfile

# base image
# 基礎(chǔ)鏡像
FROM docker.io/centos

# MAINTAINER編寫者
MAINTAINER [email protected]

# put nginx-1.12.2.tar.gz into /usr/local/src and unpack nginx 來吧nginx 和PHP提前都放進(jìn)基礎(chǔ)鏡像的/usr/local/src目錄下,方便編譯安裝
ADD nginx-1.12.2.tar.gz /usr/local/src
ADD php-7.0.0.tar.gz /usr/local/src

# running required command 安裝Nginx的一系列亂七八糟的依賴包
RUN yum install -y gcc gcc-c++ glibc make autoconf openssl openssl-devel
RUN yum install -y libxslt-devel -y gd gd-devel GeoIP GeoIP-devel pcre pcre-devel
RUN useradd -M -s /sbin/nologin nginx

# change dir to /usr/local/src/nginx-1.12.2
WORKDIR /usr/local/src/nginx-1.12.2

# execute command to compile nginx
RUN ./configure --user=nginx --group=nginx --prefix=/usr/local/nginx --with-file-aio --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module --with-http_image_filter_module --with-http_geoip_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_stub_status_module && make && make install

#先裝個本地Mysql
RUN yum install -y wget
RUN wget http://repo.mysql.com/mysql57-community-release-el7-8.noarch.rpm
RUN rpm -ivh mysql57-community-release-el7-8.noarch.rpm
RUN yum install -y mysql-server


#截止此,開始安裝php,宇宙慣例,開始安裝一些編譯的依賴包
RUN yum -y install epel-release
RUN yum -y install libmcrypt-devel
RUN yum -y install libxml2 libxml2-devel openssl openssl-devel curl-devel libjpeg-devel libpng-devel freetype-devel
WORKDIR /usr/local/src/php-7.0.0
#編譯 安裝
RUN ./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/etc/php.d --with-mcrypt=/usr/include --enable-mysqlnd --with-mysqli --with-pdo-mysql --enable-fpm --with-fpm-user=nginx --with-fpm-group=nginx --with-gd --with-iconv --with-zlib --enable-xml --enable-shmop --enable-sysvsem --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --with-openssl --enable-pcntl --enable-sockets --with-xmlrpc --enable-zip --enable-soap --without-pear --with-gettext --enable-session --with-curl --with-jpeg-dir --with-freetype-dir --enable-opcache && make && make install

RUN cp php.ini-production /usr/local/php7/etc/php.ini

構(gòu)建成功Dockerfile文件之后,docker build進(jìn)行構(gòu)建

docker build -t centos_lnmp:v1 .

后邊的.代表相對路徑當(dāng)前目錄,也可使用絕對路徑
然后就是漫長的等待

直到構(gòu)建成功鏡像,至此我們重新開始

docker images


我們看到該鏡像已經(jīng)構(gòu)建成功(有一點幾率構(gòu)建失敗,失敗的話刪除容器和鏡像重新構(gòu)建即可),然后運行

docker run -dt -p 80:80 centos_lnmp:v1

成功后則可進(jìn)入容器,配置nginx php 。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/29642.html

相關(guān)文章

  • docker定義鏡像php7

    摘要:首先進(jìn)行簡單的安裝。例子如可以將本地文件夾或者其他容器的文件夾掛在到容器內(nèi)。切換目錄使用,相當(dāng)于目錄指定的命令在構(gòu)建鏡像時不執(zhí)行,而是在它的子鏡像中執(zhí)行。 首先進(jìn)行簡單的docker安裝。要進(jìn)行自定義鏡像,我們需要選擇一個基礎(chǔ)鏡像進(jìn)行構(gòu)建自己的鏡像:其實說白了,就是在一個有基礎(chǔ)定義好的容器內(nèi),執(zhí)行安裝各種程序的命令,生成 所謂的Dockerfile 文件,既然如此第一步我們首先需要找一...

    MkkHou 評論0 收藏0
  • Docker:說愛你不容易

    摘要:傳送門加速目前國內(nèi)比較多人用的加速器有和阿里云。啟動一條命令即可快速啟動一個服務(wù)器運行后,會自動從倉庫中下載最新的鏡像,并設(shè)置為密碼為,同時暴露出端口,容器命名為,并后臺運行。 docker 對于很多程序猿來說,一點都不陌生,畢竟它是一個輕量級的部署神器。 也許,也有很多童鞋和我一樣,只聽說過,卻沒有真正的實踐過 docker。那么,現(xiàn)在一起走進(jìn) docker 的世界。 什么是 Doc...

    snowell 評論0 收藏0
  • Docker:說愛你不容易

    摘要:傳送門加速目前國內(nèi)比較多人用的加速器有和阿里云。啟動一條命令即可快速啟動一個服務(wù)器運行后,會自動從倉庫中下載最新的鏡像,并設(shè)置為密碼為,同時暴露出端口,容器命名為,并后臺運行。 docker 對于很多程序猿來說,一點都不陌生,畢竟它是一個輕量級的部署神器。 也許,也有很多童鞋和我一樣,只聽說過,卻沒有真正的實踐過 docker。那么,現(xiàn)在一起走進(jìn) docker 的世界。 什么是 Doc...

    xiangchaobin 評論0 收藏0
  • Dockerfile 與 Compose 環(huán)境搭建學(xué)習(xí)筆記(一)

    摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉庫拿現(xiàn)成的使用。以接下來要構(gòu)建的環(huán)境來說明下,下面我將要搭建一個的開發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機的端口。 以前一直使用 Vagrant 作為自己的開發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開發(fā)環(huán)境,保障公司使用的是同一套開發(fā)環(huán)境。隨著docker的流...

    TZLLOG 評論0 收藏0
  • Dockerfile 與 Compose 環(huán)境搭建學(xué)習(xí)筆記(一)

    摘要:的主要作用是自己根據(jù)基礎(chǔ)鏡像,重新定制鏡像,而不是直接從官方倉庫拿現(xiàn)成的使用。以接下來要構(gòu)建的環(huán)境來說明下,下面我將要搭建一個的開發(fā)環(huán)境,需要進(jìn)行配合。它的主要作用是持久化數(shù)據(jù),避免容器銷毀后內(nèi)部數(shù)據(jù)丟失暴露到宿主機的端口。 以前一直使用 Vagrant 作為自己的開發(fā)環(huán)境,并且在上家公司也推行大家采用 Vagrant 作為開發(fā)環(huán)境,保障公司使用的是同一套開發(fā)環(huán)境。隨著docker的流...

    ityouknow 評論0 收藏0

發(fā)表評論

0條評論

zxhaaa

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<