docker鏡像制作和更新.md

使用非root用戶(hù)操作DOCKER

docker默認(rèn)使用root操作。
1.創(chuàng)建docker組:

sudo groupadd docker

2.將當(dāng)前用戶(hù)加入docker組:

sudo gpasswd -a ${USRE} docker

3.重新啟動(dòng)docker服務(wù):#

sudo service docker restart 或
sudo systemctl restart docker(視平臺(tái)而定)

4.當(dāng)前用戶(hù)退出系統(tǒng),重新登陸

構(gòu)建鏡像:commit方式或build方式

1.commit方式:基礎(chǔ)鏡像運(yùn)行生成容器,容器中安裝需要工具,提交鏡像缠诅。

注意:官方python鏡像中的python版本默認(rèn)為3,要使用python2需要使用python2命令。
我們用commit方式構(gòu)建python2基礎(chǔ)鏡像换吧。

  1. docker search centos
    從docker Hub搜索centos官方鏡像
 docker pull docker.io/centos

/之前表示倉(cāng)庫(kù)名,之后表示鏡像名钥星。docker.io是國(guó)內(nèi)daocloud加速鏡像沾瓦。

docker run -it --name my_centos docker.io/centos /bin/bash

運(yùn)行centos鏡像,-it表示啟動(dòng)終端交互界面 --name是自定義的容易名字 /bin/bash表示容器啟動(dòng)時(shí)候執(zhí)行的命令
Linux提示符會(huì)變成類(lèi)似[root@9cabea476573 /]字樣,表示進(jìn)入容器贯莺。

Centos7.4帶的python默認(rèn)版本為2.7.5
安裝python開(kāi)發(fā)工具

yum install -y python-devel

如果提示沒(méi)有python-pip风喇,需要先執(zhí)行

yum -y install epel-release

提交生成的容器為鏡像,命令執(zhí)行結(jié)束后缕探,會(huì)輸出一行sha256的字符串魂莫,表示鏡像ID

docker commit -m 'my python 2.7.5' my_centos python2:v0.1

-m:鏡像描述
my_centos:上一步生成鏡像的名稱(chēng)
python2:生成的鏡像保存的倉(cāng)庫(kù)名
v0.1:生成鏡像的版本號(hào)

查看剛生成的鏡像

docker image

build方式構(gòu)建鏡像(Dockerfile):

  1. 通過(guò)寫(xiě)Dockerfile來(lái)生成image,有點(diǎn)事邏輯清晰爹耗,便于管理

    創(chuàng)建存放Dockerfile的目錄耙考,后續(xù)操作將在這個(gè)目錄下進(jìn)行。

mkdir ~/imagedir
cd ~/imagedir
  1. 創(chuàng)建Dockerfile鲸沮,使用任何文本編輯器琳骡,創(chuàng)建名為Dockerfile的文件,文件名固定不可變讼溺。
  1. docker build -t myimage .

構(gòu)建鏡像楣号, -t表示將鏡像命名為myiamge . 表示在當(dāng)前目錄下的Dockerfile文件
注意:依據(jù)Dockerfile內(nèi)容,這一命令將分多步驟執(zhí)行怒坯,每一步驟會(huì)生成一個(gè)中間鏡像炫狱,作為下一步驟的基礎(chǔ)。在鏡像創(chuàng)建后剔猿,中間鏡像會(huì)銷(xiāo)毀视译。

  1. 運(yùn)行上一部生成的鏡像

    docker run -it myimage
    
  2. build 鏡像過(guò)程中發(fā)生錯(cuò)誤會(huì)生成一個(gè)名字是none鏡像,修改完Dockerfile之后可以繼續(xù)建立生成归敬,之后會(huì)刪除none中間鏡像

    <none>               <none>              1c4ac682f895        5 weeks ago         915 MB
    
Dockerfile介紹:
FROM python2:v0.1

from表示從那個(gè)基礎(chǔ)鏡像開(kāi)始構(gòu)建鏡像酷含。基礎(chǔ)鏡像來(lái)自倉(cāng)庫(kù)python2汪茧,版本v0.1
from必須作為dockerfile的第一行椅亚,若本地倉(cāng)庫(kù)沒(méi)有相關(guān)鏡像,默認(rèn)從遠(yuǎn)程倉(cāng)庫(kù)獲取舱污。如果不執(zhí)行版本號(hào)呀舔,默認(rèn)使用latest基礎(chǔ)鏡像。

MAINTAINER YouShow
鏡像維護(hù)者個(gè)人信息

RUN pip install flask
RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangxiaopeng/pipelines.git
RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangxiaopeng/mxspider.git
RUN pip install git+http://username:password@gitlab.maixunbytes.com/zhangsheng/dateformatting.git
安裝項(xiàng)目需要的依賴(lài)扩灯,如果從git倉(cāng)庫(kù)安裝媚赖,要用到git賬號(hào)和密碼

