欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

Dockerfile格式介紹-創(chuàng)新互聯(lián)

一、Dockerfile創(chuàng)建鏡像-Dockerfile格式

鯉城網(wǎng)站制作公司哪家好,找成都創(chuàng)新互聯(lián)公司!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。成都創(chuàng)新互聯(lián)公司公司2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選成都創(chuàng)新互聯(lián)公司。

1. FROM  //指定基于哪個(gè)基礎(chǔ)鏡像,必須要有的

格式 FROM <image> 或者  FROM <image>:<tag>,  比如

FROM centos

FROM centos:latest

2. MAINTAINER  //指定作者信息,可以有或無(wú)。

格式  MAINTAINER <name> ,比如

MAINTAINER  aming  aming@aminglinux.com

3. RUN  //鏡像操作指令

格式為 RUN <command>  或者 RUN [“executable”, “param1”, “param2”],比如

RUN  yum install  httpd

RUN ["/bin/bash", "-c", "echo hello"]    //如果有命令,有選項(xiàng),有參數(shù)就寫(xiě)方括號(hào)這樣的形式,用逗號(hào)作為分隔符,用雙引號(hào)引起來(lái)。

4. CMD  // 三種格式:

CMD ["executable", "param1", "param2"]

CMD command param1 param2   //CMD后直接寫(xiě)。

CMD ["param1", "param2"]    //CMD后加方括號(hào),方括號(hào)內(nèi)寫(xiě)參數(shù)。

RUN和CMD看起來(lái)挺像,但是CMD用來(lái)指定容器啟動(dòng)時(shí)用到的命令,只能有一條。比如把nginx啟動(dòng),就可以寫(xiě)到CMD下:

CMD ["/bin/bash", "/usr/local/nginx/sbin/nginx", "-c", "/usr/local/nginx/conf/nginx.conf"]

5. EXPOSE

格式為 EXPOSE <port> [<port>...] , 直接寫(xiě)端口,比如

EXPOSE 22 80 8443

這個(gè)用來(lái)指定要映射出去的端口,比如容器內(nèi)部我們啟動(dòng)了sshd和nginx,所以我們需要把22和80端口暴露出去。這個(gè)需要配合-P(大寫(xiě))來(lái)工作,也就是說(shuō)在啟動(dòng)容器時(shí),需要加上-P,讓它自動(dòng)分配,這樣宿主機(jī)的監(jiān)聽(tīng)端口會(huì)隨機(jī)分配一個(gè),如果想指定宿主機(jī)具體的端口,也可以使用-p(小寫(xiě))來(lái)指定。

6. ENV

格式 ENV  <key> <value>, 比如

ENV PATH /usr/local/mysql/bin:$PATH

它主要是為后續(xù)的RUN指令提供一個(gè)環(huán)境變量,我們也可以定義一些自定義的變量

ENV MYSQL_version 5.6

7. ADD  格式 ADD <src> <dest>

//把一個(gè)資源添加到你的docker里,支持本地文件也支持遠(yuǎn)程鏈接。

將本地的一個(gè)文件或目錄拷貝到容器的某個(gè)目錄里。 其中src(源)為Dockerfile所在目錄的相對(duì)路徑,它也可以是一個(gè)url。比如

ADD <conf/vhosts> </usr/local/nginx/conf>

8. COPY

格式同add

使用方法和add一樣,不同的是,它不支持url遠(yuǎn)程下載。

9. ENTRYPOINT  格式類似CMD

容器啟動(dòng)時(shí)要執(zhí)行的命令,它和CMD很像,也是只有一條生效,如果寫(xiě)多個(gè)只有最后一條有效。和CMD不同是:

CMD 是可以被 docker run 指令覆蓋的,而ENTRYPOINT不能覆蓋。比如,容器名字為aming

我們?cè)贒ockerfile中指定如下CMD:

CMD ["/bin/echo", "test"]

啟動(dòng)容器的命令是  docker run aming 這樣會(huì)輸出 test

