平时学习总结,闲着无聊的时候看一眼,混个印象。
==可以通过 man docker-xxx 来查看一个docker命令的详细解释==
- 从镜像源拉取镜像
docker [image] pull NAME[:TAG]
例如:
docker pull ubuntu:18.04
<!--
严格意义上,镜像的仓库名称还要加上仓库地址。
如果没有指定,就从默认的注册服务器Docker Hub Registry中拉去。
如果从非官方下载,你可以指定完整的仓库地址
-->
docker pull hub.c.163.com/public/ubuntu:18.04
<!-- 常用options -->
-a,-all-tags=true|false : 是否拉去所有的tag默认false
--disable-content-trust : 取消镜像内容校验,默认为true
描述一个镜像要通过“NAME+TAG”的方式,如果不显示指定则默认为latest标签。
一般来说lastest标签意味着它会找最新版本的镜像,内容是不稳定的。因此生产环境,应该避免使用。镜像文件一般由若干层(layer)组成,每一层都会有一个64位16进制字符组成的id,不同镜像包括相同层时,这个层只会存储一份,来减少存储空间。为了加速镜像获取,可以通过--registry-mirror=proxy_url来指定镜像代理服务器地址(如:https://registry.docker-cn.com)
- 列出本地已有镜像
docker images
<!-- 常用options -->
-a,-all=true|false : 列出所有镜像文件(包括临时的),默认false
--digests=true|false : 列出镜像的数字摘要值,默认false
-f,--filter=[]:过滤列出将星,例如dangling=true 过滤掉悬虚镜像 只显示没有被使用的镜像,也可指定带有特定标注的镜像等。
--no-trunc=true|false :对于结果中太长的部分是搜进行截取,默认为是
-q,--quiet=true|false : 仅输出ID信息,默认为否
docker image ls
<!--只返回悬虚(dangling)镜像-->
docker image ls --filter dangling=true
镜像信息解释
- REPOSITORY(仓库):如ubuntu标示ubuntu系列的基础镜像
- TAG(镜像的标签信息)
- IMAGE ID(镜像ID):如果两个镜像的ID相同,则说名他们实际是一个镜像,只是具有不同的标签
- CREATED(创建时间)
- SIZE(镜像大小)
- 给镜像增加标签
docker tag [原] [新增]
<!--举例-->
docker tag ubuntu:latest myubuntu:latest
增加标签后,列出本地已有镜像,可以发现会有一个“新的镜像”。之所以把“新的镜像”引起来,是因为它和原tag的镜像的ID是一样,它们两个指向同一个镜像。
- 查看镜像详情
详细信息,包括了作者、适应架构、各层的数字摘要等。
docker [image] inspect ubuntu:18.04
<!--如果只想看其中一项内容时,可以通过如下操作-->
docker [image] inspect -f {{".Architecture"}} ubuntu:18.04
- 在Docker Hub官方仓库中搜寻镜像
docker search [option] keyword
<!--例如,搜索官方提供的带有nginx关键字的镜像-->
docker search --filter=is-official=true nginx
<!--搜索所有收藏数超过4的-->
docker search --filter=stars=4 tensorflow
<!--常用options-->
-f,--filter filter:过滤输出内容
--format string: 格式化输出内容
--limit int: 限制输出结果个数,默认25个
--no-trunc: 不截断输出结果
- 删除镜像
docker rmi [NAME:TAG]|[IMAGEID]
docker image rm
<!--常用options-->
-f,-force:强制删除镜像,即使有容齐依赖它
-no-prune:不清理未带标签的父镜像
如果一个镜像有多个标签是,删除命令只会删除指定的标签而已,并不会影响镜像文件。只有在镜像只剩下一个标签的时候才会删除一个镜像。当docker rmi命令,后面跟上镜像ID时,会尝试删除所有指向该镜像的标签,然后删除该镜像文件本身。
- 清理镜像
Docker使用一段时间之后,就会遗留一些临时的镜像文件,以及没有被使用的镜像。比如说:悬虚镜像(dangling),当你给一个镜像命名时,正好已经存在的一个镜像也使用了这个名字,已经存在的镜像名字就变成了<none>:<none>。
docker image prune
<!--移除全部的悬虚镜像-->
docker image prune
<!--除了悬虚镜像,还会而外移除没有任何容器使用的镜像-->
docker image prune -a
<!--支持的options-->
-a,-all: 删除所有无用镜像,不光是临时镜像。
-filter filter: 只清理符合给定过滤器的镜像。
-f,force: 强制删除镜像,而不进行提示确认。
- 创建镜像
方式1:基于一个已有容器创建
docker [container] commit [options] CONTAINER [REPOSITORY[:TAG]]
<!--
提交一个test:0.1的镜像到默认仓库,指明作者和信息,容器可以通过容器id和容器名称来指定
创建成功会返回一个64位16进制的镜像ID信息
-->
docker [container] commit -m "new file" -a "GHH" CONTAINERID test:0.1
<!--支持的options-->
-a,--author="": 作者信息
-c,--change=[]: 提交的时候执行Dockerfile指令,包括CMD|ENTRYPOINT|ENV|EXPOSE|LABEL|ONBUILD|USER|VOLUME|WORKDIR等
-m,--message="": 提交消息
-p,--pause=true: 提交时暂停容器运行
方式2:基于本地模版倒入导入
可以从一个操作系统模版文件导入成一个镜像
docker [image] import [options] file|URL|- [REPOSITORY[:TAG]]
<!--下载ubuntu-18.04的模版压缩包-->
cat ubuntu-18.04-x86-64...tar.gz | docker improt - ubuntu:18.04
方式3:基于Dockerfile创建
Dockerfile是一个镜像的描述文件,指明了基于某个父镜像创建新镜像的过程。
docker [image] build -t [NAME:TAG]
docker [image] build -t python:3
- 存出和载入镜像
<!--存储-->
docker [image] save
docker save -o ubuntu_18.04.tar ubuntu:18.04
<!--支持options-->
-o,-output string: 导出镜像到指定的文件中
<!--加载-->
docker [image] load
docker load -i ubuntu_18.04.tar
docker load < ubuntu_18.04.tar
<!--支持options-->
-i,.-input string
- 上传镜像
上传镜像到仓库,默认上传到Docker Hub官方仓库
docker [image] push
docker [image] push NAME[:TAG] | [REGISTRY_HOST[:REGISTRY_PORT]/]NAME[:TAG]
docker push user/test:latest
第一次上传时,会提示输入登陆信息或进行注册,之后登陆信息会记录到本地~/.docker目录下
网友评论