Docker基礎(chǔ)——容器化一個(gè)應(yīng)用

????將一個(gè)普通的應(yīng)用容器化是一件非常簡單的事情,我們只需要在項(xiàng)目的根目錄下編寫一個(gè)Dockerfile文件,在文件中注明項(xiàng)目運(yùn)行依賴的環(huán)境信息,項(xiàng)目中哪些是必要部分,不在項(xiàng)目目錄中的依賴目錄在哪里。
????我們以node項(xiàng)目的Dockerfile為例子:
FROM:指定了鏡像的運(yùn)行環(huán)境。
WORKDIR:指定了工作路徑。
COPY:指定了需要將工作路徑下的哪些文件復(fù)制到鏡像中。
RUN:文件拷貝工作完成后執(zhí)行的命令
CMD:RUN指令執(zhí)行完成后執(zhí)行的命令
EXPOSE:對(duì)外暴露3000端口
這是一個(gè)比較簡單的Dockerfile示例,有了它我們就可以使用“docker build”制作docker image。
????鏡像的制作是分層的,比如此例中的環(huán)境依賴node:18-alpine,這是我們指定的工作目錄中不存在的,所以需要下載node的鏡像作為我們制作的鏡像的其中一層。
????我們可以再執(zhí)行 docker build 命令時(shí)增加 -t 標(biāo)記,為構(gòu)建出的鏡像增加標(biāo)記比如 -t getting-started
,這樣會(huì)讓使用者更好的了解到鏡像的含義。結(jié)尾的“.”意為讓docker在命令執(zhí)行的目錄搜索Dockerfile。
????當(dāng)我們構(gòu)建好了一個(gè)鏡像我們就可以使用它初始化一個(gè)容器:
????上述命令中 docker run 是使用鏡像運(yùn)行容器的命令,-dp 是 -d -p 的簡寫:-d(--detach的縮寫) 意為后臺(tái)運(yùn)行、-p (--publish的縮寫)意為映射端口,端口映射的書寫格式是 "主機(jī)IP : 端口號(hào)" : "容器端口號(hào)"。在此例中是將ip地址為127.0.0.1的3000端口映射到容器的3000端口上,也就是說我們?cè)L問127.0.0.1:3000實(shí)際上是訪問該容器的3000端口,如果沒有端口映射將無法訪問到容器應(yīng)用。
????當(dāng)我們運(yùn)行一個(gè)容器以后可以使用一下命令查看所有容器:
會(huì)得到這樣的結(jié)果:
? ? 如果只想查看正在運(yùn)行中的容器,只需要把"-a"標(biāo)記去掉即可