语句格式:
docker [image] pull name[:tag]
其中
name:为镜像名(用来区分镜像)
tag:是标签(用来区分版本)
[image]:选项可加可不加
举例
从官方库 Docker Hub 获取一个 Ubuntu 18.04 系统的基础镜像可以使用如下的命令:
$ docker pull ubuntu:18.04
18. 04: Pulling from library/ubuntu
...........
Digest: sha256:e27e9d7f7f28d67aa9e2d7540bdc2b33254b452ee8e60f388875e5b7d9b2b696
Satus: Downloaded newer image for ubuntu:18.04
注意:
对于docker镜像不显示指定tag,则会默认选择latest标签,这会下载仓库中最新的版本。
2:从私有库t
如果从非官方的仓库下载,则需要在仓库名称前指定完整的仓库地址。
例如从网易蜂巢的镜像源来下载ubuntu:18.04镜像,可以使用如下命令,此时下载的镜像名称为
hub.c.163 .com/public/ubuntu:18.04:
$ docker pull hub.c.163.com/public/ubuntu:18.04
pull 子命令支持的 选项主要包括:
- -a, --all-ags=true|false: 是否获取仓库中的所有镜像,默认为否;
- -disable-content-trust:取消镜像的内容校验,默认为真。
另外,有时需要使用镜像代理服务来加速Docker镜像获取 过程 ,可以在Docker服务
启动配置中增加 --regis七ry-mirror=proxy_URL来指定镜像代理服务地址(如https://
registry.docker-cn.com)
下载镜像到本地后, 即可随时使用该镜像了, 例如利用该镜像创建一个容器,在其中运行bash应用, 执行打印 "Hello World"命令:
$ docker run -it ubuntu:18.04 bash
root@65663247040f:/# echo "Hello World"
Hello World
root@65663247040f:/# exit
1:列出镜像
$ docker images
或者
$ docker image ls
只查看所有镜像的id:
$ docker images -q
images子命令主要支持如下选项, 用户可以自行进行尝试:
-a, --all true | false: 列出所有(包括临时文件)镜像文件,默认为否;
–digests=true | false: 列出镜像的数字摘要值,默认为否;
-f, --filter=[] : 过滤列出的镜像, 如dangling =true 只显示没有被使用的
镜像;也可指定带有特定标注的镜像等;
–format=“TEMPLATE” : 控制输出格式,如. ID代表ID信息,.Repository
代表仓库信息等;
–no-trunc=true | false: 对输出结果中太长的部分是否进行截断,如镜像的ID
信息,默认为是;
-q, --quiet=true | false: 仅输出ID信息, 默认为否。
2:添加标签
例如添加一个新标签 myubuntu:latest(就是起个别名、起到链接作用)
$ docker tag ubuntu:latest myubuntu:latest
3:使用inspect 查看详细信息
格式:
docker inspect name[:tag]
用途:使用 docker search 命令可以搜索Docker Hub 官方仓库中的镜像。
基本格式
docker search [option] keyword
keyword 为关键字
option为命令选项,支持类型如下:
示例
搜索官方提供的带 nginx关键字的镜像, 如下所示:
$ docker search --filter=is-official=true nginx
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
nginx Official build of Nginx. 11909 [OK]
再比如, 搜索所有收藏数超过 4 的关键词包括 tensorflow 的镜像:
$ docker search --filter=stars=4 tensorflow
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
tensorflow/tensorflow Official docker images for deep learning fra... 760
xblaster/tensorflow-jupyter Dockerized Jupyter with tensorflow 47 [OK]
jupyter/tensorflow-notebook Jupyter Notebook Scientific Python stack w/ ... 46
romilly/rpi-docker-tensorflow Tensorflow and Jupyter running in docker con... 16
floydhub/tensorflow tensorflow 8 [OK]
erroneousboat/tensorflow-pyt.hon3-jupyter Docker container with python 3 version of
te... 8 [OK]
tensorflow/tf_grpc_server Server for TensorFlow GRPC Distributed Runti"· 5
1: 使用标签或者ID删,删除一个或多个,多个之间用空格隔开
格式:
$ docker rmi image [image ... ]
或者
$ docker image rm
#删除所有镜像:
docker rmi $(docker images -q)
其中 IMAGE可以为标签或 ID。
支持选项包括:
prune命令的使用
删除所有未被 tag 标记和未被容器使用的镜像:
$ docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
删除所有未被容器使用的镜像:
$ docker image prune -a
删除所有停止运行的容器:
$ docker container prune
删除所有未被挂载的卷:
$ docker volume prune
删除所有网络:
$ docker network prune
删除 docker 所有资源:
$ docker system prune
1: 基于已有容器创建
容器运行起来后,又在里面做了一些操作,并且要把操作结果保存到镜像里
命令格式:
docker commit [options] 容器ID/名字 镜像名:tag
主要选项包括:
-a, --auther=" ": 作者信息;
-c, - -change=[] : 提交的时候执行Dockerfile指令
-m, - -message= " ": 提交消息;
-p, --pause=true: 提交时暂停容器运行。
示例:
首先 启动一个镜像, 并在其中进行修改操作。 例如, 创建一个test文件, 之后退出,
$ docker run -it ubuntu:18.04 /bin/bash
root@a925cb40b3f0:/# touch test
root@a925cb40b3f0:/# exit
记住容器的 ID 为 a925cb40b3£0。
创建新镜像,提交时可以使用 ID 或名称来指定容器:
$ docker commit -m "new file" -a "wen" a925cb40b3f0 test:0.1
9e9c814023bcffc3e67e892a235afe6lb02f66a947d2747f724bd317dda02f27
-m : 添加注释
-a : 作者
a925cb40b3f0: 容器环境id
-p,–pause=true 提交时暂停容器运行
此时查看本地镜像列表, 会发现新创建的镜像已经存在了:
$ docker images
REPOSITORY TAG IMAGEID CREATED VIRTUAL SIZE
test 0.1 9e9c814023bc 4seconds ago 1 88 MB
2: 基于本地模板导入
用户也可以直接从一个操作系统模板文件导入一个镜像
命令格式为
docker import [选项] 文件地址 新镜像name:tag
-c :应用docker 指令创建镜像;
-m :提交时的说明文字;
从镜像归档文件my_ubuntu_v3.tar创建镜像,命名为runoob/ubuntu:v4
runoob@runoob:~$ docker import my_ubuntu_v3.tar runoob/ubuntu:v4
sha256:63ce4a6d6bc3fabb95dbd6c561404a309b7bdfc4e21c1d59fe9fe4299cbfea39
runoob@runoob:~$ docker images runoob/ubuntu:v4
REPOSITORY TAG IMAGE ID CREATED SIZE
runoob/ubuntu v4 63ce4a6d6bc3 20 seconds ago 142.1 MB
3: 基于dockerdfile创建
使用 Dockerfile 的技巧将将在后面进行介绍
1: 导出
格式:
$ docker save [选项] [导出名.tar] [原镜像ID/名字]
该命令支持
例如,导出本地的 ubuntu:lS.04 镜像为文件 ubuntu .18.04.tar ,如下所
$ docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 18.04 0458a4468cbc 2 weeks ago 188 MB
....
$ docker save -o ubuntu.18.04.tar ubuntu:18.04
之后,用户就可以通过复制 ubuntu 18.04.tar 文件将该镜像分享给他人
2: 载入
可以将导出的tar包再导入到镜像库
格式
$ docker load
支持 -i、-input string 选项
例如,从文件 ubuntu 18.04.tar 导入到本地镜像列表,如下所示:
$ docker load -i ubuntu_18.04.tar
或者
$ docker load < ubuntu_18.04.tar
这将导人镜像及其相关的元数据信息(包括标签等) 导人成功后,可以使用 docker images 令进行查看与原镜像一致。
上传镜像到仓库,默认上传到 Docker Hub 官方仓库(需要登录)
命令格式为
docker push name [:TAG]
例如,用户 user 上传本地的 test :latest 镜像,可以先添加新的标签 user/test:latest 然后 docker [image ] push 令上传镜像
$ docker tag test:latest user/test:latest
$ docker push user/test:latest
The push refers to a repository [docker.io/user/test]
Sending image list
Please login prior to push:
Username :
Password:
Email :
第一次上传时,会提示输入登录信息或进行注册,之后登录信息会记录到本地~ /.docker目录下