Docker學習(一)

Docker

  1. 什么是Docker?
    Docker 是個開源的應用容器引擎, 基于 Go語言 并遵從Apache2.0協議開源.
    Docker 可以讓開發者打包他們的應用以及依賴包到一個輕量級、可移植的容器中, 然后發布到任何流行的Linux機器上, 也可以實現虛擬化.
    容器是完全使用沙箱機制, 相互之間不會有任何接口(類似iPone的 app), 更重要的是容器性能開銷極低.

  2. 誰適合閱讀本教程?
    適合運維工程師及后端開發人員.

  3. 閱讀本教程前, 您需要了解的知識
    你需要掌握Linux常用命令. 可通過linux教程來學習想著命令.

  4. Docker的應用場景
    . Web應用的自動化打包和發布
    . 自動化測試和持續集成、發布
    . 在服務環境中部署和調整數據庫或其他的后臺應用
    . 從頭編譯或者擴展現有的OpenShift或Cloud Foundry 平臺來搭建自己的PaaS環境.

  5. Docker的優點
    1). 簡化程序:
    Docker讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中, 然后發布到任何流行的Linux機器上, 便可以實現虛擬化. Docker改變了虛擬化的方式, 使開發者可以直接將自己的成果放入Docker中進行管理。方便快捷已經是Docker的最大優勢, 過去需要用數天乃至數周的任務, 在Docker容器的處理下, 只需要數秒就能完成。

2). 避免選擇恐懼癥
如果你有選擇恐懼癥, 還是資源患者. Docker幫你打包你糾結!
比如Docket鏡像: 其中包含了運行環境和配置, 所以Docker可以簡化部署多種應用實例工作. 比如 Web應用, 后臺應用,數據庫應用, 大數據應用(比如Hadoop集群), 消息隊列等待都可以打包成一個鏡像部署.

3). 節省開支:
一方面, 云計算時代到來,使開發者不必為了追求效果而配置高額的硬件, Docker改變了高性能必然高價格的思維定勢. Docker與云的結合, 讓云空間得到充分的利用. 不僅解決了硬件管理的問題,也改變了虛擬化的方式.

Docker 架構
Docker 使用客戶端-服務器(C/S)架構模式, 使用遠程API來管理和創建Docker容器.
Docker 容器 通過Docker鏡像來創建.
容器和鏡像的關系類似于面向對象中的對象與類.

Docker 面向對象
容器 對象
鏡像

Client( Docker客戶端 ) | Hosts( Docker 主機 ) | Registries( Docker倉庫 )

docker local host Docker hub
daemon repository 1
container 1 image 1 image 1
container 2 image 3 image 2
container 3 repository 2
remote host private registry
daemon repostory
Docker machine container 3 image 3 image 5
container 5 image 5 image 5
container 6 image 6 image 6

Docker鏡像( Images ) | Docker鏡像是用于創建Docker容器的模板
Docker容器( Container ) | 容器是獨立運行的一個或一組應用
Docker客戶端( Client ) | Docker客戶端通過命令行或其他工具使用Docker API與Docker的守護進程通信.
Docker主機(Hosts) | 一個物理或虛擬的機器用于執行Docker守護進程和容器
Docker倉庫(Registry) | Docker倉庫用來保存鏡像, 可以理解為代碼控制中的代碼倉庫. Docker Hub提供了龐大的鏡像集合供使用.
Docker Machine| Docker machine是一個簡化Docker安裝的命令行工具, 通過一個簡單的命令行即可在相應的平臺上安裝Docker, 比如Virtual Box, Diigital Ocean, Microsoft Azure.

Docker的安裝: CentOS Docker安裝
Docker支持以下的CentOS版本:
. CentOS 7( 64-bit )
. CentOS 6.5 ( 64-bit ) 或更高的版本

  1. 前提條件:
    目前, CentOS僅發行版本中的內核支持Docker.
    Docker運行在 CentOS 7上, 要求系統為64位, 系統內核版本為3.10以上.
    Docker運行在CentOS 6.5或更高的版本上, 要求系統為64位, 系統內核版本為 2.6.32-431或更高版本.

  2. 使用yum 安裝( CentOS 7)
    Docker要求CentOS系統的內核版本高于3.10, 查看前提條件來驗證你的CentOS版本是否支持 Docker
    通過 uname -r 命令看系統當前內核版本

uname -r
  1. 安裝Docker
    從2017年3月開始 Docker在原來的基礎上分為兩個分支版本: Docker CE 和 Docker EE.
    Docker CE即社區免費版本, Docker EE即企業版, 強調安全, 但需付費使用.

我們介紹Docker CE的安裝使用.

移除舊的版本:

sudo yum remove docker \
                docker-client \
                docker-client-latest \
                docker-common   \
                docker-latest   \
                docker-latest-logrotate \
                docker-logrotate    \
                docket-selinux  \
                docker-engine-selinux   \
                docket-engine
                

安裝一些必要的系統工具:

sudo yum install -y yum-utils device-mapper-persistent-data lvm2

