Docker教程文檔

課程說明

B站視頻:Docker小白快速入門+實戰(zhàn)
課程目的:幫助從未接觸過docker的同學(xué)快速入門并上手使用衔掸,在教程最后會有一個實戰(zhàn)階段。
操作系統(tǒng):Macos物理機+Centos虛擬機
編程語言:Golang為主
Github:課程文檔俺抽、源碼
DockerHub:實戰(zhàn)課的鏡像
Docker官方文檔:docs.docker.com

環(huán)境安裝

sudo yum install -y yum-utils  
sudo yum-config-manager  --add-repo https://download.docker.com/linux/centos/docker-ce.repo  
sudo yum install -y docker-ce docker-ce-cli containerd.io  
sudo systemctl enable docker  
sudo systemctl start docker  

Docker簡介

Build, Ship and Run Any App, Anywhere(一次封裝具篇,到處運行)

核心概念

注冊服務(wù)器、鏡像倉庫凌埂、鏡像、容器

  • 注冊服務(wù)器:存放鏡像倉庫
  • 鏡像倉庫:存放鏡像
  • 鏡像:創(chuàng)建容器的模板
  • 容器:一個鏡像的運行實例诗芜,應(yīng)用程序在容器中運行

與虛擬機對比

Docker容器可以類比虛擬機瞳抓,但比虛擬機啟動更快、資源占用更少

常用命令

鏡像

  • 查看鏡像列表:docker images 或者 docker image ls
  • 查看鏡像明細(xì):docker inspect 鏡像id
  • 拉取鏡像:docker pull hello-world伏恐,指定tag
  • 鏡像提交歷史:docker history 鏡像名:tag/id
  • 刪除鏡像:docker rmi 鏡像名:tag/鏡像id
  • 創(chuàng)建鏡像tag:docker tag 鏡像名:tag 新鏡像名:新tag(如果鏡像的名稱和tag已經(jīng)存在孩哑,那么此命令就是新增。否則是修改)
  • 鏡像導(dǎo)出:docker save 鏡像id > 1.tar 或者 docker save -o 1.tar 鏡像id(導(dǎo)出進行的詳細(xì)信息)
  • 鏡像導(dǎo)入:docker load < 1.tar 或者 docker load -i 1.tar
  • 在組成服務(wù)器中搜索鏡像倉庫:docker search nginx
  • docker run 創(chuàng)建并啟動一個容器(后面總結(jié))
  • docker create 創(chuàng)建一個容器

容器

  • 查看正在運行的容器:docker ps
  • 查看所有容器:docker ps -a
  • 容器的啟動翠桦、暫停横蜒、恢復(fù)、停止: docker start|pause|unpause|stop 容器id
  • 查看容器內(nèi)的日志:docker logs 容器id
  • 刪除容器:docker rm 容器id
  • 查看容器詳情:docker inspect 容器id
  • 容器導(dǎo)出:docker export 1.tar 容器id(只是導(dǎo)出當(dāng)前信息)
  • 容器導(dǎo)入:docker import 1.tar 鏡像名:tag(是導(dǎo)入為一個鏡像)
  • 基于當(dāng)前容器創(chuàng)建一個鏡像:docker commit

數(shù)據(jù)卷

具名和匿名掛載

-- docker run -v 宿主機地址:容器地址 鏡像id
-- docker run -v 數(shù)據(jù)卷名稱:容器地址 鏡像id

數(shù)據(jù)卷容器

共享容器的數(shù)據(jù)卷
-- docker run --volume-from=容器id 鏡像id

網(wǎng)絡(luò)

-- docker run -P 宿主機隨機分配一個端口和容器內(nèi)部開放端口進行綁定
-- docker run -p 宿主機端口:容器端口
-- docker run --link 容器id
-- docker network create mynet 創(chuàng)建一個網(wǎng)絡(luò)
-- docker run --network mynet 容器id(同一個網(wǎng)絡(luò)內(nèi)的容器可以互相ping)

Dockerfile命令

  • arg 定義構(gòu)建時需要的參數(shù) arg varname=default_varvalue 或者 arg varname
  • from 定義鏡像時的基礎(chǔ)鏡像 from golang:1.17
  • label 定義進行的標(biāo)簽 label author=pingwazi
  • expose 聲明暴露的端口销凑,給dockerfile文件維護者提供信息丛晌,在容器啟動的時候使用-P命令可以可宿主機的端口進行映射 expose 8080
  • env 定義環(huán)境變量,在運行的容器中會存在 env username=pingwazi
  • entrypoint 容器啟動時執(zhí)行的命令斗幼,存在多個命令時只有最后一個生效 entrypoint ["echo","hello"]
  • volume 指定數(shù)據(jù)卷掛載點 volume ["/root","/home"] 或者 volume /root /home
  • user 指定容器啟動后使用的用戶
  • workdir 設(shè)置run澎蛛、cmd、entrypoint蜕窿、copy谋逻、add命令的工作目錄
  • onbuild 當(dāng)基于此鏡像構(gòu)建新的鏡像時執(zhí)行的命令 onbuild run ["echo","hello"]
  • stopsignal 給送給容器退出的信號
  • healthcheck 容器健康檢查,healthcheck none 禁止容器健康檢查桐经,healthcheck --interval=3 --timeout=1 --retries=1 curl --fail http://localhost:8080/ping ||exit 1
  • shell 指定shell類型命令所使用的終端類型
  • run 執(zhí)行命令毁兆,在進行生成過程中執(zhí)行
  • cmd 執(zhí)行命令,dockerfile中只有最后一個cmd命令生效阴挣,在啟動容器時如果指定了命令气堕,dockerfile中的cmd也會失效
  • add 添加文件到容器指定目錄,文件可以是宿主機上下文目錄中的、可以url的送巡、也可以使壓縮包(會自動解壓)
  • copy 拷貝宿主機上下文目錄中的文件到容器中

