理解幾個(gè)概念
鏡像(Image)
鏡像就是我們平常理解的鏡像文件,主要是一些官方的linux發(fā)行版系統(tǒng)(CentOS/Ubuntu等)、別人打包上傳的文件。下面的IAMGE ID就是一個(gè)鏡像的唯一標(biāo)識(shí),代表著一個(gè)鏡像文件。
REPOSITORY TAG IMAGE ID CREATED SIZE
centos <none> e934aafc2206 7 weeks ago 199MB
倉(cāng)庫(kù)(Repository)
倉(cāng)庫(kù)就是鏡像的版本管理倉(cāng)庫(kù),下面的第一列就是倉(cāng)庫(kù),可以看出一個(gè)鏡像如果發(fā)展成多個(gè)版本了,可以用引入了倉(cāng)庫(kù)(倉(cāng)庫(kù)標(biāo)識(shí)+Tag)來(lái)管理每一個(gè)版本。和Git管理代碼倉(cāng)庫(kù)有點(diǎn)類似。
REPOSITORY TAG IMAGE ID CREATED SIZE
gene_centos v1 d2f69ca9554d 2 hours ago 3.19GB
gene_centos v2 d2f69ca9554d 2 hours ago 3.38GB
new_gene_centos v1 d2f69ca9554d 2 hours ago 3.14GB
容器(Container)
運(yùn)行一個(gè)倉(cāng)庫(kù)中的鏡像后就是一個(gè)容器。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f736f9ee456 d2f69ca9554d "/usr/sbin/init" 9 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp, 8081/tcp mystifying_perlman
基本管理
Docker服務(wù)管理
啟動(dòng)docker
$ systemctl status docker
重啟docker
$ systemctl daemon-reload
$ systemctl restart docker
修改啟動(dòng)參數(shù)
$ vim /usr/lib/systemd/system/docker.servicec # 在ExecStart后增加選項(xiàng)參數(shù)
驗(yàn)證
$ docker info
鏡像管理
查看所有鏡像
$ ps images
拉取/推送鏡像
- 拉?。ㄏ螺d)遠(yuǎn)程鏡像
Docker Hub:https://hub.docker.com/
$ docker pull [OPTIONS] NAME[:TAG|@DIGEST] [flags] # 命令格式
$ docker pull centos:7.2.1511 # 從Docker Hub下載REPOSITORY為centos的所有鏡像。
$ docker pull -a dszkng/centos7 # 下載REPOSITORY為"dszkng/centos7"的所有鏡像
- 推送(上傳)鏡像到遠(yuǎn)程
鏡像的管理方式非常像Git,可以使用docker push命令上傳自己本地鏡像到倉(cāng)庫(kù),默認(rèn)上傳到DockerHub官方倉(cāng)庫(kù)(需要登陸)。
$ docker push image_name[:tag_name] # 命令格式
$ docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG] # 命令格式
$ docker tag centos dszkng/centos7 # 在上傳之前一般會(huì)先為自己的鏡像添加帶自己名字(作者信息)的標(biāo)簽
$ docker push dszkng/centos7 # 上傳鏡像
導(dǎo)入/導(dǎo)出到鏡像
- 導(dǎo)入容器(基于本地模板)
$ docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]] [flags] # 命令格式
$ docker import /tmp/images/centos.tar dszkng/centos7:v1
- 導(dǎo)出(持久化)容器
$ docker export [OPTIONS] CONTAINER [flags] # 命令格式
$ docker export 1f736f9ee456 > /tmp/images/centos.tar
存出/載入鏡像
- 存出鏡像(保存鏡像到本地文件)
$ docker save -o /tmp/images/centos.tar d2f69ca9554d # 指定image_id
$ docker save -o /tmp/images/centos.tar centos # 指定鏡像名稱
- 載入鏡像(加載本地鏡像文件)
$ docker load --input /tmp/images/centos.tar
$ docker load < /tmp/images/centos.tar # 簡(jiǎn)化寫法
創(chuàng)建/刪除鏡像
- 創(chuàng)建鏡像
三種方法:基于已有鏡像的容器創(chuàng)建、基于本地模板導(dǎo)入、基于Dockerfile創(chuàng)建。
- 基于已有鏡像的容器創(chuàng)建
$ docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]] # 命令格式
主要參數(shù)選項(xiàng)包括:
-a:–author="" 作者信息
-m:–message="" 提交信息
-p:–pause=true 提交是暫停容器運(yùn)行
$ docker commit –m "test" –a "dszkng" d8990fec2141 my-centos7-image
基于本地模板導(dǎo)入
上面有介紹。基于
Dockerfile創(chuàng)建
暫時(shí)不介紹。
- 刪除鏡像
$ docker rmi repository:tag # 第一步:先刪除鏡像的使用倉(cāng)庫(kù)
$ docker rmi image_id # 第二步:刪除鏡像
容器管理
- 查看正在運(yùn)行的容器
? / docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f736f9ee456 d2f69ca9554d "/usr/sbin/init" 9 seconds ago Up 19 seconds 0.0.0.0:80->80/tcp, 8081/tcp mystifying_perlman
- 查看所有運(yùn)行過(guò)的容器
? / docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1f736f9ee456 d2f69ca9554d "/usr/sbin/init" 4 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp, 8081/tcp mystifying_perlman
5d0630b78be7 0fccf9c0af91 "/usr/sbin/init" 44 hours ago Exited (137) 2 hours ago thirsty_snyder
cfc693c4aed8 ef1a371e7cf4 "/usr/sbin/init" 46 hours ago Exited (137) 44 hours ago heuristic_kirch
- 啟動(dòng)容器
docker run
- 進(jìn)入一個(gè)正在運(yùn)行的容器
docker exec
- 停止容器
docker stop
- 刪除容器
docker rm container_id
附錄: