iT邦幫忙

2022 iThome 鐵人賽

DAY 1
2

2023/8/22 更新

鐵人賽文章已集結成書,內容有擴充與更正,可以參考天瓏書局或博客來的網址。

《Docker 實戰 6堂課:56個實驗動手做,掌握 Linux 容器核心技術》

天瓏: https://www.tenlong.com.tw/products/9786263335769
博客來: https://www.books.com.tw/products/0010966356

William 推薦序 透過自己的雙手,掌握那不變的容器技術核心——《Docker 實戰 6 堂課》推薦序


翻翻自己的硬碟,發現自己在 2015 年就有到社群分享 docker 的新手入門教學,有點忘了當初是怎麼樣的因緣際會,讓自己開始有機會學習 docker,但忘不了的是當初的驚艷感(到現在其實還是)。

https://ithelp.ithome.com.tw/upload/images/20220916/20151857WNkpgDWvC6.png

自己一直都是從事網站開發的工作,以前是分工比較不明確,到後來都是在新創公司或是自己接案,經常要身兼多職,也就是從談需求、專案管理、開發,再一路做到系統部署、維運管理,大概就是那種什麼都會、但其實什麼都不太會的樣子。從一開始是寫 C#、用的是 SQL Server、管理的伺服器是 Windows Server,後來脫離了微軟的世界,開始用 mac,開始在 Linux 上安裝 apache/nginx、MySQL,執行 PHP 跟 nodejs 等,雖然說作為資訊相關科系的學生,在大學時期免不了要碰 Linux,但老實說,對 Linux 一直是覺得有點害怕的,大多時候就是網路上 google 到什麼安裝指令,然後複製貼上,這過程總是充滿了各種挫敗,一下子缺少什麼相依性的 lib,一下子版本不對,如果失敗了,運氣好找到其他指令再裝一次,運氣不好,大概就是整台機器要重裝。而所謂的文件就是貼了滿滿一大篇指令的文字檔案,會很怕機器會出問題,因為不知道下一次能不能再按照這份文件成功地重新安裝一次。說來也是我自己學藝不精,但也真的不太知道什麼叫做「學會 Linux」,一直到後來遇見了 docker。

一開始,發現可以用 docker 輕易地啟動各種我需要的軟體,例如 apache, nginx, MySQL 等,再也不需要安裝進主機裡,只需要一個 docker run 的指令,就可以把我需要的軟體給跑起來,再也不怕「弄髒」主機,玩壞了就關掉,再起一起新的 container 即可。然後可以很輕易地建立某個版本的 PHP 或 nodejs 的執行環境,有時候想玩玩 RabbitMQ、ElasticSearch 等,再也不需要那些繁複、不確定能不能成功的安裝步驟了。

更重要的是,docker 實在是很好學(當時的我真的很嫩 XD),記得當時在分享 docker 新手入門教學時,我還說「你只要會 git 你就可以會 docker」,像是 commit, push, pull 等指令,有在用 git 的應該都倍感輕切,另外像是 run, stop,查看有哪些 container 用的是 ps,這些指令不僅是不艱澀,根本是到了平易近人的程度了,幾乎沒有入門障礙。說到這裡,一定要提一下,我自己最最最喜歡的就是 Dockerfile 了,因為我再也不會忘記我安裝過什麼軟體、是什麼版本了,我的「文件」再也不會跟環境脫鉤了!

然後不知不覺,這麼多年過去了,我反倒是覺得,我會的東西愈來愈少了,並不是說我沒有在學習成長,而是隨著自己對這項技術的喜愛,開始想去懂得更多,在脫離了「只是單純使用者」的階段後,想要把這項技術用得更好,想要更知道他的底層技術,愈學愈多後發現,天啊水好深,我懂得不過只是皮毛而已。到現在,如果你問我,docker 要怎麼學,我還是會說,要學會 docker 怎麼使用,這很簡單,但除了基本使用之外,如果要用得好,那就不是學 docker 了,而是在學 Linux 了,一如當年的我,我還是覺得 Linux 深不可測,但可以藉由我喜歡的 docker 去開始更懂一點點 Linux,那種「知道更多了」的感覺,根本就是工程師的鴉片,讓人難以抵抗。

這段時間以來,也一直想要整理自己學過的這些東西分享出來,但一方面是蠻雜亂的,很多自己也不是真的很懂,再來是,每每總有一種「哎呀這個大家應該都知道了,只有我不知道」的感覺而怯於分享,加上工作又超級忙碌,寫文章這件事就永遠會被放到待辦清單的最後面。今年鼓起勇氣報名參加鐵人賽,雖然覺得自己中斷的可能性很高,但也算是給自己一次機會挑戰看看,要不停地說服自己,應該很多人跟我一樣吧,就是會基本的用法,邊試誤邊前進,如果能夠透過這樣的分享,跟大家交流一下,甚至是勘誤自己的觀念,那也是很棒的,所以還請大家多多指教了!

預計整理的內容包括 image, container, network 與 volume,一開始應該也會有一兩篇基礎教學,先同步一下大家的認知,由於沒有任何存稿,所以也沒有任何規劃,大概就是每天想到什麼寫什麼了,能撐幾天是幾天,且戰且走嚕。


完賽後的補充的前情提要: 本系列不是針對 Docker/container 的初學者,比較適合用過 Docker 後想要知道更多的朋友,甚至,與其說是在討論 Docker,不如說是在試著學習 Linux。針對初學的話,以前寫過兩篇入門,歡迎參考看看,沒有到很完整,等本系列整理完,應該會再回頭繼續寫入門系列:


下一篇
Day 02: 實驗環境準備
系列文
那些關於 docker 你知道與不知道的事32
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

1
亞歷斯
iT邦新手 5 級 ‧ 2023-07-12 12:41:04

「哎呀這個大家應該都知道了,只有我不知道」
這句真的說中我心了 /images/emoticon/emoticon02.gif,很多時候都覺得是不是只有我不知道

小賴 iT邦新手 4 級 ‧ 2023-07-12 16:14:42 檢舉

真的大家都會這樣想,所以就不要管了,分享出來吧,總有還不知道人因此得到幫助。

我要留言

立即登入留言