摘要:由于支持在鏡像的基礎上進行定制,使得擴展變得更簡單。而官方也維護了一大批高質量的鏡像,大大降低了鏡像的制作成本基本概念倉庫提供了倉庫用于存放制作好的鏡像,方便使用者獲取,在本地可通知配置多個。
Docker 是使用 GoLang 開發(fā)的開源容器引擎,可以方便的打包開發(fā)好的應用,然后分發(fā)到任意 linux 主機上。
與傳統(tǒng)的虛擬機相比擁有以下優(yōu)勢:
高效的系統(tǒng)資源利用率
由于不需要進行硬件虛擬和運行完整的操作系統(tǒng)等額外開銷,無論是應用執(zhí)行速度、內(nèi)存損耗或者文件存儲速度, Docker 都更加高效
更快的啟動速度
Docker 容器應用直接運行與宿主內(nèi)核,無需啟動完整的操作系統(tǒng),可以做到秒級啟動
一致的運行環(huán)境
Docker 鏡像提供了除內(nèi)核外的完整運行環(huán)境,確保了應用運行環(huán)境的一致性
持續(xù)交付和部署
可以通過 Docker 鏡像來實現(xiàn)服務的持續(xù)交付、部署。使用 Dockerfile 來構建鏡像,使用持續(xù)集成系統(tǒng)進行集成測試;使用鏡像結合持續(xù)部署系統(tǒng)進行自動部署
遷移輕松
只需要遷移鏡像及鏡像運行的數(shù)據(jù)就可在其他主機或平臺運行
易于維護和擴展
由于使用鏡像進行部署,使維護更為容易。由于支持在鏡像的基礎上進行定制,使得擴展變得更簡單。而官方也維護了一大批高質量的鏡像,大大降低了鏡像的制作成本
基本概念 倉庫Docker 提供了倉庫(Repository)用于存放制作好的鏡像,方便使用者獲取,在本地可通知配置多個 Repository 。
拉取
可以使用命令來拉取鏡像:
docker pull [repo url>/]image name>
默認的 repo url 是 hub.docker.com ,拉取默認倉庫中的鏡像時是不需要 url 的。
如拉取 debian : docker pull debian 。
推送
我們也可將自己制作好的鏡像推送到倉庫,以便分發(fā),使用命令:
docker push [
搜索
使用 docker search 命令則可搜索默認 repo url 內(nèi)的鏡像。
鏡像加速
由于默認 repo url 在國外,為了加快拉取速度,需要指定其為國內(nèi)的,向 /etc/docker/daemon.json 中添加:
{ "registry-mirrors": ["https://registry.docker-cn.com"] }
便可使用 Docker 在中國的鏡像加速站。
對于企業(yè)用戶還可搭建自己的私有鏡像倉庫,方便管理內(nèi)部鏡像。
鏡像鏡像是經(jīng)過 Dockerfile 規(guī)則打包生成的, Dockerfile 文件了指明了鏡像的生成及運行方式。
Dockerfile這里簡單介紹下 Dockerfile 中常用的命令:
FROM
指明基于那個鏡像,通常是一個系統(tǒng)環(huán)境,如 debian 。在多階段(stage)構建中可使用 FROM ... AS ... 來命令階段,供后面的階段使用
ENV
設置鏡像的環(huán)境變量
EXPOSE
導出端口,語法: EXPOSE port/protocol
RUN
執(zhí)行一條命令
COPY
復制鏡像內(nèi)部的文件,也可從指定 stage 中復制文件,使用 --from=
ADD
復制本地文件到鏡像中,并做了一些額外工作,如自動解壓文件、保持文件屬性等
WORKDIR
切換工作目錄
CMD
執(zhí)行命令,極容易在 docker run 時被覆蓋。主要用于指定鏡像的默認啟動命令,有以下三種語法:
CMD ["executable", "param1", "param2"] Exec 模式,首先
CMD ["param1", "param2"] 設置 ENTRYPOINT 的默認參數(shù)
CMD command param1 param2 Shell 模式
ENTRYPOINT
指定鏡像默認的運行命令,可以使用 --entrypoint 參數(shù)在 docker run 時覆蓋 Dockerfile 內(nèi)的 ENTRYPOINT
有 Exec 和 Shell 兩種模式
通常使用這個命令來指定鏡像的啟動命令,因為 CMD 稍不注意就被覆蓋了
更多關于 Dockerfile 內(nèi)容請參見: Dockerfile reference
這里給出一個簡單的 Dockerfile=, 是 =debian sid 的:
FROM scratch ADD rootfs.tar.xz / CMD ["bash"]創(chuàng)建
使用 docker build -f
Tag 可用來標記不同的鏡像版本,就像版本號。
列出使用 docker image ls 可以列出下載下來的鏡像
運行使用 docker run 命令運行鏡像,可使用參數(shù)配置,下面給出一個例子:
docker run -it -d -p
-i 是交互式操作
-t 是終端
-p 指定端口映射
-v 指定 volume 映射
-d 后臺模式
刪除使用 docker image rm
導出: docker save
導入: docker load <
容器是鏡像運行后的實體,運行與屬于自己的獨立的命名空間。
創(chuàng)建使用 docker run 命令啟動鏡像就可以創(chuàng)建一個容器
列出使用 docker ps 可列出正在運行的容器,加上 -a 參數(shù)可列出所以存在的容器
控制啟動
使用 docker container start
終止
使用 docker container stop
暫停
dcoker container pause
重啟
dcoker container restart
日志
dcoker container logs
docker container rm
使用 docker exec -it
導入: docker import
導出: docker export
直接運行鏡像不便于部署服務,因而官方推出了 Docker Compose 來負責應用部署。
使用 docker-compose.yml 文件將應用需要的鏡像都定義在一起,然后使用 docker-compose 命令來部署。
docker-compose.yml 的語法詳見: Compose file version 3 reference,這里給出一份部署 wordpress 的文件:
version: "3.7" services: wordpress: image: wordpress ports: - "8080:80" networks: - backend mysql: image: mysql volumes: - db-data:/var/lib/mysql/data networks: - backend volumes: db-data: networks: backend:常用命令
up
啟動服務,加上 -d 表示在后端運行
down
終止服務
build
構建服務中的容器
config
驗證文件格式是否有誤
exec
進入指定的容器,如進入上面 wordpress 中的 mysql 則是: docker-compose exec mysql
logs
顯示日志,可指定容器
restart
重啟服務
更多命令請見: Overview of docker-compose CLI
文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/27792.html
摘要:容器鏡像運行后,此時就實例化了一個容器。側重的是應用級別,而虛擬機是徹底隔離整個運行環(huán)境。方便交付將應用以及運行環(huán)境打包成一個鏡像,交付更簡單高效。下載地址點擊運行即可一如既往的下一步下一步完成安裝。 Docker是什么 Docker是一款由DotCloud公司(現(xiàn)改名為Docker)基于Go語言開發(fā)的開源的應用容器引擎,讓開發(fā)者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發(fā)...
摘要:概述是一個用來定義和運行復雜應用的工具。使用,用戶通過來進行構建。使用,不再需要使用腳本來啟動容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器。 概述 Docker Compose是一個用來定義和運行復雜應用的Docker工具。使用Compose,你可以在一個文件中定義一個多容器應用,然后使用一條命令來啟動你的應用,完成...
摘要:概述是一個用來定義和運行復雜應用的工具。使用,用戶通過來進行構建。使用,不再需要使用腳本來啟動容器。在配置文件中,所有的容器通過來定義,然后通過腳本來啟動,停止和重啟應用,和應用中的服務以及所有依賴服務的容器。 概述 Docker Compose是一個用來定義和運行復雜應用的Docker工具。使用Compose,你可以在一個文件中定義一個多容器應用,然后使用一條命令來啟動你的應用,完成...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術,因為輕量級和便攜化而受到廣泛關注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請求創(chuàng)建一個鏡像并且指定容器內(nèi)要運行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:本系列教程翻譯自,系列共有九篇,本文譯自第一篇。,一種新的容器化技術,因為輕量級和便攜化而受到廣泛關注。本篇文章是系列教程的第一篇。鏡像只讀的容器模板,簡言之就是系統(tǒng)鏡像文件。首先,向發(fā)出請求創(chuàng)建一個鏡像并且指定容器內(nèi)要運行的命令。 本系列教程翻譯自 Flux7 Docker Tutorial Series,系列共有九篇,本文譯自第一篇 Part 1: An Introduction。...
摘要:前置條件這不是一個入門課程。此課程為至少有六個月網(wǎng)站開發(fā)經(jīng)驗的高級入門者設置。主題資源目標這部分結束,具備以下能力。。。第一部分完整代碼依賴第一部分依賴耗時一章需要幾個小時到一整天。空余大塊時間來完成一章,特別是,,這些較難的部分。 在第一部分, 你學到如何使用 Docker 來創(chuàng)建一個基于python, postgres, 和 flask web 框架的 RESTful API 可重...
閱讀 933·2021-09-07 09:58
閱讀 1484·2021-09-07 09:58
閱讀 2869·2021-09-04 16:40
閱讀 2501·2019-08-30 15:55
閱讀 2404·2019-08-30 15:54
閱讀 1364·2019-08-30 15:52
閱讀 423·2019-08-30 10:49
閱讀 2598·2019-08-29 13:21