天天看點

Docker基礎之三: 安裝docker+HelloWorld安裝Docker

(提示:對docker感興趣的朋友可以加我的微信ghostcloud2016,然後我把你加到我們的一個docker愛好者社群裡面。)

docker最核心的程式是docker engine,根據參數,它既可以作為背景daemon運作,也可以作為指令行工具使用。

docker本身是基于linux核心的,是以隻要核心版本足夠新,一般大于3.10左右,就可以運作。各種系統的安裝方式基本相同,隻是針對各系統的程序管理或者目錄結構略有不同。下面是docker在linux系統下的實體邏輯結構: 

Docker基礎之三: 安裝docker+HelloWorld安裝Docker

在所有系統中,docker對ubuntu的支援是最好的,是以如果使用docker,我推薦都适用ubuntu系統。ubuntu系統的可視化、安裝以及核心的更新,我認為都是最好的。docker支援的ubuntu系統:

ubuntu wily 15.10

ubuntu vivid 15.04

ubuntu trusty 14.04 (lts)

ubuntu precise 12.04 (lts) 環境要求:

64位系統

3.10以上linux核心,具體可以根據uname –r進行檢視

具體安裝步驟:

更新apt源

删除舊版本docker

檢查docker的apt源是否正常

不同版本的處理

重新開機系統(如果沒有安裝核心包,忽略本條)

安裝docker-engine

其他配置

建立docker使用者

docker daemon預設綁定在unix socket上,而不是tcp的端口。而unix socket預設是屬于root使用者,是以其他使用者要通路該 socket需要通過sudo指令。如果想避免使用sudo,你需要将目前使用者添加到docker 使用者組。具體步驟:

調整memory和swap的配額

有時候你在啟動時會出現:

這個提示說明,你目前的核心不支援cgroup對swap的控制。如果需要支援,會使用大約1%的系統總記憶體,同時會有10%左右的性能損失。具體步驟如下:

同ufw一起使用

如果你使用了ufw(uncomplicated firewall),你需要做額外的配置,因為ufw預設會屏蔽所有的forwarding流量,是以你需要zuo如下配置:

配置docker的dns

ubuntu系統預設使用127.0.0.1作為dns伺服器,具體配置檔案為/etc/resolv.conf。同時,還使用dnsmasq作為dns的緩存。當你啟動容器的時候,可能會遇到下面的警告:

這個警告說明docker容器不能使用主機的本地dns,是以使用外部的預設dns(8.8.8.8,8.8.4.4)這兩個位址都是google的免費dns位址。如果想自己指定 dns,具體步驟如下:

讓docker随系統啟動

首先需要了解你所使用的系統用的什麼啟動管理工具,在ubuntu 15.04及其以上版本使用的是systemd,在14.10及其以下使用的是upstart。在15.04及以上版本需要執行:

在14.10以下,安裝程式會自動将docker加入到upstart中。

更新docker

解除安裝docker

centos 7.x及其以後版本

3.10以後版本

更新yum源:

下載下傳腳本并安裝:

啟動服務:

驗證docker:

更新源:

添加源及gpg key:

安裝docker-engine:

啟動docker daemon:

背景

mac osx下docker通過docker toolbox來進行安裝,docker toolbox是docker公司的一個工具包,裡面包括:

docker machine: 運作docker-machine程式

docker engine: docker可執行程式

docker compose: docker-compose程式

kitematic: docker gui

包含預定義的shell腳本,用于指令行運作環境

oracle vm virtualbox

由于docker daemon 使用了linux kernel的衆多特性,我們不能在os x本地運作docker,是以我們必須使用docker-machine來建立并關聯到一個虛拟機。這個虛拟機就是docker的實際運作環境。下面是docker在mac或windows下的實體邏輯結構 

Docker基礎之三: 安裝docker+HelloWorld安裝Docker

環境要求: os x 10.8及其以上版本

安裝toolbox

位址是https://www.docker.com/toolbox, 下載下傳完成後根據提示進行安裝。預設情況,docker toolbox安裝在/usr/local/bin,每個使用者都可以使用這些可執行程式,同時會安裝帶有docker運作環境的virtual box。

啟動docker machine 通過launchpad啟動程式: 

Docker基礎之三: 安裝docker+HelloWorld安裝Docker

執行程式後,會自動執行一段shell腳本啟動虛拟機并進入一個shell終端。

Docker基礎之三: 安裝docker+HelloWorld安裝Docker

hello world, docker

我們先來執行一個最簡單的docker容器:

這個指令包含三部分:

docker - 所有docker指令的可執行程式,預設在/usr/local/bin/docker

run - docker 的子指令,該指令首先檢視本地是否有相應的鏡像,如果沒有将預設從docker hub進行拉取,之後再運作該鏡像

hello-world - 鏡像名稱,這個鏡像就是echo一句hello world

容器本身是一個簡化的經過裁減的linux系統,容器可以運作一個簡單指令,就像上例一樣;也可以運作比較複雜的應用程式,比如:資料庫,web背景等。那hello-world鏡像是由誰生成的呢?是docker官方生成的,通過docker容器,你可以在任何系統容器中運作鏡像。

查找image

你可以在docker hub首頁,或者本機通過指令行進行搜尋,一般我喜歡通過指令行進行搜尋。例如,搜尋ubuntu:

在搜尋結果中,你可以看到有的是通過"/"劃分的,有的沒有。凡是沒有"/"分級的就是docker hub自帶的鏡像;否則該鏡像就出自于某個docker hub使用者,從這裡你也可以看到,docker hub是一個public倉庫,你的任何鏡像,别人都可以搜尋到。是以,一定要注意安全,不要把敏感資訊放上去了。

拉取鏡像

我們嘗試拉取一個centos鏡像:

編譯image 除了拉取官方的image,也可以自己編譯image,編譯的方法和makefile類似。

建立dockerfile

編譯image

運作自己的image

繼續閱讀