摘要:它是目前最流行的容器解決方案。用途的主要用途,目前有三大類。提供一次性的環(huán)境。注意,安裝后所有的依賴,都將打包進入文件。表示容器啟動后自動執(zhí)行。容器啟動以后,內(nèi)部第一個執(zhí)行的命令。發(fā)布文件去或注冊一個賬戶。
簡介
Docker 屬于 Linux 容器的一種封裝,提供簡單易用的容器使用接口。它是目前最流行的 Linux 容器解決方案。
Docker 將應(yīng)用程序與該程序的依賴,打包在一個文件里面。運行這個文件,就會生成一個虛擬容器。程序在這個虛擬容器里運行,就好像在真實的物理機上運行一樣。有了 Docker,就不用擔(dān)心環(huán)境問題。
總體來說,Docker 的接口相當(dāng)簡單,用戶可以方便地創(chuàng)建和使用容器,把自己的應(yīng)用放入容器。容器還可以進行版本管理、復(fù)制、分享、修改,就像管理普通的代碼一樣。
Docker 的主要用途,目前有三大類。
(1)提供一次性的環(huán)境。比如,本地測試他人的軟件、持續(xù)集成的時候提供單元測試和構(gòu)建的環(huán)境。
(2)提供彈性的云服務(wù)。因為 Docker 容器可以隨開隨關(guān),很適合動態(tài)擴容和縮容。
(3)組建微服務(wù)架構(gòu)。通過多個容器,一臺機器可以跑多個服務(wù),因此在本機就可以模擬出微服務(wù)架構(gòu)。
Image:和 windows 的那種 iso 鏡像相比,Docker 中的鏡像是分層的,可復(fù)用的,而非簡單的一堆文件迭在一起(類似于一個壓縮包的源碼和一個 git 倉庫的區(qū)別)。
Container: 容器的存在離不開鏡像的支持,他是鏡像運行時的一個載體(類似于實例和類的關(guān)系)。依托 Docker 的虛擬化技術(shù),給容器創(chuàng)建了獨立的端口、進程、文件等“空間”,Container 就是一個與宿機隔離 “容器”。容器可宿主機之間可以進行 port、volumes、network 等的通信。
Repository: Docker 的倉庫和 git 的倉庫比較相似,擁有倉庫名、tag。在本地構(gòu)建完鏡像之后,即可通過倉庫進行鏡像的分發(fā)。常用的 Docker hub 有 https://hub.docker.com/ 、 https://cr.console.aliyun.com/ 等。
1.查看docker版本
docker version
2.啟動本機的docker服務(wù)
service docker start
3.列出本機的所有 image 文件
docker images
或者
docker image ls
4.刪除 image 文件
docker rmi [imageName]
5.將 image 文件從遠程倉庫抓取到本地
docker pull hello-world
6.列出本機正在運行的容器
docker ps
或者
docker container ls
7.列出本機所有容器,包括終止運行的容器
docker container ls --all
8.運行這個image文件
docker run hello-world
9.終止運行某個docker容器
docker kill [containID]
10.終止運行的容器文件,依然會占據(jù)硬盤空間,可以使用docker rm命令刪除
docker rm [containerID]
11.運行這個image文件,并把容器的3000端口映射到本機8000端口,同時映射shell在本地可以輸入命令行
docker run -p 8000:3000 -it koa-demo /bin/bash
-p參數(shù):容器的 3000 端口映射到本機的 8000 端口。
-it參數(shù):容器的 Shell 映射到當(dāng)前的 Shell,然后你在本機窗口輸入的命令,就會傳入容器。
koa-demo:0.0.1:image 文件的名字(如果有標(biāo)簽,還需要提供標(biāo)簽,默認是 > latest 標(biāo)簽)。
/bin/bash:容器啟動以后,內(nèi)部第一個執(zhí)行的命令。這里是啟動 Bash,保證用戶可以使用 Shell。
12.創(chuàng)建image文件
docker build -t koa-demo .
-t參數(shù)用來指定 image 文件的名字,后面還可以用冒號指定標(biāo)簽。如果不指定,默認的標(biāo)簽就是latest。最后的那個點表示 Dockerfile 文件所在的路徑,上例是當(dāng)前路徑,所以是一個點。
13.登陸遠程倉庫
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.新建容器,每運行一次,就會新建一個容器
docker start [containerID]
同樣的命令運行兩次,就會生成兩個一模一樣的容器文件。如果希望重復(fù)使用容器,就要使用docker start命令,它用來啟動已經(jīng)生成、已經(jīng)停止運行的容器文件。
17.查看 docker 容器的輸出,即容器里面 Shell 的標(biāo)準(zhǔn)輸出
docker logs [containerID]
如果docker run命令運行容器的時候,沒有使用-it參數(shù),就要用這個命令查看輸出。
18.用于進入一個正在運行的 docker 容器
docker exec -it [containerID] /bin/bash
或者
docker exec -it [containerID] /bin/bash
如果docker run命令運行容器的時候,沒有使用-it參數(shù),就要用這個命令進入容器。一旦進入了容器,就可以在容器的 Shell 執(zhí)行命令了。
19.從正在運行的 Docker 容器里面,將文件拷貝到本機
docker cp [containID]:[/path/to/file] .
.git node_modules npm-debug.log
上面代碼表示,這三個路徑要排除,不要打包進入 image 文件。如果你沒有路徑要排除,這個文件可以不新建。
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,冒號表示標(biāo)簽,這里標(biāo)簽是8.4,即8.4版本的 node。
COPY . /app:將當(dāng)前目錄下的所有文件(除了.dockerignore排除的路徑),都拷貝進入 image 文件的/app目錄。
WORKDIR /app:指定接下來的工作路徑為/app。
RUN npm install:在/app目錄下,運行npm install命令安裝依賴。注意,安裝后所有的依賴,都將打包進入 image 文件。
EXPOSE 3000:將容器 3000 端口暴露出來, 允許外部連接這個端口。
CMD node demos/index.js:表示容器啟動后自動執(zhí)行node demos/index.js。PS : RUN命令與CMD命令的區(qū)別:簡單說,RUN命令在 image 文件的構(gòu)建階段執(zhí)行,執(zhí)行結(jié)果都會打包進入 image 文件;
CMD命令則是在容器啟動后執(zhí)行。另外,一個 Dockerfile 可以包含多個RUN命令,但是只能有一個CMD命令。注意,指定了CMD命令以后,docker container run命令就不能附加命令了(比如前面的/bin/bash),否則它會覆蓋CMD命令。
docker build -t koa-demo:0.0.1 .
-t參數(shù)用來指定 image 文件的名字,后面還可以用冒號指定標(biāo)簽。如果不指定,默認的標(biāo)簽就是latest。
最后的那個點表示 Dockerfile 文件所在的路徑,上例是當(dāng)前路徑,所以是一個點。
創(chuàng)建成功后,運行 docker image ls 可以看到新生成的image文件koa-demo了
docker run -p 8000:3000 -it koa-demo:0.0.1 /bin/bash
-p參數(shù):容器的 3000 端口映射到本機的 8000 端口。
-it參數(shù):容器的 Shell 映射到當(dāng)前的 Shell,然后你在本機窗口輸入的命令,就會傳入容器。
koa-demo:0.0.1:image 文件的名字(如果有標(biāo)簽,還需要提供標(biāo)簽,默認是 latest 標(biāo)簽)。
/bin/bash:容器啟動以后,內(nèi)部第一個執(zhí)行的命令。這里是啟動 Bash,保證用戶可以使用 Shell。
如果一切正常,運行上面的命令以后,就會返回一個命令行提示符,你可以在上面啟動node服務(wù)。
root@66d80f4aaf1e:/app#
1.去 hub.docker.com 或 cloud.docker.com 注冊一個賬戶。然后,用下面的命令登錄。
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 開始了解 Docker
Docker 入門教程
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/27277.html
摘要:系統(tǒng)有兩個程序服務(wù)端和客戶端。其中服務(wù)端是一個服務(wù)進程,管理著所有的容器。客戶端則扮演著服務(wù)端的遠程控制器,可以用來控制的服務(wù)端進程。守護進程會處理復(fù)雜繁重的任務(wù),例如建立運行發(fā)布你的容器。客戶端和守護進程之間通過或者進行通信。 預(yù)期學(xué)習(xí)目標(biāo) Docker基本概念 配置本地Docker環(huán)境 容器的生命周期與配置 端口映射和容器鏈接 利用volume保存持久化容器數(shù)據(jù) 檢查容器日志 監(jiān)...
摘要:時間年月日星期六說明本文部分內(nèi)容均來自慕課網(wǎng)。必填用于執(zhí)行命令,當(dāng)執(zhí)行完畢后,將產(chǎn)生一個新的文件層。可選指定此鏡像啟動時默認執(zhí)行命令。可選用于指定需要暴露的網(wǎng)絡(luò)端口號。可選向鏡像中掛載一個卷組。 時間:2017年09月16日星期六說明:本文部分內(nèi)容均來自慕課網(wǎng)。@慕課網(wǎng):http://www.imooc.com 教學(xué)源碼:無 學(xué)習(xí)源碼:無 第一章:課程簡介 1-1 課程介紹 Docke...
摘要:學(xué)習(xí)筆記安裝用的所以直接然后執(zhí)行用于啟動否則會出錯后面的步驟執(zhí)行不了安裝官方包表示同步的表示同步的輸出表示表示執(zhí)行后刪除表示的名稱將目錄掛載到防止沒有權(quán)限訪問掛載的目錄指定端口映射與其他鏈接去除之間不互通 Docker 學(xué)習(xí)筆記. docker 安裝 用的 centos7 所以直接 yum install docker 然后執(zhí)行 systemctl start docker.se...
摘要:下的使用筆記安裝確認是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運行鏡像,運行起來的鏡像就叫做容器了,仔細看,你會發(fā)現(xiàn)終端交互的用戶名變掉了,說明我們進入到了容器的內(nèi)部。個人理解是因為產(chǎn)生數(shù)據(jù)需要映射。創(chuàng)建成功后會返回這個鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...
摘要:下的使用筆記安裝確認是否安裝成功搜索鏡像獲取鏡像查看本地所有鏡像運行鏡像,運行起來的鏡像就叫做容器了,仔細看,你會發(fā)現(xiàn)終端交互的用戶名變掉了,說明我們進入到了容器的內(nèi)部。個人理解是因為產(chǎn)生數(shù)據(jù)需要映射。創(chuàng)建成功后會返回這個鏡像的信息。 ubuntu 14.10下docker的使用筆記1 docker 安裝 curl -sSL https://get.docker.com/ | sh ...
摘要:學(xué)習(xí)過程中主要參考的從入門到實踐,以及因為是第一次寫技術(shù)筆記會模仿另一位網(wǎng)友的從零開始學(xué)習(xí)的寫法。 showImg(https://segmentfault.com/img/bVbokYX); 本文是我學(xué)習(xí)Docker的筆記,因為最近工作的原因,要用到docker工具,一開始抱著有需要什么就用什么的心態(tài)使用docker,但因為項目是強依賴docker,越來越多的問題因為docker成為...
閱讀 1190·2023-04-26 02:42
閱讀 1636·2021-11-12 10:36
閱讀 1790·2021-10-25 09:47
閱讀 1267·2021-08-18 10:22
閱讀 1806·2019-08-30 15:52
閱讀 1216·2019-08-30 10:54
閱讀 2637·2019-08-29 18:46
閱讀 3501·2019-08-26 18:27