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目录下。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律