Clone 一個示例項目:node
git clone -b v1 https://github.com/docker-training/node-bulletin-board cd node-bulletin-board/bulletin-board-app
包含源代碼和 dockerfile 文件:git
FROM node:6.11.5 WORKDIR /usr/src/app COPY package.json . RUN npm install COPY . . CMD [ "npm", "start" ]
編寫 Dockerfile 是容器化應用程序的第一步。您能夠將這些 Dockerfile 命令視爲有關如何構建映像的逐步指南。此步驟採起如下步驟:github
FROM
先前存在的node:6.11.5
圖像。這是由 node.js 供應商構建的官方映像,並已由 Docker 驗證爲包含節點6.11.5解釋器和基本依賴項的高質量映像。WORKDIR
指定的後續操做應該從目錄中取/usr/src/app
你的映像文件系統(從不主機的文件系統)。COPY``package.json
從您的主機到.
圖像中當前位置()的文件(所以在此狀況下爲/usr/src/app/package.json
)RUN``npm install
映像文件系統內的命令(將讀取該命令package.json
以肯定應用程序的節點依賴性,並安裝它們)COPY
在應用程序其他部分的源代碼中,從主機到圖像文件系統。在node-bulletin-board/bulletin-board-app
目錄下,執行此命令建立一個 image: docker image build -t bulletinboard:1.0 .
docker
根據新的 image 啓動容器:docker container run --publish 8000:8080 --detach --name bb bulletinboard:1.0
,咱們在這裏使用了幾個常見的標誌:npm
--publish
要求Docker將主機端口8000上傳入的流量轉發到容器的端口8080(容器具備本身的專用端口集,所以若是咱們要從網絡訪問一個端口,則必須以這種方式將流量轉發給它;不然,防火牆規則將阻止全部網絡流量到達您的容器,這是默認的安全狀態)。--detach
要求Docker在後臺運行此容器。--name
讓咱們指定一個名稱,在之後的命令中,咱們可使用該名稱來引用咱們的容器bb
。還要注意,咱們沒有指定咱們要運行容器的進程。咱們沒有必要,由於咱們CMD
在構建Dockerfile時使用了指令。所以,Docker知道npm start
在容器啓動時會自動運行該過程。json
訪問 localhost:8000
,看到公告板應用程序已啓動並正在運行安全
刪除容器: docker container rm --force bb
網絡
還能夠基於已有的 image 建立新的 image:在已有的 image 中操做以後,執行 docker commit -m="description" -a="author" containerID imageName
架構
能夠在 registry 中存儲和管理 imageapp
bb.yaml
,內容kubectl apply -f bb.yaml
kubectl get deployments
kubectl get services
localhost:30001
kubectl delete -f bb.yaml
bridge
:須要多個容器在同一Docker主機上進行通訊時host
:當網絡堆棧不該與Docker主機隔離時,但但願容器的其餘方面隔離時overlay
:須要在不一樣Docker主機上運行的容器進行通訊時,或者當多個應用程序使用集羣服務一塊兒工做時macvlan
:從VM設置遷移或須要容器看起來像網絡上的物理主機(每一個主機都有惟一的MAC地址)時none
:一般與自定義網絡驅動程序一塊兒使用,none
不適用於羣體服務網絡插件
:能夠將Docker與專用網絡堆棧集成docker network create --driver bridge net1
docker network inspect net1
docker network ls
docker network rm net1
docker network connect net1 container1
docker network disconnect net1 container1
docker network prune
bridge
網絡,也能夠自定義,參考docker cp container1:path <path>
docker cp <path> container1:path
Compose 是用於定義和運行多容器 Docker 應用程序的工具。經過 Compose,可使用YAML文件來配置應用程序的服務。而後,使用一個命令,就能夠從配置中建立並啓動全部服務。
基本分三個步驟:
Dockerfile
定義環境docker-compose.yml
定義 app 的服務docker-compose up
,使用 compose 啓動運行服務經常使用命令:
docker-compose up
docker-compose up -d(後臺運行)
docker-compose down(刪除)
docker-compose ps
docker-compose stop(中止)
docker-compose run cmd
執行服務的某一個命令