實戰(zhàn)

  • 1摹菠、寫一個非常簡單的go web程序
  • 2、編寫dockerfile文件
  • 3骗爆、生成鏡像并上傳到dockerhub中
  • 4次氨、另外一臺機器上pull這個鏡像,并啟動
  • 5摘投、瀏覽器訪問

Dockerfile文件內(nèi)容

# 構(gòu)建編譯文件
FROM golang:1.17 as builder
# 拷貝項目文件到鏡像中
COPY . /bin/app
# 設(shè)置命令工作目錄
WORKDIR /bin/app
# 執(zhí)行命令編譯項目文件
RUN go build -o /bin/app/web-app .

# 構(gòu)建運行時文件
FROM alpine:3.13
# 添加作者
LABEL author=pingwazi
# 設(shè)置工作目錄
WORKDIR /bin/app
# 從上一階段中拷貝可執(zhí)行文件
COPY --from=builder /bin/app/web-app /bin/app/web-app
# 聲明暴露的端口
EXPOSE 8080/tcp
# 調(diào)整動態(tài)鏈接地址
RUN mkdir /lib64 && ln -s /lib/libc.musl-x86_64.so.1 /lib64/ld-linux-x86-64.so.2
# 啟動服務(wù)
ENTRYPOINT [ "/bin/app/web-app" ]
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末煮寡,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子犀呼,更是在濱河造成了極大的恐慌幸撕,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,482評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件外臂,死亡現(xiàn)場離奇詭異坐儿,居然都是意外死亡,警方通過查閱死者的電腦和手機宋光,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,377評論 2 382
  • 文/潘曉璐 我一進店門貌矿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人罪佳,你說我怎么就攤上這事逛漫。” “怎么了赘艳?”我有些...
    開封第一講書人閱讀 152,762評論 0 342
  • 文/不壞的土叔 我叫張陵酌毡,是天一觀的道長。 經(jīng)常有香客問我蕾管,道長枷踏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,273評論 1 279
  • 正文 為了忘掉前任掰曾,我火速辦了婚禮呕寝,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婴梧。我一直安慰自己下梢,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 64,289評論 5 373
  • 文/花漫 我一把揭開白布塞蹭。 她就那樣靜靜地躺著孽江,像睡著了一般。 火紅的嫁衣襯著肌膚如雪番电。 梳的紋絲不亂的頭發(fā)上岗屏,一...
    開封第一講書人閱讀 49,046評論 1 285
  • 那天辆琅,我揣著相機與錄音,去河邊找鬼这刷。 笑死婉烟,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的暇屋。 我是一名探鬼主播似袁,決...
    沈念sama閱讀 38,351評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼咐刨!你這毒婦竟也來了昙衅?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,988評論 0 259
  • 序言:老撾萬榮一對情侶失蹤定鸟,失蹤者是張志新(化名)和其女友劉穎而涉,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體联予,經(jīng)...
    沈念sama閱讀 43,476評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡啼县,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,948評論 2 324
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沸久。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谭羔。...
    茶點故事閱讀 38,064評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖麦向,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情客叉,我是刑警寧澤诵竭,帶...
    沈念sama閱讀 33,712評論 4 323
  • 正文 年R本政府宣布,位于F島的核電站兼搏,受9級特大地震影響卵慰,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜佛呻,卻給世界環(huán)境...
    茶點故事閱讀 39,261評論 3 307
  • 文/蒙蒙 一裳朋、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧吓著,春花似錦鲤嫡、人聲如沸碎连。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,264評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽躏嚎。三九已至纺裁,卻和暖如春诫肠,著一層夾襖步出監(jiān)牢的瞬間司澎,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,486評論 1 262
  • 我被黑心中介騙來泰國打工栋豫, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留挤安,地道東北人。 一個月前我還...
    沈念sama閱讀 45,511評論 2 354
  • 正文 我出身青樓丧鸯,卻偏偏與公主長得像蛤铜,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子骡送,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,802評論 2 345