添加軟件源信息:

sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum緩存:

sudo yum makecache fast

安裝Docker-ce:

sudo yum -y install docker-ce

啟動 Docker后臺服務:

sudo service docker start

測試運行hello-world

docker run hello-world

使用腳本安裝Docker

  1. 使用sudo或root權限登錄 CentOS
  2. 確保yum 包更新到最新
sudo yum update
  1. 執行Docker安裝腳本
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh

執行這個腳本會添加docker.repo源并安裝docker

  1. 啟動Docker進程
sudo service docker start
  1. 驗證docker是否安裝成功并在容器中執行一個測試的鏡像
sudo docker run hello-world
docer ps 

到此, Docker安裝完成.

鏡像加速
鑒于國內網絡問題, 后續摘取Docker鏡像十分緩慢, 我們可以配置加速器來解決, 比如網易的鏡像地址:
http://hub-mirror.c.163.com

新版的Docker使用 /etc/docker/daemon.json( Linux ) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。
可以該配置文件中加入(沒有該文件的話, 請先建一個):

{
    "registry-mirrors": ["http://hub-mirror.c.163.com"]
}

刪除 Docker CE
執行以下命令來刪除 Docker CE:

sudo yum remove docker-ce
sudo rm -rf /var/lib/docker

Docker 鏡像使用
當運行容器時, 使用的鏡像如果在本地不存在, docker就會自動從鏡像倉庫中下載, 默認是從 Docker Hub公共鏡像源下載
我們來學習:
. 管理和使用本地Docker主機鏡像
. 創建鏡像

1. 列出鏡像列表:

列出本地主機上的鏡像

docker images 

REPOSITORY | TAG | IMAGE ID | CREATED | SIZE
centos | 6.8 | 90b555111e0 | 3 days ago | 233.3 MB
centos | 6.10 | ff1b555111e0 | 2 days ago | 238.3 MB

各個選項說明:
. REPOSITORY: 表示鏡像的倉庫源
. TAG: 鏡像的標簽
. IMAGE ID: 鏡像ID
. CREATEED: 鏡像創建時間
. SIZE: 鏡像大小

同一倉庫源可以有多個 TAG, 代表這個倉庫源的不同個版本, 如CentOS 倉庫源時, 有6.8, 6.10等多個不同的版本, 我們使用REPOSITORY:TAG來定義不同的鏡像.
所以, 我們如果使用版本為6.8的CentOS系統鏡像來運行容器時, 命令如下:

docker run -t -i centos:6.8 /bin/bash

若用6.10的則為:

docker run -t -i centos:6.10 /bin/bash

如果你不指定一個鏡像的版本標簽,例如你只使用 centos, docker 將默認使用 centos:latest鏡像

2. 獲取一個新的鏡像

當我們在本地主機上使用一個不存在的鏡像時 Docker 就會自動下載這個鏡像. 我們可以使用docker pull 命令來下載它.

docker pull centos:6.10

假定....

jin@jinLab:~$ docker pull centos:6.10
13.10: Pulling from library/centos
6599cadaf950: Pull complete 
23eda618d451: Pull complete 
f0be3084efe9: Pull complete 
52de432f084b: Pull complete 
a3ed95caeb02: Pull complete 
Digest: sha256:15b79a6654811c8d992ebacdfbd5152fcf3d165e374e264076aa435214a947a3
Status: Downloaded newer image for centos:6.10

下載完成后, 我們可以直接使用這個鏡像來運行容器.

3. 查找鏡像

我們可以從Docker Hub網站來搜索鏡像, Docker Hub 網址為: https://hub.docker.com/
我們也可以使用docker search 命令來搜索鏡像. 比如我們需要一個httpd的鏡像來作為我們的web服務. 我們可以通過docker search命令來搜索httpd 來尋找適合我們的鏡像.

docker search httpd

NAME: 鏡像倉庫源的名稱
DESCRIPTION: 鏡像的描述
OFFICIAL: 是否docker官方發布

4. 拖取鏡像

我們決定使用上圖中的 httpd 官方版本的鏡像, 使用命令 docker pull 來下載鏡像

docker pull httpd
jin@jinLab:~$ docker pull httpd
Using default tag: latest
latest: Pulling from library/httpd
8b87079b7a06: Pulling fs layer 
a3ed95caeb02: Download complete 
0d62ec9c6a76: Download complete 
a329d50397b9: Download complete 
ea7c1f032b5c: Waiting 
be44112b72c7: Waiting

下載完成后, 我們就可以使用這個鏡像了

docker run httpd
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,882評論 6 531
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,208評論 3 414
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,746評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,666評論 1 309
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,477評論 6 407
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 54,960評論 1 321
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,047評論 3 440
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,200評論 0 288
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 48,726評論 1 333
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,617評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 42,807評論 1 369
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,327評論 5 358
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,049評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,425評論 0 26
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,674評論 1 281
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,432評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 47,769評論 2 372

推薦閱讀更多精彩內容