Docker镜像

一、获取镜像

拉取:docker name:tag

D:\docker_test>docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
284055322776: Pull complete
Digest: sha256:0fedbd5bd9fb72089c7bbca476949e10593cebed9b1fb9edf5b79dbbacddd7d6
Status: Downloaded newer image for ubuntu:18.04
docker.io/library/ubuntu:18.04

如果不指定tag,则默认会选择latest镜像,这会下载仓库中最新的镜像。

D:\docker_test>docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu
7b1a6ab2e44d: Pull complete
Digest: sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Status: Downloaded newer image for ubuntu:latest
docker.io/library/ubuntu:latest

默认是从官方仓库拉取镜像,如果是从非官方仓库下载,则需要仓库名称前指定完整的仓库地址

docker pull hub.c.163.com/public/ubuntu:18.04

 

二、查看镜像信息

1.列出镜像

D:\docker_test>docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
ubuntu       latest    ba6acccedd29   2 weeks ago   72.8MB
ubuntu       18.04     5a214d77f5d7   4 weeks ago   63.1MB

2.使用tag命令添加镜像标签

D:\docker_test>docker tag ubuntu:latest myubuntu:latest

D:\docker_test>docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
myubuntu     latest    ba6acccedd29   2 weeks ago   72.8MB
ubuntu       latest    ba6acccedd29   2 weeks ago   72.8MB
ubuntu       18.04     5a214d77f5d7   4 weeks ago   63.1MB

添加的镜像ID和原镜像ID一致,实际上只是对原镜像起了个别名

3.使用inspect命令查看详细信息

D:\docker_test>docker inspect ubuntu:18.04

4.使用history命令查看镜像历史

D:\docker_test>docker history ubuntu:18.04
IMAGE          CREATED       CREATED BY                                      SIZE      COMMENT
5a214d77f5d7   4 weeks ago   /bin/sh -c #(nop)  CMD ["bash"]                 0B
<missing>      4 weeks ago   /bin/sh -c #(nop) ADD file:0d82cd095966e8ee7…   63.1MB

 

三、搜索镜像

D:\docker_test>docker search ubuntu

 

四、删除和清理镜像

1.使用标签删除镜像

D:\docker_test>docker rmi myubuntu:latest
Untagged: myubuntu:latest

D:\docker_test>docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ubuntu latest ba6acccedd29 2 weeks ago 72.8MB
ubuntu 18.04 5a214d77f5d7 4 weeks ago 63.1MB

-f:强制删除镜像,即使有容器依赖它。

D:\docker_test>docker rmi ubuntu:18.04 -f

当同一个镜像拥有多个标签时,rmi镜像只会删除该镜像多个标签中的指定标签而已,并不影响镜像文件。

2.使用镜像ID删除镜像

D:\docker_test>docker rmi ba6acccedd29
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:626ffe58f6e7566e00254b638eb7e0f3b11d4da9675088f4781a50ae288f3322
Deleted: sha256:ba6acccedd2923aee4c2acc6a23780b14ed4b8a5fa4e14e252a23b846df9b6c1
Deleted: sha256:9f54eef412758095c8079ac465d494a2872e02e90bf1fb5f12a1641c0d1bb78b

3.清理镜像

使用docker一段时间后,系统会遗留一些临时文件,以及一些没有使用的镜像。可以使用docker image prune命令来进行清理。

D:\docker_test>docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

-a:删除所有无用镜像,不只是临时镜像

-f:强制删除镜像,而不进行确认提示

 

五、创建镜像

创建镜像有三种方法:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。

1.基于已有容器创建

命令:docker [container] commit

参数:-a:作者信息

   -c:提交时候的Dockerfile指令

   -m:提交信息

   -p:提交时暂停容器执行

D:\docker_test>docker run -it ubuntu:18.04 /bin/bash
root@a9e56393e5ed:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr
root@a9e56393e5ed:/# touch
touch: missing file operand
Try 'touch --help' for more information.
root@a9e56393e5ed:/# touch test
root@a9e56393e5ed:/# exit
exit

D:\docker_test>docker commit -m "Added a new file" -a "Docker Newbee"  a9e56393e5ed test:0.1
sha256:483e7efc81d482fd28f252044dab884da3c94c491f68a589d7c499e96f177b7c

D:\docker_test>docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
test         0.1       483e7efc81d4   15 seconds ago   63.1MB
ubuntu       18.04     5a214d77f5d7   4 weeks ago      63.1MB

2.基于本地模板导入

docker import - ubuntu:18.04

3.基于Dockerfile创建

 

六、导出和导入镜像

1.导出镜像

D:\docker_test>docker save -o ubuntu_18.04.tar ubuntu:18.04

Docker镜像

 

 2.导入镜像

D:\docker_test>docker load -i ubuntu_18.04.tar
或
D:\docker_test>docker load < ubuntu_18.04.tar

 

七、上传镜像

D:\docker_test>docker push test:0.1

 

上一篇:docker的安装


下一篇:[LeetCode]1249. 移除无效的括号(字符串,栈)