91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Docker中怎么使用nodejs

發布時間:2021-07-21 09:25:00 來源:億速云 閱讀:247 作者:Leah 欄目:web開發

Docker中怎么使用nodejs,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

Docker介紹

Docker 是一個開源項目,誕生于 2013 年初,最初是 dotCloud 公司內部的一個業余項目。它基于 Google 公司推出的 Go 語言實現。  項目后來加入了 Linux 基金會,遵從了 Apache 2.0 協議,項目代碼在 GitHub上進行維護。

Docker 項目的目標是實現輕量級的操作系統虛擬化解決方案。 Docker 的基礎是 Linux 容器(LXC)等技術。

在 LXC 的基礎上 Docker 進行了進一步的封裝,讓用戶不需要去關心容器的管理,使得操作更為簡便。用戶操作 Docker  的容器就像操作一個快速輕量級的虛擬機一樣簡單。

下面的圖片比較了 Docker  和傳統虛擬化方式的不同之處,可見容器是在操作系統層面上實現虛擬化,直接復用本地主機的操作系統,而傳統方式則是在硬件層面實現。

Docker中怎么使用nodejs

Docker中怎么使用nodejs

Docker的優勢

作為一種新興的虛擬化方式,Docker 跟傳統的虛擬化方式相比具有眾多的優勢。

首先,Docker 容器的啟動可以在秒級實現,這相比傳統的虛擬機方式要快得多。 其次,Docker 對系統資源的利用率很高,一臺主機上可以同時運行數千個  Docker 容器。

容器除了運行其中應用外,基本不消耗額外的系統資源,使得應用的性能很高,同時系統的開銷盡量小。傳統虛擬機方式運行 10 個不同的應用就要起 10  個虛擬機,而Docker 只需要啟動 10 個隔離的應用即可。

我理解的Docker

目前,我在使用docker的過程中基本上是本地開發好項目之后,生成dist文件目錄,遷移到docker當中,相當于只在生產環境開發使用docker,原因主要有以下幾點:

在開發環境使用docker感覺還是不是很舒服,每次修改都要重新build,以及run,比較麻煩,本地開發更加舒服;

docker實際上可以看做是一個封閉的盒子,想做一些查看和操作還是有點麻煩的的,交互性不是很好,感覺比較適合生產環境。

Docker hub介紹

目前 Docker 官方維護了一個公共倉庫 Docker Hub,其中已經包括了超過 15,000 的鏡像,大部分需求,都可以通過在 Docker Hub  中直接下載鏡像來實現。

登陸

可以通過執行 docker login 命令來輸入用戶名、密碼和郵箱來完成注冊和登錄。 注冊成功后,本地用戶目錄的 .dockercfg  中將保存用戶的認證信息。

docker login --username=username --email=email@gmail.com

下載

根據是否是官方提供,可將鏡像資源分為兩類。 一種是類似 centos 這樣的基礎鏡像,被稱為基礎或根鏡像。這些基礎鏡像是由 Docker  公司創建、驗證、支持、提供。這樣的鏡像往往使用單個單詞作為名字。 還有一種類型,比如 tianon/centos 鏡像,它是由 Docker  的用戶創建并維護的,往往帶有用戶名稱前綴。可以通過前綴 user_name/ 來指定使用某個用戶提供的鏡像,比如 tianon 用戶。

docker pull apline  // or  docker pull mhart/alpine-node-auto

提交

修改當前鏡像之后需要提交修改后的鏡像,修改一次鏡像包括提交的過程如下:

先使用下載的鏡像啟動容器。

docker run -t -i training/sinatra /bin/bash  root@0b2616b0e5a8:/#

注意:記住容器的 ID,稍后還會用到。在容器中添加 json package(一個 ruby gem)。

root@0b2616b0e5a8:/# gem install json

當結束后,我們使用 exit 來退出,現在我們的容器已經被我們改變了,使用 docker commit 命令來提交更新后的副本。

docker commit -m "Added json gem" -a "Docker Newbee" 0b2616b0e5a8 ouruser/sinatra:v2  4f177bd27a9ff0f6dc2a830403925b5360bfe0b93d476f7fc3231110e7f71b1c

其中,-m 來指定提交的說明信息,跟我們使用的版本控制工具一樣;-a 可以指定更新的用戶信息;之后是用來創建鏡像的容器的 ID;***指定目標鏡像的倉庫名和  tag 信息。創建成功后會返回這個鏡像的 ID 信息。

使用 docker images 來查看新創建的鏡像。

之后,可以使用新的鏡像來啟動容器

$ docker run -t -i ouruser/sinatra:v2 /bin/bash  root@78e82f680994:/#

