mac下安裝Docker
brew cask install docker
啟動(dòng)docker:進(jìn)入launchpad,雙擊docker圖標(biāo)即可啟動(dòng)
Linux下安裝Docker
https://yeasy.gitbooks.io/docker_practice/install/centos.html (CentOS)https://yeasy.gitbooks.io/docker_practice/install/ubuntu.html (Ubuntu)
Windows下安裝Docker
https://yeasy.gitbooks.io/docker_practice/install/windows.html
Docker 概念
鏡像:一個(gè)特殊的文件系統(tǒng),提供容器運(yùn)行所需的程序、庫(kù)、資源等??梢园阉醋饕粋€(gè)類。
容器:容器的實(shí)質(zhì)是進(jìn)程,每個(gè)進(jìn)程最好占用一個(gè)容器,比如 jenkins,wiki,jira,gitlab單獨(dú)放在不同容器中??梢园阉醋魇晴R像的一個(gè)實(shí)例。
倉(cāng)庫(kù):相當(dāng)于git的遠(yuǎn)程倉(cāng)庫(kù),有公開的,也有私有的,表現(xiàn)形式是 :,每個(gè)標(biāo)簽即為一個(gè)遠(yuǎn)程鏡像。
網(wǎng)絡(luò):Docker 允許通過外部訪問容器或者容器互聯(lián)的方式來提供網(wǎng)絡(luò)服務(wù)。有多種網(wǎng)絡(luò)模式。
數(shù)據(jù)管理:分為數(shù)據(jù)卷(volume)和掛載主機(jī)兩種方式
Docker 常用命令
啟動(dòng)docker
安裝docker的時(shí)候已經(jīng)提到如何啟動(dòng)docker
鏡像操作
docker search 在官方倉(cāng)庫(kù)查找鏡像
獲得鏡像
docker pull [選項(xiàng)] [Docker Registry 地址[:端口號(hào)]/]倉(cāng)庫(kù)名[:標(biāo)簽]
# docker方式獲取jenkinsdocker pull jenkins/jenkins:lts
運(yùn)行鏡像(啟動(dòng)容器)
docker run [選項(xiàng)] IMAGE [命令][參數(shù)..]
# 啟動(dòng)jenkinsdocker run -d -v jenkins_home:/var/jenkins_home -p 8080:8080 -p 50000:50000 jenkins/jenkins:lts# -d :–detach 后臺(tái)運(yùn)行容器# -v :–volume 綁定掛載目錄# -p : 綁定端口,主機(jī)端口:容器端口 8080是web端口,50000是從屬服務(wù)器使用端口
列出鏡像
docker image ls 列出全部鏡像
docker image ls 列出部分鏡像
# 列表包含了 倉(cāng)庫(kù)名、標(biāo)簽、鏡像 ID、創(chuàng)建時(shí)間 以及 所占用的空間。REPOSITORY TAG IMAGE ID CREATED SIZEb3log/solo latest deba8aac9495 4 days ago 150MB
鏡像體積
docker system df
虛懸鏡像
倉(cāng)庫(kù)名和標(biāo)簽都為 的鏡像
docker image ls -f dangling=true 查看虛擬鏡像
docker image prune 刪除虛擬鏡像
刪除本地鏡像
docker image rm [選項(xiàng)] [ …] 刪除本地鏡像
docker image rm $(docker image ls -q image_name) 成批刪除鏡像,用在某個(gè)鏡像可能有不同tag,但想全部刪除的情況
Dockerfile
作用:定制鏡像
構(gòu)建鏡像:docker build [上下文路徑/URL/-],(docker build -t -f . 是常用命令)
Dockerfile 常用指令:
FROM 指定基礎(chǔ)鏡像
RUN 執(zhí)行命令
# 舉個(gè)例子# stretch 是空白鏡像FROM debian:stretch# RUN最多是42層,所以不要濫用RUN,一個(gè)RUN一般是一個(gè)步驟,比如下方的編譯、安裝 redis 可執(zhí)行文件可以放在一個(gè)步驟里執(zhí)行,用 && 可以串聯(lián)命令RUN buildDeps=’gcc libc6-dev make wget’ && apt-get update && apt-get install -y $buildDeps && wget -O redis.tar.gz “http://download.redis.io/releases/redis-5.0.3.tar.gz” && mkdir -p /usr/src/redis && tar -xzf redis.tar.gz -C /usr/src/redis –strip-components=1 && make -C /usr/src/redis && make -C /usr/src/redis install && rm -rf /var/lib/apt/lists/* && rm redis.tar.gz && rm -r /usr/src/redis && apt-get purge -y –auto-remove $buildDeps
COPY [–chown=:] … 復(fù)制文件
- 源路徑可以有很多個(gè),甚至可以用通配符
- 源路徑是相對(duì)路徑
- 目標(biāo)路徑可以是絕對(duì)路徑,也可以是相對(duì)于工作目錄的相對(duì)路徑
ADD [–chown=:] … 比COPY更高級(jí)的復(fù)制文件
- 源路徑可以是URL、壓縮文件(會(huì)自動(dòng)解壓到目標(biāo)路徑)
CMD 容器啟動(dòng)命令
- shell 格式: CMD
- exec 格式: CMD [“可執(zhí)行文件”, “參數(shù)1”, “參數(shù)2″…]
- 參數(shù)列表格式:CMD [“參數(shù)1”, “參數(shù)2″…]。指定ENTRYPOINT指令后,用CMD指定具體參數(shù)
- 注意:CMD 的命令不能是后臺(tái)運(yùn)行的命令!例如,不能是 CMD service nginx start
- 注意:CMD 推薦使用exec格式編寫
- 注意:一個(gè)Dockerfile只能有一個(gè)CMD指令