真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Docker如何使用Dockerfile來創(chuàng)建鏡像

今天小編給大家分享一下Docker如何使用Dockerfile來創(chuàng)建鏡像的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

為埇橋區(qū)等地區(qū)用戶提供了全套網(wǎng)頁設(shè)計制作服務(wù),及埇橋區(qū)網(wǎng)站建設(shè)行業(yè)解決方案。主營業(yè)務(wù)為成都網(wǎng)站設(shè)計、成都做網(wǎng)站、埇橋區(qū)網(wǎng)站設(shè)計,以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會得到認(rèn)可,從而選擇與我們長期合作。這樣,我們也可以走得更遠(yuǎn)!

1.dockerfile

1.1基本案例

dockerfile可以說是docker的描述符,該文件定義了docker鏡像的所能擁有哪些東西.基本格式如下:

第一行指定該鏡像基于的基礎(chǔ)鏡像(必須)
from java:8

維護(hù)者信息
maintainer quding niudear@foxmail.com

鏡像操作指令
run echo $java_home

啟動時操作的命令

cmd ./usr/sbin/nginx

該文件說明從java8這個基礎(chǔ)鏡像創(chuàng)建一個新的鏡像,輸出java路徑,啟動成功則啟動nginx服務(wù),這也是一個dockerfile需要包含的操作步驟.

1.2指令詳解

1.from:格式為 from 或from:第一條指令必須是from指令。并且,如果在同一個dockerfile中創(chuàng)建多個鏡像時,可以使用多個from指令(每個鏡像一次)。

2.maintainer:格式為maintaier,指定維護(hù)者信息。

3.run:格式為run 或者run [“executable”,“param1”,“param2”]。前者將在shell終端中運(yùn)行的命令,即/bin/sh–c;后者則使用exec執(zhí)行。指定使用其他終端可以通過第二種方式實(shí)現(xiàn),例如run[“/bin/bash”,“-c”,“echohello”]。每條run指令將在當(dāng)前鏡像基礎(chǔ)上執(zhí)行指定命令,并提交為新的鏡像。當(dāng)命令較長時可以使用\來換行。這實(shí)際上就是在容器構(gòu)建時需要執(zhí)行哪些指令,例如容器構(gòu)建時需要下拉代碼,但是默認(rèn)啟動的容器中是沒有g(shù)it指令的,就需要下載,可以執(zhí)行:run apt-get install -y git,然后run git clonexxxx

4.cmd:指定容器啟動后執(zhí)行的命令

命令格式為:

sh格式: cmd <命令>

exec格式:cmd [“可執(zhí)行文件”,”參數(shù)1”,”參數(shù)2”]

一般都是早就寫好的腳本或者啟動一個服務(wù),例如:cmd[“/run.sh”]。注意:如果dockerfile中指定了多條命令,只有最后一條會被執(zhí)行。如果用戶啟動時候加了運(yùn)行的命令,則會覆蓋掉cmd指定的指令。

這里有一個問題,很多時候我們想要docker一直在后臺運(yùn)行,但是往往docker啟動后就停止.原因就在于此.

比如執(zhí)行cmd serice MySQL start,那么翻譯過來的話是cmd ["sh","-c","serice mysql start"],那么對于docker來說cmd主進(jìn)程為sh,那么sh執(zhí)行完該命令就結(jié)束,所以導(dǎo)致docker停止.所以要改成直接啟動文件形式cmd ["mysql","-g",""daemon off;],指定前臺運(yùn)行.

5.expose:告訴docker服務(wù)端容器需要暴露的端口號,供互聯(lián)系統(tǒng)使用。在啟動容器時需要通過-p(注意是大寫),docker主機(jī)會自動分配一個端口轉(zhuǎn)發(fā)到指定的端口;使用-p,則可以具體指定哪個本地端口映射過來。
例如:我在elasticsearch鏡像的dockerfile中指定了暴露出9200和9300端口,我可以在dockerfile中寫:expose 9200 9300

