Docker 需要安裝在 64 位的 x86 平臺(tái)或 ARM 平臺(tái)上(如樹(shù)莓派),并且要求內(nèi)核版本不低于 3.10。但實(shí)際上內(nèi)核越新越好,過(guò)低的內(nèi)核版本可能會(huì)出現(xiàn)部分功能無(wú)法使用,或者不穩(wěn)定。
用戶(hù)可以通過(guò)如下命令檢查自己的內(nèi)核版本詳細(xì)信息:
$ uname -a
Linux device 4.4.0-45-generic #66~14.04.1-Ubuntu SMP Wed Oct 19 15:05:38 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
2.使用腳本自動(dòng)安裝
Docker 官方為了簡(jiǎn)化安裝流程,提供了一套安裝腳本,Ubuntu 和 Debian 系統(tǒng)可以使用這套腳本安裝:
curl -sSL https://get.docker.com/ | sh
阿里云的安裝腳本
curl -sSL http://acs-public-mirror.oss-cn-hangzhou.aliyuncs.com/docker-engine/internet | sh -
DaoCloud 的安裝腳本
curl -sSL https://get.daocloud.io/docker | sh
3.啟動(dòng) Docker 引擎
Ubuntu 16.04、Debian 8 Jessie/Stretch
$ sudo systemctl enable docker
$ sudo systemctl start docker
4.獲取鏡像
$ docker pull ubuntu:14.04
14.04: Pulling from library/ubuntu
bf5d46315322: Pull complete
9f13e0ac480c: Pull complete
e8988b5b3097: Pull complete
40af181810e7: Pull complete
e6f7c7e5c03e: Pull complete
Digest: sha256:147913621d9cdea08853f6ba9116c2e27a3ceffecf3b492983ae97c3d643fbbe
Status: Downloaded newer image for ubuntu:14.04
5.運(yùn)行
有了鏡像后,我們就可以以這個(gè)鏡像為基礎(chǔ)啟動(dòng)一個(gè)容器來(lái)運(yùn)行。以上面的 ubuntu:14.04 為例,如果我們打算啟動(dòng)里面的 bash 并且進(jìn)行交互式操作的話(huà),可以執(zhí)行下面的命令。
$ docker run -it --rm ubuntu:14.04 bash
root@e7009c6ce357:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="14.04.5 LTS, Trusty Tahr"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 14.04.5 LTS"
VERSION_ID="14.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
root@e7009c6ce357:/# exit
exit
$
虛懸鏡像
由于新舊鏡像同名,舊鏡像名稱(chēng)被取消,從而出現(xiàn)倉(cāng)庫(kù)名、標(biāo)簽均為 <none> 的鏡像。這類(lèi)無(wú)標(biāo)簽鏡像也被稱(chēng)為 虛懸鏡像(dangling image) ,可以用下面的命令專(zhuān)門(mén)顯示這類(lèi)鏡像:
$ docker images -f dangling=true
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 00285df0df87 5 days ago 342 MB
一般來(lái)說(shuō),虛懸鏡像已經(jīng)失去了存在的價(jià)值,是可以隨意刪除的,可以用下面的命令刪除。
$ docker rmi $(docker images -q -f dangling=true)
中間層鏡像
為了加速鏡像構(gòu)建、重復(fù)利用資源,Docker 會(huì)利用 中間層鏡像。所以在使用一段時(shí)間后,可能會(huì)看到一些依賴(lài)的中間層鏡像。默認(rèn)的 docker images 列表中只會(huì)顯示頂層鏡像,如果希望顯示包括中間層鏡像在內(nèi)的所有鏡像的話(huà),需要加 -a 參數(shù)。
$ docker images -a
我們修改了容器的文件,也就是改動(dòng)了容器的存儲(chǔ)層。我們可以通過(guò) docker diff 命令看到具體的改動(dòng)。
$ docker diff webserver
C /root
A /root/.bash_history
C /run
C /usr
C /usr/share
C /usr/share/nginx
C /usr/share/nginx/html
C /usr/share/nginx/html/index.html
C /var
C /var/cache
C /var/cache/nginx
A /var/cache/nginx/client_temp
A /var/cache/nginx/fastcgi_temp
A /var/cache/nginx/proxy_temp
A /var/cache/nginx/scgi_temp
A /var/cache/nginx/uwsgi_temp
sudo docker run --name xmaijenkins -p 8080:8080 -p 50000:50000 --env JAVA_OPTS="-Xmx8192m" --env JAVA_OPTS="-Djava.util.logging.config.file=/home/xmai/jenkins_home_docker/log.properties" --env JENKINS_SLAVE_AGENT_PORT=50000 -v /home/xmai/jenkins_home_docker:/var/jenkins_home jenkins/jenkins:lts
docker pull jenkins:latest
1.服務(wù)器拉取docker jenkins鏡像:
docker pull jenkins:latest
2.拉取jenkins latest版本鏡像
docker pull jenkins:2.7.4
拉取jenkins 2.7.4版本鏡像
3.服務(wù)器運(yùn)行dokcer jenkins容器:
sudo docker run -d --name jenkins_node -p 49002:8080 -v /var/jenkins_node:/var/jenkins_home jenkins:latest
命令的意思是:在后臺(tái)運(yùn)行一個(gè)基于jenkins:latest鏡像的容器, 容器的名字叫做 jenkins_node ,把容器的8080端口映射為49002端口,并且把服務(wù)器上的/var/jenkins_node目錄掛在到docker容器上的/var/jenkins_home目錄
-d 后臺(tái)運(yùn)行docker容器
如果不加-d則,容器運(yùn)行會(huì)占用此終端,如果終端關(guān)閉,則容器也相應(yīng)關(guān)閉,jenkins就無(wú)法訪問(wèn)了。加上-d,容器會(huì)在后臺(tái)運(yùn)行。
--name 為容器起個(gè)別名
如果不起別名,則系統(tǒng)會(huì)默認(rèn)分配一個(gè)隨機(jī)別名,類(lèi)似gklasd_sdfwe。起了別名后,后續(xù)會(huì)通過(guò)該別名管理該docker容器,也就是管理jenkins。
-p docker容器端口映射
jenkins服務(wù)是運(yùn)行在docker里的,docker默認(rèn)不對(duì)外暴露端口的
-v 文件掛載
如果不掛載,則jenkins所有l(wèi)og、用戶(hù)配置文件都會(huì)在docker容器內(nèi),如果容器銷(xiāo)毀,則jenkins得重新配置一遍。掛載出來(lái)方便jenkins遷移以及管理
jenkins run
查看你服務(wù)器上的的/var/jenkins_node文件夾,當(dāng)出現(xiàn)下圖所有文件時(shí),則說(shuō)明jenkins啟動(dòng)成功,否則再等等...30秒左右即可