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