假如啟動(dòng)容器的命令是 docker run -it aming  /bin/bash  什么都不會(huì)輸出,像這個(gè)/bin/bash是可以覆蓋掉CMD后面那條指令的。所以最后面一旦加了一條指令,CMD后面的指令就失效了。但是這個(gè)ENTRYPOINT就沒(méi)問(wèn)題,平常在用dockerfile時(shí)大部分都是在用ENTRYPOINT,很少用CMD。

ENTRYPOINT不會(huì)被覆蓋,而且會(huì)比CMD或者docker run指定的命令要靠前執(zhí)行

ENTRYPOINT ["echo", "test"]

docker run -it aming  123

則會(huì)輸出 test  123 ,這相當(dāng)于要執(zhí)行命令  echo test  123

10. VOLUME指定掛載點(diǎn)

格式  VOLUME ["/data"]  就相當(dāng)于docker -v后面跟的那個(gè)目錄

創(chuàng)建一個(gè)可以從本地主機(jī)或其他容器掛載的掛載點(diǎn)。

11. USER

格式 USER daemon

指定運(yùn)行容器的用戶,這個(gè)很少用,一般都是root。

12. WORKDIR

格式 WORKDIR  /path/to/workdir

為后續(xù)的RUN、CMD或者ENTRYPOINT指定工作目錄。指定一個(gè)目錄,指定完后在這個(gè)目錄下進(jìn)行操作。

二、Dockerfile示例

先下載nginx的配置文件,也可以不下載,后面用ADD添加進(jìn)去。

# wget http://www.apelearn.com/study_v2/.nginx_conf

# vim Dockerfile //內(nèi)容如下

## Set the base image to CentOS FROM centos # File Author / Maintainer MAINTAINER aming aming@aminglinux.com # Install necessary tools RUN yum install -y pcre-devel wget net-tools gcc zlib zlib-devel make openssl-devel # Install Nginx ADD http://nginx.org/download/nginx-1.8.0.tar.gz . RUN tar zxvf nginx-1.8.0.tar.gz RUN mkdir -p /usr/local/nginx RUN cd nginx-1.8.0 && ./configure --prefix=/usr/local/nginx && make && make install RUN rm -fv /usr/local/nginx/conf/nginx.conf #COPY .nginx_conf /usr/local/nginx/conf/nginx.conf ADD http://www.apelearn.com/study_v2/.nginx_conf /usr/local/nginx/conf/nginx.conf # Expose ports EXPOSE 80 # Set the default command to execute when creating a new container ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd

沒(méi)有指定WORKDIR的位置,默認(rèn)就是在根目錄下。

如果是先下載的nginx的配置文件,就用COPY那一條,沒(méi)有下載,則用下面的ADD的一條。

說(shuō)明:ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -f /etc/passwd

//docker容器啟動(dòng)的時(shí)候要執(zhí)行的一條命令,當(dāng)執(zhí)行完 /usr/local/nginx/sbin/nginx這條命令后,nginx服務(wù)會(huì)啟動(dòng),但是當(dāng)這條命令執(zhí)行完,容器會(huì)自動(dòng)停止,所以當(dāng)加一條tail -f /etc/passwd,這條命令就永遠(yuǎn)執(zhí)行不完,容器就會(huì)一直運(yùn)行。

創(chuàng)建鏡像:

# docker build -t centos_dockerfile_nginx .

//-t 指定新的鏡像名,后面的點(diǎn)表示路徑,在哪里找Dockerfile文件。

執(zhí)行過(guò)程可能出現(xiàn)錯(cuò)誤,我這里出現(xiàn)了容器無(wú)法聯(lián)網(wǎng),因?yàn)橹鞍惭b了第三方的pipework,把ens33和br0做了交換,而它這里還是在使用ens33的網(wǎng)絡(luò),所以無(wú)法聯(lián)網(wǎng),解決方法就是重啟docker服務(wù),讓它自動(dòng)去綁定br0。

重啟后,可以先檢查一下,為了保證后續(xù)build的工作順利進(jìn)行。檢查方法:先進(jìn)入一個(gè)之前的別的容器,看能不能聯(lián)網(wǎng),能聯(lián)網(wǎng),就說(shuō)明后續(xù)的build的操作問(wèn)題不大。

