【Docker】使用指南

本文目標(biāo)

介紹docker基本知識
學(xué)會(huì)打包一個(gè)自定義的docker并讓其他人可以成功使用
docker進(jìn)階知識積累

參考資料

docker基本概念

docker誕生背景

docker誕生就是為了解決開發(fā)環(huán)境和多軟件版本不一致的問題凉夯。


docker不是虛擬機(jī)

docker安裝

sudo wget -qO- https://get.docker.com | sh
sudo usermod -aG docker usernamexxx

docker基本概念

docker總體架構(gòu):
注意docker daemon,負(fù)責(zé)管控命令執(zhí)行


image.png

docker中有這樣幾個(gè)概念:

  • dockerfile:
  • image:
  • container:

實(shí)際上你可以簡單的把image理解為可執(zhí)行程序,container就是運(yùn)行起來的進(jìn)程垢粮。

那么寫程序需要源代碼贴届,那么“寫”image就需要dockerfile,dockerfile就是image的源代碼,docker就是"編譯器"毫蚓。

因此我們只需要在dockerfile中指定需要哪些程序占键、依賴什么樣的配置,之后把dockerfile交給“編譯器”docker進(jìn)行“編譯”元潘,也就是docker build命令畔乙,生成的可執(zhí)行程序就是image,之后就可以運(yùn)行這個(gè)image了翩概,這就是docker run命令啸澡,image運(yùn)行起來后就是docker container。

具體的使用方法就不在這里贅述了氮帐,大家可以參考docker的官方文檔嗅虏,那里有詳細(xì)的講解。

實(shí)戰(zhàn)

docker常用指令

docker pull # 獲取docker image

docker run -p... #運(yùn)行container 端口映射

docker run -v xxx(local path):xxx(docker 內(nèi)部目錄)# 目錄掛載

docker run -it # -t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上上沐, -i 則讓容器的標(biāo)準(zhǔn)輸入保持打開皮服。

docker commit # 保存改動(dòng)為新的image

docker build # 創(chuàng)建docker image

docker create # 

docker attach # 進(jìn)入容器(不是進(jìn)入image)

docker rm [docker id] # 刪除docker container

docker rmi [docker image id] # 刪除docker image

docker ps # 查看正在運(yùn)行的docker

docker ps -a # 查看docker運(yùn)行的歷史

docker images # 查看本地已有的docker鏡像

docker inspect # 查看image內(nèi)部具體信息

docker cp # 在host和container之間拷貝文件

docker stop # 停止container

docker search # 在遠(yuǎn)程倉庫docker hub搜索鏡像

docker login # 登錄docker hub

docker push # 將本地鏡像上傳到docker hub


build自定義docker

除了用docker commit命令,還可以編寫Dockerfile(約定俗稱是這種寫法)來定義和保存自己的docker参咙。

FROM xxx # 設(shè)置基礎(chǔ)鏡像

MAINTAINER xxxx # 著名文件作者/維護(hù)者

RUN xxx # 執(zhí)行命令

COPY xxx # 拷貝文件

ADD xxx # 添加文件

ENTRYPOINT xxx # 給container指定執(zhí)行入口

EXPOSE xxx # 暴露端口

CMD xxx # 執(zhí)行命令龄广,給container指定執(zhí)行入口

WORKDIR # 指定運(yùn)行命令的路徑

ENV # 為container里面環(huán)境的設(shè)置環(huán)境變量

USER # 指定執(zhí)行container的用戶

VOLUME # 指定container執(zhí)行時(shí)掛在的卷

Dockerfile中的每一行都產(chǎn)生一個(gè)新的層,也就是說每一行的命令都會(huì)產(chǎn)生一個(gè)新的docker id蕴侧。

