日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Docker学习笔记

發(fā)布時(shí)間:2023/12/6 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Docker学习笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

簡(jiǎn)介

Docker 屬于 Linux 容器的一種封裝,提供簡(jiǎn)單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。

Docker 將應(yīng)用程序與該程序的依賴,打包在一個(gè)文件里面。運(yùn)行這個(gè)文件,就會(huì)生成一個(gè)虛擬容器。程序在這個(gè)虛擬容器里運(yùn)行,就好像在真實(shí)的物理機(jī)上運(yùn)行一樣。有了 Docker,就不用擔(dān)心環(huán)境問(wèn)題。

總體來(lái)說(shuō),Docker 的接口相當(dāng)簡(jiǎn)單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進(jìn)行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。


用途

Docker 的主要用途,目前有三大類。

(1)提供一次性的環(huán)境。比如,本地測(cè)試他人的軟件、持續(xù)集成的時(shí)候提供單元測(cè)試和構(gòu)建的環(huán)境。

(2)提供彈性的云服務(wù)。因?yàn)?Docker 容器可以隨開(kāi)隨關(guān),很適合動(dòng)態(tài)擴(kuò)容和縮容。

(3)組建微服務(wù)架構(gòu)。通過(guò)多個(gè)容器,一臺(tái)機(jī)器可以跑多個(gè)服務(wù),因此在本機(jī)就可以模擬出微服務(wù)架構(gòu)。


三個(gè)核心

  • Image:和 windows 的那種 iso 鏡像相比,Docker 中的鏡像是分層的,可復(fù)用的,而非簡(jiǎn)單的一堆文件迭在一起(類似于一個(gè)壓縮包的源碼和一個(gè) git 倉(cāng)庫(kù)的區(qū)別)。
  • Container: 容器的存在離不開(kāi)鏡像的支持,他是鏡像運(yùn)行時(shí)的一個(gè)載體(類似于實(shí)例和類的關(guān)系)。依托 Docker 的虛擬化技術(shù),給容器創(chuàng)建了獨(dú)立的端口、進(jìn)程、文件等“空間”,Container 就是一個(gè)與宿機(jī)隔離 “容器”。容器可宿主機(jī)之間可以進(jìn)行 port、volumes、network 等的通信。
  • Repository: Docker 的倉(cāng)庫(kù)和 git 的倉(cāng)庫(kù)比較相似,擁有倉(cāng)庫(kù)名、tag。在本地構(gòu)建完鏡像之后,即可通過(guò)倉(cāng)庫(kù)進(jìn)行鏡像的分發(fā)。常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等。

常用命令

1.查看docker版本
docker version

2.啟動(dòng)本機(jī)的docker服務(wù)
service docker start

3.列出本機(jī)的所有 image 文件
docker images
或者
docker image ls

4.刪除 image 文件
docker rmi [imageName]

5.將 image 文件從遠(yuǎn)程倉(cāng)庫(kù)抓取到本地
docker pull hello-world

6.列出本機(jī)正在運(yùn)行的容器
docker ps
或者
docker container ls

7.列出本機(jī)所有容器,包括終止運(yùn)行的容器
docker container ls --all

8.運(yùn)行這個(gè)image文件
docker run hello-world

9.終止運(yùn)行某個(gè)docker容器
docker kill [containID]

10.終止運(yùn)行的容器文件,依然會(huì)占據(jù)硬盤(pán)空間,可以使用docker rm命令刪除
docker rm [containerID]

11.運(yùn)行這個(gè)image文件,并把容器的3000端口映射到本機(jī)8000端口,同時(shí)映射shell在本地可以輸入命令行
docker run -p 8000:3000 -it koa-demo /bin/bash

-p參數(shù):容器的 3000 端口映射到本機(jī)的 8000 端口。
-it參數(shù):容器的 Shell 映射到當(dāng)前的 Shell,然后你在本機(jī)窗口輸入的命令,就會(huì)傳入容器。
koa-demo:0.0.1:image 文件的名字(如果有標(biāo)簽,還需要提供標(biāo)簽,默認(rèn)是 > latest 標(biāo)簽)。
/bin/bash:容器啟動(dòng)以后,內(nèi)部第一個(gè)執(zhí)行的命令。這里是啟動(dòng) Bash,保證用戶可以使用 Shell。

12.創(chuàng)建image文件
docker build -t koa-demo .

-t參數(shù)用來(lái)指定 image 文件的名字,后面還可以用冒號(hào)指定標(biāo)簽。如果不指定,默認(rèn)的標(biāo)簽就是latest。最后的那個(gè)點(diǎn)表示 Dockerfile 文件所在的路徑,上例是當(dāng)前路徑,所以是一個(gè)點(diǎn)。

13.登陸遠(yuǎn)程倉(cāng)庫(kù)
docker login

14.為本地的 image 標(biāo)注用戶名和版本
docker tag [imageName] [username]/[repository]:[tag]
docker tag koa-demos:0.0.1 ruanyf/koa-demos:0.0.1

15.發(fā)布 image 文件
docker push [username]/[repository]:[tag]