再次執(zhí)行build,可以看到一步一步的執(zhí)行過(guò)程。

# docker  images  //可以看到新建的鏡像 # docker run -itd -p 8088:80 centos_dockerfile_nginx bash

安裝nginx

第二種方案:將nginx先在本機(jī)編譯好,然后再直接拷貝二進(jìn)制文件(/usr/local/nginx)到容器里,需要注意nginx可執(zhí)行文件依賴的庫(kù)文件是否需要跟著拷貝到容器里。

第三種方案:搞個(gè)新版的nginx rpm包,拷貝進(jìn)去直接安裝了。

三、用Docker compose部署服務(wù)

docker compose可以方便我們快捷高效地管理容器的啟動(dòng)、停止、重啟等操作,它類似于linux下的shell腳本,基于yaml語(yǔ)法,在該文件里我們可以描述應(yīng)用的架構(gòu),比如用什么鏡像、數(shù)據(jù)卷、網(wǎng)絡(luò)模式、監(jiān)聽(tīng)端口等信息。我們可以在一個(gè)compose文件中定義一個(gè)多容器的應(yīng)用比如jumpserver),然后通過(guò)該compose來(lái)啟動(dòng)這個(gè)應(yīng)用。

安裝compose方法如下:

# curl -L https://github.com/docker/compose/releases/download/1.17.0-rc1/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose # chmod 755 !$ # docker-compose version 查看版本信息

Compose區(qū)分Version 1和Version 2(Compose 1.6.0+,Docker Engine 1.10.0+)。這里是+號(hào)的意思是1.6.0之后就是2版本。

Version 2支持更多的指令。Version 1沒(méi)有聲明版本默認(rèn)是"version 1"。Version 1將來(lái)會(huì)被棄用。

四、Docker compose示例

# vim docker-compose.yml version: "2" services:   app1:     image: centos_nginx     ports:       - "8081:80"     networks:       - "net1"     volumes:       - /data/:/data     entrypoint: tail -f /etc/passwd     app2:     image: centos_with_net     networks:       - "net2"     volumes:       - /data/:/data1     entrypoint: tail -f /etc/passwd networks:   net1:     driver: bridge   net2:     driver: bridge

解析:

services:接下來(lái)要操作的是容器或者鏡像相關(guān)的一些操作。一級(jí)目錄。

app1:容器的名字,二級(jí)目錄。

image:對(duì)應(yīng)的鏡像。

ports:也就是-p那個(gè)要映射的端口。

networks:使用的網(wǎng)絡(luò),net1,net1在下面定義。

driver:指定的模式。即使不寫(xiě),默認(rèn)就是bridge,可以寫(xiě)其他的,通常都是用bridge。這里官方不支持pipework,只能寫(xiě)shell腳本,bridge這里就寫(xiě)none,之后再額外給它分配一個(gè)IP就行了。

volumes:就是-v的選項(xiàng),把本地和容器的目錄做一個(gè)映射。

entrypoint:也支持entrypoint,寫(xiě)一個(gè)tail -f 是因?yàn)椋J(rèn)會(huì)用/bin/bash打開(kāi),這個(gè)容器就不能繼續(xù)運(yùn)行了,所以為了讓容器能一直運(yùn)行,要寫(xiě)一個(gè)這個(gè)。每個(gè)app最后都要寫(xiě)著一條。

# docker-compose up -d 可以啟動(dòng)兩個(gè)容器 # docker-compose --help # docker-compose ps/down/stop/start/rm  # docker-compose ps    可以更清晰的看到用compose啟動(dòng)的容器

up和down對(duì)等,down能把compose的容器全部刪除。

start和stop只是把容器啟動(dòng)或停止。

rm:把停止的容器清空。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。

網(wǎng)站標(biāo)題:Dockerfile格式介紹-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:http://chinadenli.net/article32/descpc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供手機(jī)網(wǎng)站建設(shè)、ChatGPT、面包屑導(dǎo)航網(wǎng)頁(yè)設(shè)計(jì)公司、品牌網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)