WORKDIR /src/spiders/app_zxp_week_2/
容器啟動(dòng)后,切換到指定目錄作為工作目錄

COPY ./spiders /src/spiders
從源系統(tǒng)的文件復(fù)制到容器系統(tǒng)上珠插。示例中復(fù)制當(dāng)前目錄下的spiders文件夾到容器系統(tǒng)src文件夾下惧磺。要把構(gòu)建進(jìn)鏡像的文件放到Dockefile文件目錄或者子目錄下。
ADD 和COPY使用類(lèi)似

USER dingyong
容器執(zhí)行操作用哪個(gè)賬戶(hù)

ENTRYPOINT bash bbs_funcs.sh run_spider siku
entrypoint用來(lái)說(shuō)明當(dāng)使用docker run啟動(dòng)容器時(shí)候要執(zhí)行的命令

CMD
CMD用來(lái)表示鏡像要運(yùn)行的默認(rèn)命令捻撑,以及想要傳遞給它的選項(xiàng)豺妓。如果沒(méi)有指定ENTRYPOINT惜互,當(dāng)容器啟動(dòng)的時(shí)候默認(rèn)運(yùn)行的就是CMD的值所指定的命令。若有ENTRYPOINT琳拭,ENTRYPOINT是要運(yùn)行的命令训堆,CMD的值當(dāng)作ENTRYPOINT的選項(xiàng)。
CMD 命令會(huì)被docker run --it name /command 中command命令覆蓋白嘁,而ENTRYPOINT不會(huì)
CMD [“cat”, “/etc/hosts”, “/etc/os-release”]注意:RUN指令設(shè)置的命令僅在構(gòu)建鏡像的時(shí)候會(huì)被使用坑鱼,CMD和ENTRYPOINT會(huì)在執(zhí)行docker run的時(shí)候被使用。

ENV DB_USER=root
設(shè)置環(huán)境變量

注意:編寫(xiě)Dockerfile時(shí)候絮缅,根據(jù)需求填寫(xiě)鲁沥,不需要填寫(xiě)所有命令。

刪除鏡像和container

rm Remove one or more containers
rmi Remove one or more images

docker rmi image-id
如果刪除失敗說(shuō)明在containers中有需要先刪除container中的內(nèi)容

更新鏡像

commit來(lái)更新 還有重新build更新

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末耕魄,一起剝皮案震驚了整個(gè)濱河市画恰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌吸奴,老刑警劉巖允扇,帶你破解...
    沈念sama閱讀 207,248評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異则奥,居然都是意外死亡考润,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門(mén)读处,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)糊治,“玉大人,你說(shuō)我怎么就攤上這事罚舱【迹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,443評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵管闷,是天一觀的道長(zhǎng)抑胎。 經(jīng)常有香客問(wèn)我,道長(zhǎng)渐北,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,475評(píng)論 1 279
  • 正文 為了忘掉前任铭拧,我火速辦了婚禮赃蛛,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘搀菩。我一直安慰自己呕臂,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,458評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布肪跋。 她就那樣靜靜地躺著歧蒋,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上谜洽,一...
    開(kāi)封第一講書(shū)人閱讀 49,185評(píng)論 1 284
  • 那天萝映,我揣著相機(jī)與錄音,去河邊找鬼阐虚。 笑死序臂,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的实束。 我是一名探鬼主播奥秆,決...
    沈念sama閱讀 38,451評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼咸灿!你這毒婦竟也來(lái)了构订?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,112評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤避矢,失蹤者是張志新(化名)和其女友劉穎悼瘾,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體谷异,經(jīng)...
    沈念sama閱讀 43,609評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡分尸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,083評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了歹嘹。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片箩绍。...
    茶點(diǎn)故事閱讀 38,163評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖尺上,靈堂內(nèi)的尸體忽然破棺而出材蛛,到底是詐尸還是另有隱情,我是刑警寧澤怎抛,帶...
    沈念sama閱讀 33,803評(píng)論 4 323
  • 正文 年R本政府宣布卑吭,位于F島的核電站,受9級(jí)特大地震影響马绝,放射性物質(zhì)發(fā)生泄漏豆赏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,357評(píng)論 3 307
  • 文/蒙蒙 一富稻、第九天 我趴在偏房一處隱蔽的房頂上張望掷邦。 院中可真熱鬧,春花似錦椭赋、人聲如沸抚岗。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,357評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)宣蔚。三九已至向抢,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間胚委,已是汗流浹背挟鸠。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,590評(píng)論 1 261
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留篷扩,地道東北人兄猩。 一個(gè)月前我還...
    沈念sama閱讀 45,636評(píng)論 2 355
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像鉴未,于是被迫代替她去往敵國(guó)和親枢冤。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,925評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容