使用docker镜像
作者:互联网
1、获取镜像
格式:
docker [image] pull NAME[:TAG]
其中,NAME是镜像仓库名称(用于区分镜像),TAG是镜像的标签(往往用来表示版本信息)。通常情况下,描述一个镜像需要包括”名称+标签”信息。示例:
docker pull ubuntu:18.04
2、查看镜像
docker images 或 docker image ls
images子命令只要支持如下选项:
- -a,--all-true | false:列出所有(包括临时文件)镜像文件,默认为否;
- --digests=true|false:列出镜像的数字摘要值,默认为否;
- -f,--filters=[]:过滤列出的镜像,如dangling=true只显示没有被使用的镜像,也可知道带有特定标注的镜像等。
示例:
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 3 months ago 1.24MB
ubuntu latest ba6acccedd29 5 months ago 72.8MB
在列出信息中,可以看到以下几个字段信息:
- REPOSITORY:来自于哪个仓库,比如Ubuntu表示Ubuntu系列的基础镜像
- TAG:比如latest表示不同的版本信息,标签只是标记,并不能标识镜像内容
- IMAGE ID:唯一标识镜像,如果两个镜像的ID相同,说明它们实际上指向了同一个镜像,只是具有不同的标签名称而已
- CREATED:创建时间,说明镜像最后的更新时间
- SIZE:镜像大小,优秀的镜像往往提交都较小。
3、搜寻镜像
docker search [option] keyword
支持的命令选项主要包括:
- -f,--filter filter:过滤输出内容
- --format string:格式化输出内容
- --limit int:限制输出结果个数,默认为25个
- --no-trunc:不截断输出结果
示例:
#搜索官方提供的带nginx关键字的镜像
[root@aliyun ~]# docker search --filter=is-official=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 16577 [OK]
#搜索所有收藏数超过4的关键字包括tensorflow的镜像
[root@aliyun ~]# docker search --filter=stars=4 tensorflow
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tensorflow/tensorflow Official Docker images for the machine learn… 2003
tensorflow/serving Official images for TensorFlow Serving (http… 121
bitnami/tensorflow-serving Bitnami Docker Image for TensorFlow Serving 20 [OK]
tensorflow/syntaxnet Official docker images for running DRAGNN/Sy… 12
tensorflow/tf_grpc_server Server for TensorFlow GRPC Distributed Runti… 8
armswdev/tensorflow-arm-neoverse-n1 Please use "armswdev/tensorflow-arm-neoverse" 8
ibmcom/tensorflow-ppc64le Community supported ppc64le docker images fo… 6
tensorflow/tfx 6
tensorflow/tf_grpc_test_server Testing server for GRPC-based distributed ru… 4
intel/intel-optimized-tensorflow Containers with TensorFlow* optimized with o… 4
4、删除镜像
使用docker rmi或docker image rm命令可以删除镜像,格式为:
docker rmi IMAGE [IMAGE...]
其中IMAGE可以使标签或ID,支持的选项包括:
- -f,-force:强制删除镜像,即使有容器依赖它
- -no-prune:不要清理未带标签的父镜像
示例:
使用镜像标签删除镜像
#删除ubuntu:latest镜像
#删除前
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 3 months ago 1.24MB
ubuntu latest ba6acccedd29 5 months ago 72.8MB
ubuntu 18.04 5a214d77f5d7 6 months ago 63.1MB
[root@aliyun ~]# docker rmi ubuntu:18.04
Untagged: ubuntu:18.04
Untagged: ubuntu@sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6
Deleted: sha256:5a214d77f5d747e6ed81632310baa6190301feeb875cf6bf9da560108fa09972
Deleted: sha256:824bf068fd3dc3ad967022f187d85250eb052f61fe158486b2df4e002f6f984e
#删除后
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 3 months ago 1.24MB
ubuntu latest ba6acccedd29 5 months ago 72.8MB
注:当镜像只剩下一个标签的时候,再使用docker rmi命令会彻底删除镜像
使用镜像ID删除镜像
[root@aliyun ~]# docker rmi ba6acccedd29
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Deleted: sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1
Deleted: sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b
注:当使用镜像ID的方式来执行docker rmi删除动作时,会先尝试删除所有只想该镜像的标签,然后再删除该镜像文件本身
5、创建镜像
5.1、基于已有容器创建
使用docker [contrainer] commit 命令,格式为:
docker [container] commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
主要选项包括:
-a,--author=””:作者信息
-c,--change=[]:提交的时候执行dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等
-m,--message="":提交消息
-p,--pause=true:提交时暂停容器运行
示例:
[root@aliyun ~]# docker run -it busybox:latest
~ # pwd
/root
~ # touch test.txt
~ # exit
使用commit命令创建镜像
#查看容器ID
[root@aliyun ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
4a9bdcdb2e25 busybox:latest "sh" 2 minutes ago Exited (0) About a minute ago sharp_rosalind
#创建镜像
[root@aliyun ~]# docker commit -m "Add a test.txt" -a "Torres" 4a9bdcdb2e25 test:0.1
sha256:516006855d21e2afef59462dfeb0c0ec49a84fa0d8ac4f8d1d97df98decc9110
#查看镜像
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 516006855d21 7 seconds ago 1.24MB
busybox latest beae173ccac6 3 months ago 1.24MB
wordpress latest c3c92cc3dcb1 3 months ago 616MB
node latest a283f62cb84b 3 months ago 993MB
#验证
[root@aliyun ~]# docker run -it test:0.1
/ # pwd
/
/ # cd
~ # pwd
/root
~ # ls
test.txt
~ #
5.2、使用Dockerfile创建
示例:
FROM node
MAINTAINER Taolei
RUN git clone -q https://github.com/docker-in-practice/todo.git
WORKDIR todo
RUN npm install > /dev/null
EXPOSE 8000
CMD ["npm","start"]
6、存出和载入镜像
6.1、存出镜像
如果需要导出镜像到本地,可使用docker [image] save命令。该命令支持-o、-output string参数,导出镜像到指定文件中。
例如,将busybox镜像导出为文件busybox.tar
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 3 months ago 1.24MB
wordpress latest c3c92cc3dcb1 3 months ago 616MB
node latest a283f62cb84b 3 months ago 993MB
[root@aliyun ~]# docker save -o busybox.tar busybox:latest
[root@aliyun ~]# ll
总用量 1444
-rw------- 1 root root 1468416 4月 7 09:42 busybox.tar
drwxr-xr-x 3 root root 4096 4月 2 10:38 interview
drwxr-xr-x 2 root root 4096 3月 24 15:04 tools
6.2、载入镜像
可使用docker [image] load将导出的tar文件再导入到本地镜像库。支持-i、-input string选项,从指定文件中导入镜像内容。示例
#先删除原有镜像
[root@aliyun ~]# docker rmi -f busybox:latest
Untagged: busybox:latest
Untagged: busybox@sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Deleted: sha256:beae173ccac6ad749f76713cf4440fe3d21d1043fe616dfbe30775815d1d0f6a
#验证是否删除成功
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
wordpress latest c3c92cc3dcb1 3 months ago 616MB
node latest a283f62cb84b 3 months ago 993MB
#导入镜像
[root@aliyun ~]# docker load -i busybox.tar
Loaded image: busybox:latest
#验证效果
[root@aliyun ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
busybox latest beae173ccac6 3 months ago 1.24MB
wordpress latest c3c92cc3dcb1 3 months ago 616MB
node latest a283f62cb84b 3 months ago 993MB
7、上传镜像
可使用docker [image] push命令上传镜像到仓库,默认上传到docker hub官方仓库(需登陆)。命令格式为:
docker [image] push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
示例,用户上传本地的test:0.1镜像
[root@aliyun ~]# docker tag test:0.1 user/test:0.1
[root@aliyun ~]# docker push user/test:0.1
The push refers to a repository [docker.io/user/test]
Sending image list
Please login prior to push:
Username:
Password:
Email:
首次上传时,会提示输入登陆信息或进行注册,之后登陆信息会记录到本地~/.docker目录下。
标签:ago,aliyun,使用,镜像,docker,root,latest 来源: https://www.cnblogs.com/Torres-tao/p/16110910.html