上傳

用戶可以通過 docker push 命令,把自己創建的鏡像上傳到倉庫中來共享。例如,用戶在 Docker Hub  上完成注冊后,可以推送自己的鏡像到倉庫中。

$ docker push ouruser/sinatra  The push refers to a repository [ouruser/sinatra] (len: 1)  Sending image list  Pushing repository ouruser/sinatra (3 tags)

修改鏡像的標簽

用 docker tag 命令來修改鏡像的標簽。

$ sudo docker tag 5db5f8471261 ouruser/sinatra:devel  $ sudo docker images ouruser/sinatra  REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE  ouruser/sinatra latest 5db5f8471261 11 hours ago 446.7 MB  ouruser/sinatra devel 5db5f8471261 11 hours ago 446.7 MB  ouruser/sinatra v2 5db5f8471261 11 hours ago 446.7 MB

利用 Dockerfile 來創建鏡像

使用 docker commit 來擴展一個鏡像比較簡單,但是不方便在一個團隊中分享。我們可以使用 docker build  來創建一個新的鏡像。為此,首先需要創建一個 Dockerfile,包含一些如何創建鏡像的指令。

Dockerfile 中每一條指令都創建鏡像的一層,例如:

# Dockerfile.alpine  FROM mhart/alpine-node:latest  MAINTAINER zhanfang "fzhanxd@gmail.com"  # If you have native dependencies, you'll need extra tools  # RUN apk add --no-cache make gcc g++ python  # Create app directory  RUN mkdir -p /usr/src/app  WORKDIR /usr/src/app  # If your project depends on many package, you can use cnpm instead of npm  # RUN npm install cnpm -g --registry=https://registry.npm.taobao.org  # Install app dependencies  COPY package.json /usr/src/app/  RUN npm install --registry=https://registry.npm.taobao.org  # Bundle app source  COPY . /usr/src/app  # Expose port  EXPOSE 3000  CMD [ "npm", "start" ]

編寫完成 Dockerfile 后可以使用 docker build 來生成鏡像。

docker build -t alpine-koa2-startkit .

其中 -t 標記來添加 tag,指定新的鏡像的用戶信息。 “.” 是 Dockerfile 所在的路徑(當前目錄),也可以替換為一個具體的  Dockerfile 的路徑。

Dockfile 中的指令被一條一條的執行。每一步都創建了一個新的容器,在容器中執行指令并提交修改(就跟之前介紹過的 docker commit  一樣)。當所有的指令都執行完畢之后,返回了最終的鏡像 id。所有的中間步驟所產生的容器都被刪除和清理了。

注意一個鏡像不能超過 127 層

完成一次鏡像的下載、修改和上傳

以alpine-node-auto鏡像為基礎

1. 下載基礎鏡像

docker pull mhart/alpine-node-auto

2. 編寫dockerfile

# Dockerfile.alpine  FROM mhart/alpine-node:latest  MAINTAINER zhanfang "fzhanxd@gmail.com"  # If you have native dependencies, you'll need extra tools  # RUN apk add --no-cache make gcc g++ python  # Create app directory  RUN mkdir -p /usr/src/app  WORKDIR /usr/src/app  # If your project depends on many package, you can use cnpm instead of npm  # RUN npm install cnpm -g --registry=https://registry.npm.taobao.org  # Install app dependencies  COPY package.json /usr/src/app/  RUN npm install --registry=https://registry.npm.taobao.org  # Bundle app source  COPY . /usr/src/app  # Expose port  EXPOSE 3000  CMD [ "npm", "start" ]

3. 創建新的鏡像

docker build -t=zhanfang/alpine-koa2-startkit:v1" .

打上 alpine-koa2-startkit:v1 的 tag

4. 運行一個容器實例

docker run -t -i --name alpine-koa2-application zhanfang/alpine-koa2-startkit:v2

5. 上傳鏡像(如果沒有登錄請登陸,使用login命令)

docker push zhanfang/alpine-koa2-startkit

關于Docker中怎么使用nodejs問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

通城县| 昭通市| 托里县| 民县| 南乐县| 淮滨县| 如皋市| 山阴县| 宽甸| 扶绥县| 扎鲁特旗| 克拉玛依市| 平舆县| 拉萨市| 万盛区| 临西县| 瑞昌市| 北川| 巴彦淖尔市| 拉萨市| 时尚| 广丰县| 南川市| 利川市| 仪征市| 海伦市| 揭东县| 封丘县| 安仁县| 岳西县| 容城县| 祥云县| 奉节县| 永春县| 新昌县| 安多县| 梁山县| 藁城市| 云浮市| 大洼县| 富平县|