新聞中心
I. dcoker基本概念
-
鏡像(image)
鏡像,從本質上來講,鏡像相當于一個文件系統(tǒng)。鏡像是只讀的,除了提供容器運行時所需的程序、庫、資源、配置等文件外,還包好了一些為運行時準備的一些配置參數(shù),如匿名卷、環(huán)境變量、用戶等。鏡像不包含任何動態(tài)數(shù)據(jù),其內(nèi)容在構建之后也不會被改變。一個鏡像可以運行多個container,鏡像可以通過dockerfile創(chuàng)建,也可以從dicker hub/registory上下載。
創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站制作、成都網(wǎng)站設計與策劃設計,修文網(wǎng)站建設哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設十年,網(wǎng)設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:修文等地區(qū)。修文做網(wǎng)站價格咨詢:18982081108
-
容器(container)
容器,容器的實質是進程,但是是運行在屬于自己的獨立的命名空間,因此容器可以擁有自己的root文件系統(tǒng),自己的網(wǎng)絡配置,自己的進程空間,甚至自己的用戶id空間。說白了就是運行在一個隔離的環(huán)境里。
-
倉庫(repository)
倉庫,顧名思義,就是一個用來存儲用的空間。鏡像構建完成后,可以很容易的在當前宿主機上運行,但是,如果要在其他服務器上使用這個鏡像,我們就需要一個集中的存儲、分發(fā)鏡像的服務,docker registry就是這樣的服務
鏡像就相當于打包好的版本,鏡像啟動之后運行在容器中,倉庫就是存儲鏡像的地方
-
分層存儲
因為鏡像包含操作系統(tǒng)完整的root文件系統(tǒng),其體積往往是龐大的,因此在docker設計時,就充分利用Union FS的技術,將其設計為 分層存儲的架構。嚴格來講,鏡像并非是像一個ISO那樣的打包文件,鏡像只是一個虛擬的概念,其實際體現(xiàn)并非由一個文件組成,而是由一組文件系統(tǒng)組成,或者說,是由對曾文件系統(tǒng)聯(lián)合組成。
鏡像構建時,會一層層構建,前一層作為后一層的基礎,每一層構建完就不會再發(fā)生改變,后一層上的改變只發(fā)生在自己這一層上。
II. Docker的C/S模式
Docker采用了C/S架構,包括客戶端和服務端。Docker守護進程(Daemon)作為服務端接受來自客戶端的請求,并處理這些請求(創(chuàng)建、運行、分發(fā)容器)
Docker守護進程一般在宿主機主機后臺運行,等待接受來自客戶端的消息,Docker客戶端則為用戶提供一系列可執(zhí)行命令,用戶用這些命令實現(xiàn)跟Docker 守護京城交互:
Docker也為我們提供了Remote API來操作Docker的守護進程,也意味著我們可以通過自己的進程來控制Docker的運行??蛻舳撕头斩思瓤梢赃\行在一個機器上,也可通過socket或RESTfuk API來進行通信:
至于Docker的客戶端與守護進程之間的通信,其連接方式為socket連接,主要有三種連接方式:
- unix:///var/run/docker.sock
- tcp://host:ip
- fd://socketfd
完整的Docker的C/S連接方式的本質可以一般表示為如下:
III.使用Docker
容器操作
#啟動一個容器
docker run -it nginx /bin/bash
#查看容器
docker ps [-a] [-l]
-a all 列出所有容器
-l latest 列出最近的容器
#查看指定容器
docker inspect name | id
name指代具體的容器名稱,id則是容器的唯一標識
#啟停容器
docker start|stop name | id
#刪除停止的容器
docker rm name| id
#進入正在運行的容器
#docker attach name | id 退出時要使用Ctrl+P Ctrl+Q
docker exec -it name | id bash 退出時可以使用exit
#啟動后臺運行的容器
docker -d ...
#查看容器日志
docker logs [-f] [-t] [–tail] name|id
-f –follows=true | false,默認是false,顯示更新
-t –timestamps=true | false,默認是false,顯示時間戳
–tail=“all” | 行數(shù),顯示最新行數(shù)的日志
#查看容器內(nèi)進程
docker top name|id
鏡像操作
#查詢鏡像
#docker search name [options]
–automated=false,僅顯示自動化構建的鏡像
–no-trunc=false,不以截斷的方式輸出
–filter,添加過濾條件
#拉取鏡像
docker pull [OPTIONS] NAME [:TAG]
-a,–all-tags=false,下載所有的鏡像(包含所有TAG)
#推送鏡像
docker push [OPTIONS] NAME [:TAG]
#列出鏡像
docker images [OPTIONS] [REPOSITORY]
-a,–all=false,顯示所有鏡像
-f,–filter=[],顯示時過濾條件
–no-trunc=false,指定不使用截斷的形式顯示數(shù)據(jù)
-q,–quiet=false,只顯示鏡像的唯一id
#查看鏡像
docker inspect [OPTIONS] CONTAINER|IMAGE [CONTAINER|IMAGE]
-f,–format=“”
#構建鏡像
構建docker鏡像,可以保存對容器的修改,并且再次使用。構建鏡像提供了自定義鏡像的能力,以軟件的形式打包并分發(fā)服務及其運行環(huán)境。Docker中提供了兩種方式來構建鏡像:
- 通過容器構建:docker commit
- 通過Dockerfile: docker build
1. 使用commit命令構建鏡像
命令:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
參數(shù):-a,–author=“”,指定鏡像的作者信息
-m,–message=“”,提交信息
-p,–pause=true,commit時是否暫停容器
ccs-iMac:~ cc$ docker commit -a 'hxl' -m 'test commit an image' reverent_allen web
sha256:464ca63bbb182e5d7fd2809da1dcb6942484ece7b89e242ecaabdb9c8d5552
2.使用Dockerfile文件構建鏡像
Docker允許我們利用一個類似配置文件的形式來進行構建自定義鏡像,在文件中可以指定原始的鏡像,自定義鏡像的維護人信息,對原始鏡像采取的操作以及暴露的端口等信息。比如:
Sample Dockerfile
FROM ubuntu:16.04
MAINTAINER wgp "[email protected]"
RUN apt-get update
RUN apt-get install -y nginx
EXPOSE 80
命令:docker build [OPTIONS] DockerFile_PATH | URL | -
參數(shù):–force-rm=false
–no-cache=false
–pull=false
-q,quite=false,構建時不輸出信息
–rm=true
-t,tag=“”,指定輸出的鏡像名稱信息
#鏡像遷移
我們制作好鏡像,一般要分享給別人。Docker提供了幾種遷移的方式,但是常用的一般有兩種:
1.使用registory 來分享,可選Docker HUb 和私有倉庫
2.docker load 和docker save 來打包分享
倉庫操作
倉庫一般就是Dokcer Hub 和私有自建registry 至于如何自建私有倉庫,本篇就不敘述了。
網(wǎng)頁題目:docker學習02-docker基礎
當前路徑:http://fisionsoft.com.cn/article/gepdcc.html