6.env:創(chuàng)建的時候給容器中加上個需要的環(huán)境變量。指定一個值,為后續(xù)的run指令服務(wù)

7.copy:復(fù)制本地的文件或目錄到容器中。目標(biāo)路徑不存在時,會自動創(chuàng)建。

8.entrypoint:配置容器啟動后執(zhí)行的命令,并且不可被docker run 提供的參數(shù)覆蓋。
每個dockerfile中只能有一個entrypoint,當(dāng)指定多個entrypoint時,只有最后一個生效

9.volume:創(chuàng)建一個掛在點(diǎn),可以從本機(jī)或其他容器掛載的掛載點(diǎn)。意思就是從容器中暴露出一部分,和外界共享這塊東西,一般放數(shù)據(jù)庫的數(shù)據(jù)或者是代碼。在容器啟動運(yùn)行的時候,如果需要將volume暴露的東西和本地的一個文件夾進(jìn)行映射,想要通過本地文件直接訪問容器中暴露的部分,可以在運(yùn)行的時候進(jìn)行映射:

10.user:指定運(yùn)行容器時的用戶名或者uid,后續(xù)的run也會使用指定的用戶。當(dāng)服務(wù)不需要管理員權(quán)限時,可以通過該命令指定運(yùn)行用戶。并且可以在之前創(chuàng)建所需要的用戶。
要臨時獲取管理員權(quán)限的時候要使用gosu,不推薦使用sudo。如果不指定,容器默認(rèn)是root運(yùn)行。

11.workdir:定義工作目錄,如果容器中沒有此目錄,會自動創(chuàng)建

創(chuàng)建指令docker build 路徑,該命令會讀取路徑下的dockerfile文件和其他文件,然后發(fā)送給服務(wù)端,由服務(wù)端創(chuàng)建鏡像.

2.創(chuàng)建ssh服務(wù)鏡像

2.1準(zhǔn)備java8環(huán)境

后續(xù)教程需要利用到j(luò)ava8環(huán)境,因此先下載一個官方的java8鏡像作為基礎(chǔ)鏡像.直接執(zhí)行如下命令.可以利用之前的教程,啟動容器查看下java路徑.

docker pull java:8

Docker如何使用Dockerfile來創(chuàng)建鏡像

2.2編寫dockerfile

ssh服務(wù)主要是openssh-server來提供,因此需要在容器中安裝該服務(wù).

dockerfile:

#顯示該鏡像是基于java8鏡像
from java:8

#維護(hù)人信息
maintainer quding niudear@foxmail.com
#更新源
run apt-get update
#安裝軟件
run apt-get install -y openssh-server

run mkdir -p /var/run/sshd
run mkdir -p /root/.ssh

#取消pam限制
run sed -ri 's/session required  pam_loginuid.so/#session  required pam_loginuid.so/g' /etc/pam.d/sshd

#復(fù)制配置文件到相應(yīng)位置
copy authorized_keys /root/.ssh/authorized_keys
copy run.sh /run.sh

#賦予腳本權(quán)限
run chmod 755 /run.sh

#開放端口
expose 22

#設(shè)置啟動命令

cmd ["/run.sh"]

run.sh

#!/bin/bash
/usr/sbin/sshd -d

拷貝本機(jī)的id_ras

cat ~/.ssh/id_rsa.pub >authorized_keys
//用來免密的

執(zhí)行構(gòu)建

docker build -t sshd:java .

構(gòu)建成功后使用docker images即可查看,然后像上篇一樣啟動容器,暴露出端口,再使用ssh連接,和一般linux系統(tǒng)就沒什么差別了.

以上就是“Docker如何使用Dockerfile來創(chuàng)建鏡像”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


網(wǎng)站名稱:Docker如何使用Dockerfile來創(chuàng)建鏡像
文章轉(zhuǎn)載:http://weahome.cn/article/jcpshh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部