前端開發Docker快速入門(二)製作鏡像並創建容器

前面一篇《前端開發Docker快速入門(一)》中簡單介紹Docker的相關知識和常用命令,本篇側中前端如何利用Docker部署代碼

 

示例一:使用Docker來部署Vue前端項目

一、製作image 文件

Docker 把應用程序及其依賴,打包在 image 文件裏面。只有通過這個文件,才能生成 Docker 容器。
image 文件可以看作是容器的模板,Docker 根據 image 文件生成容器的實例。同一個 image 文件,可以生成多個同時運行的容器實例。

image 是二進制文件。實際開發中,一個 image 文件往往通過繼承另一個 image 文件,加上一些個性化設置而生成。
舉例來說,你可以在 Ubuntu 的 image 基礎上,往裏面加入 Apache 服務器,形成你的 image。

 

通過下面的./Dockerfile來說明

# 繼承node:12-alpine這個鏡象來實現,鏡像已經包含nodejs和alpine
FROM node:12-alpine

# 在alpine中安裝nginx
RUN apk add nginx
# 將本地nginx.conf的配置覆蓋鏡象中默認的配置,主要是指定我們前端項目的部署路徑
COPY ./docker/nginx.conf /etc/nginx

# 將VUE項目編譯打包後的代碼 複製 到鏡象中,也就是nginx服務器80端口的root指向目錄
COPY ./dist /kuaizhan/editor

# 暴露80端口
EXPOSE 80

# 運行nginx服務
CMD ["nginx", "-g", "daemon off;"]

 

創建好 Dockerfile 文件以後,使用docker image build命令構建 image鏡像。

# 構建 image 鏡像(執行行要在Dockerfile文件同級目錄,因爲是基於此文件來構建的)

docker image build -t kz-demo:0.0.1 .
docker build -t 鏡像名稱:鏡像標籤 .

上面代碼中,-t參數用來指定 image 文件的名字,後面還可以用冒號指定標籤。

如果不指定,默認的標籤就是latest。最後的那個點表示 Dockerfile 文件所在的路徑,上例是當前路徑,所以是一個點。

如果運行成功,就可以看到新生成的 kz-demo鏡像了。

# 列出本機的所有 image 文件。
$ docker image ls

# 刪除 image 文件
$ docker image rm [imageName]

爲了方便共享,image 文件製作完成後,可以上傳到網上的倉庫。Docker 的官方倉庫 Docker Hub 是最重要、最常用的 image 倉庫。

# 發佈鏡像image文件

爲本地的 image 標註用戶名和版本。
$ docker image tag [imageName] [username]/[repository]:[tag]
# 實例
$ docker image tag kz-demos:0.0.1 docker-ref-release-local/kz-demos:0.0.1

標註好後就可以發佈

docker image push [username]/[repository]:[tag]
# 實例
$ docker image push 192.168.1.128:5000/nodejs10:1.0.0  # 推送鏡像到本地倉庫 

 

二、使用image鏡像

1、如果是本地創建或者已經有的鏡像

可以直接基於這個鏡像創建運行容器
$ docker run -itd -p 9090:80 -v ~/dist/static:/kuaizhan/editor/static --name kz-demo kz-demo:0.0.1

-itd 交互式後臺運行容器

--name 指定容器名稱

-v 本地目錄指向容器中的目錄

-p 本地9090端口指向容器的80

 

2、如果是基於遠程倉庫鏡像生成容器,按如下操作
首先,運行下面的命令,將 image 文件從倉庫抓取到本地。

$ docker image pull library/kz-demo:0.0.1

docker image pull是抓取 image 文件的命令。library/kz-demo是 image 文件在倉庫裏面的位置,其中library是 image 文件所在的組,kz-demo是 image 文件的名字,0.0.1是鏡像的版本。

由於 Docker 官方提供的 image 文件,都放在library組裏面,所以它的是默認組,可以省略。因此,上面的命令可以寫成下面這樣。

$ docker image pull hello-world
抓取成功以後,就可以在本機看到這個 image 文件了。

$ docker image ls
現在,運行這個 image 文件。

$ docker container run -p 3000:80 -it kz-demo:0.0.1 /bin/bash
docker container run命令會從 image 文件,生成一個正在運行的容器實例。
注意,docker container run命令具有自動抓取 image 文件的功能。如果發現本地沒有指定的 image 文件,就會從倉庫自動抓取。因此,前面的docker image pull命令並不是必需的步驟。

上面命令的各個參數含義如下:

-p參數:容器的 80 端口映射到本機的 3000 端口。
-it參數:容器的 Shell 映射到當前的 Shell,然後你在本機窗口輸入的命令,就會傳入容器。,-i: 交互式操作,-t: 終端, -d: 指定容器的運行模式,後臺運行
koa-demo:0.0.1:image 文件的名字(如果有標籤,還需要提供標籤,默認是 latest 標籤)。
/bin/bash:容器啓動以後,內部第一個執行的命令。這裏是啓動 Bash,保證用戶可以使用 Shell。

 

3、容器相關操作命令

# 查看所有的容器
docker ps -a
# 啓動
docker start b750bbbcfd88 容器id
# 停止
docker stop <容器 ID>
# 刪除
docker rm containerID
# 進入容器
docker attach containerID
docker exec:推薦大家使用 docker exec 命令,因爲此退出容器終端,不會導致容器的停止
docker exec -it containerID /bin/bash
# 導出
docker export 1e560fca3906 > ubuntu.tar
cat docker/ubuntu.tar | docker import - test/ubuntu:v1

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章