docker教程阮一峰,docker菜鳥教程

如何學習Docker

docker教程阮一峰,docker菜鳥教程

文章插圖
1.學習Docker,如果沒有云計算的基本知識,以及內核的基本知識,那么學習并理解起來會稍吃力 。作為容器,Docker容器的優勢在哪,不足在哪,最好了解容器的實現是怎樣的(簡單了解);擁有鏡像管理,Docker又該如何體現軟件開發,集成,部署,發布,再迭代的軟件生命周期管理優勢 。以上兩點我認為最為關鍵,有這兩方面的認識勢必會對之后的工作幫助巨大 。

2.關于學習資源,起碼的硬件設施總是要有的 。Docker及其生態的發展很快,不使用純理論肯定收效甚微 。另外,資源還包括Docker官方,各大電子媒體平臺,技術論壇,開源社區等,往往大拿的觀點能點破自己的困惑,或者讓自己知道哪方面的認識還很欠缺,以及讓自己少走很多的彎路 。

3.個人興趣的話,歸結為強扭的瓜不甜 。起碼應該認同Docker的設計價值,以及Docker的未來潛力,當然有依據的批判Docker并帶動大家的思考,也是深切關注的表現 。

4.個人發展方向,我認為如果需要把Docker當作軟件生命周期管理工具的話,那用好Docker最為重要,API及命令的理解與使用是必需的 。如果專注系統設計方面,那么除Docker以上的知識與經驗之外,若有Docker源碼的學習與理解,那么這些肯定會讓你的Docker水平提高一個層次 。
什么是Docker?怎么用Docker 是一個開源的應用容器引擎,讓開發者可以打包他們的應用以及依賴包到一個可移植的容器中,然后發布到任何流行的 Linux 機器上,也可以實現虛擬化 。容器是完全使用沙箱機制,相互之間不會有任何接口(類似 iPhone 的 app) 。幾乎沒有性能...
如何進入Docker容器安裝Docker
借助apt-get命令安裝Docker件輕易舉事
$ sudo apt-get install docker.io
允許非根用戶運行Docker自添加docker群組面命令允許前用戶運行Docker需根用戶權限
$ sudo usermod -a -G docker $USER
退重新登錄激群組員變化
步編輯Docker配置文件便更新Docker二進制代碼位置
$ sudo vi /etc/default/docker.io DOCKER="/usr/bin/docker.io"
重啟Docker服務
$ sudo service docker.io restart
管理Docker容器
想啟Ubuntu操作系統新Docker容器首先需要獲取Ubuntu Docker映像文件面命令通網絡載Docker映像文件
$ docker pull ubuntu
種交互模式啟Ubuntu Docker所示參數/bin/bash旦啟容器面執行命令簡單bash外殼命令
$ docker run -i -t ubuntu /bin/bash

更詳細信息參考官手冊
如何用docker搭建一臺虛擬機docker如果安裝成功,會有一塊虛擬網卡,ip地址默認是172.17.42.1

用docker search centos6命令搜索githup中的容器

使用docker pull weepee/centos6下載容器到本地

使用docker images查看本地所有的容器

使用run命令啟動容器
/usr/bin/dockerrun -d -v /root:/root -p 81:80 -p 2222:22 -p 10050:10050 -p 10051:10051centos6.5_zabbix:v1.3
一定要記住centos6.5_zabbix:v1.3就是第四步查詢到的名稱和版本號
81:80 前面的宿主機的端口,后面是docker中容器所開的端口,兩個端口之間是映射關系
6
docker ps 查看運行狀態的容器

7
如果提交修改用docker commit 859549d3f157命令 859549d3f157就是使用docker ps查詢到的CONTAINER ID
如何進入 Docker 容器【docker教程阮一峰,docker菜鳥教程】從util-linux版本2.23開始,nsenter工具就包含在其中 。它用來訪問另一個進程的名字空間 。nsenter要正常工作需要有root權限 。很不幸,Ubuntu 14.4仍然使用的是util-linux版本2.20 。安裝最新版本的util-linux(2.24)版,請按照以下步驟:




為了連接到容器,你還需要找到容器的第一個進程的PID 。
dockerinspect--format"{{.State.Pid}}"<container-id>

通過這個PID,你就可以連接到這個容器:
nsenter--target$PID--mount--uts--ipc--net--pid


nsinit
從0.9版本開始,Docker自身就具有一個管理容器的庫,名字為libcontainer 。libcontainer中的nsinit工具允許用戶直接訪問linux名字空間和cgroup內核 。在安裝nsinit之前,你首先需要安裝Go運行時環境:

apt-getinstallgitgolang-go
mkdir-p$HOME/go-dev/binmkdir-p$HOME/go-dev/src
echo"exportGOPATH=\$HOME/go-dev">>~/.profileecho"PATH=\$PATH:\$GOPATH/bin">>~/.profile
source~/.profile

接下來才安裝nsinit:
mkdir-p$GOPATH/src/github.com/dotcloudcd$GOPATH/src/github.com/dotcloud
gitclonehttps://github.com/dotcloud/docker.gitcd$GOPATH/src/github.com/dotcloud/docker
/usr/bin/goget-vgithub.com/dotcloud/docker/vendor/src/github.com/docker/libcontainer/nsinit

nsinit讀取的是位于/var/lib/docer/execdriver/native/<container-id>容器目錄下的配置數據 。要運行nsinit,你需要切換到容器目錄下 。由于/var/lib/docker目錄對于root用戶是只讀權限,因此你還需要root權限 。通過docker的ps命令,你可以確定容器ID 。一旦你進入/var/lib/docker目錄,你就可以連接容器了:
nsinitexec/bin/bash






lxc(-attach)
直到Docker0.8.1版本為止,LXC一直是管理容器的基本工具,Docker一直支持這個工具 。但是從0.9.0版本開始,Docker默認使用libcontainer管理容器,不再依賴LXC了 。因此默認情況下,你不能使用lxc-attach了 。
如果你仍然希望使用lxc-attach,那么你需要使用-e lxc選項來重新啟動Docker服務進程 。使用這個選項,Docker的內部將再次使用LXC管理容器了 。完成這個任務最簡單的做法就是創建/etc/default/docker文件(如果這個文件仍然不存在),并添加以下內容:
DOCKER_OPTS=" -e lxc"
現在你可以重新啟動Docker服務了 。要連接容器,你需要知道完整的容器ID:
dockerps--no-trunc

接下來,你就可以連接這個容器了 。要完成下面工作,你還需要root權限:
lxc-attach-n<container-id>--/bin/bash







sshd
上面所有三種方法都要求具有主機系統的root權限 。為了不采用root權限,通過ssh訪問容器將是一個很好的選擇 。
要做到這一點,你需要構建一個支持SSH服務的基礎映像 。此時,我們可能遇到這樣的問題:我們是不是用DockerCMD或者ENTRYPOINT運行一條命令就可以了?如果此時有sshd進程運行,那么我們就不要再運行其他進程了 。接下來的工作是創建一個腳本或者使用像supervisord這樣的進程管理工具來啟動其它所有需要啟動的進程 。有關如何使用supervisord的優秀的文檔可以在Docker的web站點上找到 。一旦你啟動了具有sshd進程的容器,你就可以像以往一樣通過ssh客戶端了連接這個容器了 。