Docker鏡像為深度學(xué)習(xí)訓(xùn)練模型提供了一個(gè)方便的環(huán)境择同,用戶可以在不影響系統(tǒng)環(huán)境的情況下實(shí)現(xiàn)自己任意的環(huán)境搭建,這里展示基本docker環(huán)境搭建過程净宵。

  • 任務(wù)需求:比如我現(xiàn)在想要在torch1.7的docker(這里簡稱它為base docker)基礎(chǔ)上再安裝一些自己想要安裝的包敲才,構(gòu)建出一個(gè)新的docker。
  • 大致邏輯:先把想要的base docker pull到本地择葡,在本地進(jìn)入此docker紧武,再在這docker里安裝自己想要的包,都安裝好后敏储,退出當(dāng)前docker阻星,把這個(gè)docker commit到一個(gè)新的docker(自己的docker)上,再push自己的docker到dockerhub repo已添。
  • 具體步驟:

1)去dockerhub上找一個(gè)torch1.7的docker妥箕,pull下來,比如我們從torch官方的docker tags里面找到我們想要的torch1.7 develop版本更舞。找到后畦幢,在本地運(yùn)行:

docker pull pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel

上述操作是將這個(gè)docker先拉到本地。

2)進(jìn)入docker:

docker run --runtime=nvidia -it --name=test --ipc=host --net=host pytorch/pytorch:1.7.1-cuda11.0-cudnn8-devel

3)進(jìn)入docker后就可以盡情地配置自己的環(huán)境了疏哗。

4)配置完后呛讲,“exit”退出docker禾怠。

5)將配置好的docker commit到自己的docker(相當(dāng)于復(fù)制了一份到自己的docker)返奉。

 docker ps -a    # 查看并找到配置好的docker的id
docker commit [docker id] geekyutao/foresee-rl:v0    # geekyutao/foresee-rl:v0是我自己在dockerhub上創(chuàng)建的repo

6)在本地登錄dockerhub贝搁,再把本地的自己的docker push到dockerhub上。

docker login -u [username] -p [password]    # 如果報(bào)錯(cuò)的話芽偏,很可能是因?yàn)闄C(jī)器默認(rèn)使用了一個(gè)docker證書
# 如果報(bào)錯(cuò):刪除/usr/local/bin/下的docker證書再登錄
# sudo rm /usr/local/bin/docker-credential-pass

docker push geekyutao/foresee-rl:v0

7)完成雷逆!再把操作期間遺留的docker和docker image都刪了。(借助docker基本操作)

image

docker進(jìn)階

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末膀哲,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子被碗,更是在濱河造成了極大的恐慌某宪,老刑警劉巖,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件锐朴,死亡現(xiàn)場離奇詭異兴喂,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)焚志,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進(jìn)店門衣迷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人酱酬,你說我怎么就攤上這事壶谒。” “怎么了膳沽?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵汗菜,是天一觀的道長。 經(jīng)常有香客問我挑社,道長呵俏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任滔灶,我火速辦了婚禮普碎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘录平。我一直安慰自己麻车,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布斗这。 她就那樣靜靜地躺著动猬,像睡著了一般。 火紅的嫁衣襯著肌膚如雪表箭。 梳的紋絲不亂的頭發(fā)上赁咙,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼彼水。 笑死崔拥,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的凤覆。 我是一名探鬼主播链瓦,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼盯桦!你這毒婦竟也來了慈俯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤拥峦,失蹤者是張志新(化名)和其女友劉穎贴膘,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體略号,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡刑峡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了璃哟。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片氛琢。...
    茶點(diǎn)故事閱讀 39,785評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖随闪,靈堂內(nèi)的尸體忽然破棺而出阳似,到底是詐尸還是另有隱情,我是刑警寧澤铐伴,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布撮奏,位于F島的核電站,受9級特大地震影響当宴,放射性物質(zhì)發(fā)生泄漏畜吊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一玲献、第九天 我趴在偏房一處隱蔽的房頂上張望捌年。 院中可真熱鬧礼预,春花似錦托酸、人聲如沸谷丸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春侨糟,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背溶耘。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工企软, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留形庭,地道東北人碘勉。 一個(gè)月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子埃元,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,713評論 2 354