docker
安裝docker
Centos7系統(tǒng)
Docker 要求 CentOS 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁(yè)面的前提條件來(lái)驗(yàn)證你的CentOS 版本是否支持 Docker 。
通過(guò) uname -r 命令查看你當(dāng)前的內(nèi)核版本
# 使用yum安裝
yum -y install docker【-y 對(duì)所有的提問(wèn)都回答 `yes`;】
# 命令說(shuō)明
yum -y install 包名(支持*) :自動(dòng)選擇y,全自動(dòng)
yum install 包名(支持*) :手動(dòng)選擇y or n
yum remove 包名(不支持*)
rpm -ivh 包名(支持*):安裝rpm包
rpm -e 包名(不支持*):卸載rpm包
# 沒(méi)測(cè)試
yum -y install docker-io
yum install -y docker-engine
# 或者使用腳本安裝 Docker
1、使用 sudo 或 root 權(quán)限登錄 Centos。
2、確保 yum 包更新到最新。
$ sudo yum update
3、執(zhí)行 Docker 安裝腳本。
$ curl -fsSL https://get.docker.com/ | sh
執(zhí)行這個(gè)腳本會(huì)添加 docker.repo 源并安裝 Docker。
ubuntu系統(tǒng)
Docker 要求 Ubuntu 系統(tǒng)的內(nèi)核版本高于 3.10 ,查看本頁(yè)面的前提條件來(lái)驗(yàn)證你的 Ubuntu 版本是否支持 Docker。
通過(guò) uname -r 命令查看你當(dāng)前的內(nèi)核版本
安裝:
// 沒(méi)測(cè)試過(guò)
wget -qO- https://get.docker.com/ | sh
或者
// 沒(méi)測(cè)試過(guò)
sudo apt-get install -y -q docker-engine
Windows Docker 安裝
win7、win8 等需要利用 docker toolbox 來(lái)安裝,國(guó)內(nèi)可以使用阿里云的鏡像來(lái)下載,下載地址:http://mirrors.aliyun.com/docker-toolbox/windows/docker-toolbox/
docker toolbox 是一個(gè)工具集,它主要包含以下一些內(nèi)容:
Docker CLI 客戶(hù)端,用來(lái)運(yùn)行docker引擎創(chuàng)建鏡像和容器
Docker Machine. 可以讓你在windows的命令行中運(yùn)行docker引擎命令
Docker Compose. 用來(lái)運(yùn)行docker-compose命令
Kitematic. 這是Docker的GUI版本
Docker QuickStart shell. 這是一個(gè)已經(jīng)配置好Docker的命令行環(huán)境
Oracle VM Virtualbox. 虛擬機(jī)
點(diǎn)擊 Docker QuickStart 圖標(biāo)來(lái)啟動(dòng) Docker Toolbox 終端。
如果系統(tǒng)顯示 User Account Control 窗口來(lái)運(yùn)行 VirtualBox 修改你的電腦,選擇 Yes。
開(kāi)啟國(guó)內(nèi)鏡像加速
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來(lái)配置 Daemon。網(wǎng)易的鏡像地址:
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
修改Windows上Docker的鏡像源#
Docker Toolbox
- 在Windows命令行執(zhí)行
docker-machine ssh [machine-name]進(jìn)入VM bash sudo vi /var/lib/boot2docker/profile- 在
--label provider=virtualbox的下一行添加--registry-mirror http://hub-mirror.c.163.com - 重啟docker服務(wù):
sudo /etc/init.d/docker restart或者重啟VM:exit退出VM bash,在Windows命令行中執(zhí)行docker-machine restart
命令集合
docker啟動(dòng)命令啟【啟動(dòng) Docker 后臺(tái)服務(wù)】
service docker start
運(yùn)行hello-world
docker run hello-world
由于本地沒(méi)有hello-world這個(gè)鏡像,所以會(huì)下載一個(gè)hello-world的鏡像,并在容器內(nèi)運(yùn)行。
命令集合
在容器mynginx中開(kāi)啟一個(gè)交互模式的終端[連接上容器]
docker exec -i -t mynginx /bin/bash
docker version|docker -v|docker --version 查看docker的版本號(hào),包括客戶(hù)端、服務(wù)端、依賴(lài)的Go版本等
docker info 查看系統(tǒng)(docker)層面信息,包括管理的images, containers數(shù)等
docker search 鏡像名 在docker index中搜索image
docker pull 從docker registry server 中下拉image(下載鏡像)
docker push 推送一個(gè)image或repository到registry
docker push :TAG 同上,指定tag
docker inspect 鏡像名 查看image或container的底層信息
docker images TODO filter out the intermediate image layers (intermediate image layers 是什么)
docker images -a 列出所有的images
docker ps 默認(rèn)顯示正在運(yùn)行中的container
docker ps -l 顯示最后一次創(chuàng)建的container,包括未運(yùn)行的
docker ps -a 顯示所有的container,包括未運(yùn)行的
docker logs 容器名或者容器id 查看container的日志,也就是執(zhí)行命令的一些輸出
docker rm 刪除一個(gè)或多個(gè)container
docker rm `docker ps -a -q` 刪除所有的container
docker ps -a -q | xargs docker rm 同上, 刪除所有的container
docker rmi 刪除一個(gè)或多個(gè)image
docker start/stop/restart 開(kāi)啟/停止/重啟container
docker start -i 啟動(dòng)一個(gè)container并進(jìn)入交互模式
docker attach attach一個(gè)運(yùn)行中的container
docker run 使用image創(chuàng)建container并執(zhí)行相應(yīng)命令,然后停止
docker run -d -P training/webapp python app.py【-d:讓容器在后臺(tái)運(yùn)行。-P:將容器內(nèi)部使用的網(wǎng)絡(luò)端口映射到我們使用的主機(jī)上。】
docker run -d -p 5000:5000 training/webapp python app.py【 -p 標(biāo)識(shí)來(lái)綁定指定端口。容器內(nèi)部的 5000 端口映射到我們本地主機(jī)的 5000 端口上?!?docker run -i -t /bin/bash 使用image創(chuàng)建container并進(jìn)入交互模式, login shell是/bin/bash(-t 選項(xiàng)讓Docker分配一個(gè)偽終端(pseudo-tty)并綁定到容器的標(biāo)準(zhǔn)輸入上,-i 則讓容器的標(biāo)準(zhǔn)輸入保持打開(kāi)。)【-t:在新容器內(nèi)指定一個(gè)偽終端或終端。-i:允許你對(duì)容器內(nèi)的標(biāo)準(zhǔn)輸入 (STDIN) 進(jìn)行交互?!?docker run -i -t -p 將container的端口映射到宿主機(jī)的端口
當(dāng)利用 docker run 來(lái)創(chuàng)建容器時(shí),Docker 在后臺(tái)運(yùn)行的標(biāo)準(zhǔn)操作包括:
(1)檢查本地是否存在指定的鏡像,不存在就從公有倉(cāng)庫(kù)下載
(2)利用鏡像創(chuàng)建并啟動(dòng)一個(gè)容器
(3)分配一個(gè)文件系統(tǒng),并在只讀的鏡像層外面掛載一層可讀寫(xiě)層
(4)從宿主主機(jī)配置的網(wǎng)橋接口中橋接一個(gè)虛擬接口到容器中去
(5)從地址池配置一個(gè) ip 地址給容器
(6)執(zhí)行用戶(hù)指定的應(yīng)用程序
(7)執(zhí)行完畢后容器被終止
docker commit [repo:tag] 將一個(gè)container固化為一個(gè)新的image,后面的repo:tag可選
docker build
尋找path路徑下名為的Dockerfile的配置文件,使用此配置生成新的image
docker build -t repo[:tag] 同上,可以指定repo和可選的tag
docker build - 使用指定的dockerfile配置文件,docker以stdin方式獲取內(nèi)容,使用此配置生成新的image
docker port 查看本地哪個(gè)端口映射到container的指定端口,其實(shí)用docker ps 也可以看到
安裝Docker-compose
Docker Compose是一個(gè)編排多容器分布式部署的工具,提供命令集管理容器化應(yīng)用的完整開(kāi)發(fā)周期,包括服務(wù)構(gòu)建,啟動(dòng)和停止。
Docker Compose是Docker編排服務(wù)的最后一塊,前面提到的Machine可以讓用戶(hù)在其它平臺(tái)快速安裝Docker,Swarm可以讓Docker容器在集群中高效運(yùn)轉(zhuǎn),而Compose可以讓用戶(hù)在集群中部署分布式應(yīng)用。簡(jiǎn)單的說(shuō),Docker Compose屬于一個(gè)“應(yīng)用層”的服務(wù),用戶(hù)可以定義哪個(gè)容器組運(yùn)行哪個(gè)應(yīng)用,它支持動(dòng)態(tài)改變應(yīng)用,并在需要時(shí)擴(kuò)展。
yum -y install docker-compose
或者
curl -L https://get.daocloud.io/docker/compose/releases/download/1.13.0/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
查看docker版本:
docker-compose -v
docker-compose --version