16.新建容器,每運(yùn)行一次,就會(huì)新建一個(gè)容器
docker start [containerID]

同樣的命令運(yùn)行兩次,就會(huì)生成兩個(gè)一模一樣的容器文件。如果希望重復(fù)使用容器,就要使用docker start命令,它用來(lái)啟動(dòng)已經(jīng)生成、已經(jīng)停止運(yùn)行的容器文件。

17.查看 docker 容器的輸出,即容器里面 Shell 的標(biāo)準(zhǔn)輸出
docker logs [containerID]

如果docker run命令運(yùn)行容器的時(shí)候,沒(méi)有使用-it參數(shù),就要用這個(gè)命令查看輸出。

18.用于進(jìn)入一個(gè)正在運(yùn)行的 docker 容器
docker exec -it [containerID] /bin/bash
或者
docker exec -it [containerID] /bin/bash

如果docker run命令運(yùn)行容器的時(shí)候,沒(méi)有使用-it參數(shù),就要用這個(gè)命令進(jìn)入容器。一旦進(jìn)入了容器,就可以在容器的 Shell 執(zhí)行命令了。

19.從正在運(yùn)行的 Docker 容器里面,將文件拷貝到本機(jī)
docker cp [containID]:[/path/to/file] .


制作自己的 Docker 容器

編寫(xiě).dockerignore

.git node_modules npm-debug.log

上面代碼表示,這三個(gè)路徑要排除,不要打包進(jìn)入 image 文件。如果你沒(méi)有路徑要排除,這個(gè)文件可以不新建。


編寫(xiě) Dockerfile 文件

FROM node:8.4 COPY . /app WORKDIR /app RUN npm install --registry=https://registry.npm.taobao.org EXPOSE 3000 CMD node demos/index.js FROM node:8.4:該 image 文件繼承官方的 node image,冒號(hào)表示標(biāo)簽,這里標(biāo)簽是8.4,即8.4版本的 node。
COPY . /app:將當(dāng)前目錄下的所有文件(除了.dockerignore排除的路徑),都拷貝進(jìn)入 image 文件的/app目錄。
WORKDIR /app:指定接下來(lái)的工作路徑為/app。
RUN npm install:在/app目錄下,運(yùn)行npm install命令安裝依賴。注意,安裝后所有的依賴,都將打包進(jìn)入 image 文件。
EXPOSE 3000:將容器 3000 端口暴露出來(lái), 允許外部連接這個(gè)端口。
CMD node demos/index.js:表示容器啟動(dòng)后自動(dòng)執(zhí)行node demos/index.js。

PS : RUN命令與CMD命令的區(qū)別:簡(jiǎn)單說(shuō),RUN命令在 image 文件的構(gòu)建階段執(zhí)行,執(zhí)行結(jié)果都會(huì)打包進(jìn)入 image 文件;
CMD命令則是在容器啟動(dòng)后執(zhí)行。另外,一個(gè) Dockerfile 可以包含多個(gè)RUN命令,但是只能有一個(gè)CMD命令。

注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否則它會(huì)覆蓋CMD命令。


創(chuàng)建image文件

docker build -t koa-demo:0.0.1 . -t參數(shù)用來(lái)指定 image 文件的名字,后面還可以用冒號(hào)指定標(biāo)簽。如果不指定,默認(rèn)的標(biāo)簽就是latest。
最后的那個(gè)點(diǎn)表示 Dockerfile 文件所在的路徑,上例是當(dāng)前路徑,所以是一個(gè)點(diǎn)。

創(chuàng)建成功后,運(yùn)行 docker image ls 可以看到新生成的image文件koa-demo


生成容器

docker run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash -p參數(shù):容器的 3000 端口映射到本機(jī)的 8000 端口。
-it參數(shù):容器的 Shell 映射到當(dāng)前的 Shell,然后你在本機(jī)窗口輸入的命令,就會(huì)傳入容器。
koa-demo:0.0.1:image 文件的名字(如果有標(biāo)簽,還需要提供標(biāo)簽,默認(rèn)是 latest 標(biāo)簽)。
/bin/bash:容器啟動(dòng)以后,內(nèi)部第一個(gè)執(zhí)行的命令。這里是啟動(dòng) Bash,保證用戶可以使用 Shell

如果一切正常,運(yùn)行上面的命令以后,就會(huì)返回一個(gè)命令行提示符,你可以在上面啟動(dòng)node服務(wù)。

root@66d80f4aaf1e:/app#

發(fā)布 image 文件

1.去 hub.docker.com 或 cloud.docker.com 注冊(cè)一個(gè)賬戶。然后,用下面的命令登錄。

docker login

2.為本地的 image 標(biāo)注用戶名和版本

docker tag [imageName] [username]/[repository]:[tag]

3.發(fā)布 image 文件

docker push [username]/[repository]:[tag]

發(fā)布成功以后,登錄 hub.docker.com 或 cloud.docker.com ,就可以看到已經(jīng)發(fā)布的 image 文件。

參考鏈接

  • 從 0 開(kāi)始了解 Docker
  • Docker 入門(mén)教程

總結(jié)

以上是生活随笔為你收集整理的Docker学习笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。