今天要來介紹的是 Docker 三元素中的 Image & Container ,因為這兩個東西關係非常密切,因此將他們放在一起講。
首先,前一篇有講到需要有設計圖(Image)才能建立出虛擬機(Container),但我們剛剛裝好 Docker 而已,並沒有任何的設計圖(Image),那要怎麼辦呢?
別擔心, Docker 官方有出一個簡單的設計圖(Image),專門供新手使用,但是我們使用另一個映像檔來當作範例,也有放在 DockerHub 上面,我們只需要將它拉到我們本機即可,但是不是去 DockerHub 找到然後按 Download ,這樣真的太簡單了,我們需要使用另一種方式。
$ docker pull docker/getting-started
接著我們來照著設計圖(Image)生出一個虛擬機(Container)吧!
$ docker run -d -p 80:80 docker/getting-started
最後就可以看到 Docker 官方的教學畫面了。
來說一下剛剛做了什麼事吧(雖然也就兩句)。
docker pull docker/getting-started
docker/getting-started
的設計圖(Image)。docker run -d -p 80:80 docker/getting-started
docker/getting-started
的設計圖(Image)生出一個在背景執行(-d
)的虛擬機(Container),並將虛擬機的80 port 接入本機的 80 port (-p 80:80
)。到這裡應該都能夠了解吧。那麼就再來抓個映像檔來測試一下吧。這邊拿個 alpine 來測試。
$ docker pull alpine:3.16.2
這東西只有 5.54 MB 而已,拿來當作範例剛剛好。
# docker create [-i] [-t] [--rm] [--name <name>] <image_name>[:<tag>]
$ docker create -it --name test alpine:3.16.2
# docker start [-a] [-i] <container_name or container_id>
$ docker start -ai test
# 輸入
$ echo hello world!
# 輸出
> hello world!
# 鍵盤輸入 Ctrl + P 及 Ctrl + Q (退出容器。一定要這個順序)
# 停止容器
$ docker stop test
這樣就是基本的 docker 使用方式了。很簡單對吧!來解說一下剛剛幹了什麼好了。
docker pull alpine:3.16.2
docker create -it --name test alpine:3.16.2
alpine:3.16.2
建立一個叫做 test 的 Container (--name test
),並且事先聲明會將 Container 的輸入輸出(-it
)接出來;大概意思就是生出一台主機插好電源線並預留插鍵盤、滑鼠與螢幕的孔但不按開機鍵。docker start -ai test
echo hello world!
hello world!
docker stop test
到目前為止都還算簡單吧?(對吧?應該吧?)
不知道您有沒有發現,前後兩次的 Container 啟動的指令似乎不太一樣,前面的是用 run
;後面的是用 create
& start
,這兩個指令又差在哪裡呢?
其實也沒啥差別, run
= create
+ start
,只不過就是一個可以偷懶少打一行指令而已。
到這裡,已經會了最基本的容器 (Container) 與映像檔 (Image) 的操作了。
那麼就先到這邊,應該各位都會 Image 及 Container 基本的操作了。
大家掰~掰\