Docker之镜像管理

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38151011/article/details/90199293

实验二、镜像管理

  • 实验步骤与调试过程以及结果截图

1.拉取镜像

(1)从官方镜像上拉取一个14.04标签的镜像ubuntu:

docker image pull ubuntu:14.04

(2)从私有仓库quay.io上拉取一个latest标签的镜像flannel:

从私有仓库上拉取镜像:

docker pull <私有库ip>:<端口>/ < 镜像repository> :<镜像tag>

sudo docker pull quay.io/coreos/flannel:y0.10.0-amd64

2.搜索镜像

  采用不同的两种方式进行镜像的搜索

  (1)在docker hub网站上搜索https://hub.docker.com搜索镜像名为ubuntu的所有镜像

  (2)在终端下,通过docker命令行方式搜索。

     docker search ubuntu

问题:如何Docker Hub查找所有镜像名包含ubuntu,并且收藏数大于20的镜像

docker search -s 20 ubuntu

上面写的会出现错误。不知道是什么原因。下面的就不会。(应该和网速有关系,网慢的时候就会出现timeout)

3.查看镜像

 (1)列出包含中间层的所有镜像

       sudo docker images -a

  • (2) 列出所有的镜像,并且可以看到完整的ID

docker images -a --no-trunc

(3)Docker inspect,查看镜像的详细信息,包含制作者、适应架构和各层的数字摘要等

可以查看ubuntu镜像的详细信息,并通过-f参数可以快速定位,查看ubuntu镜像的创建时间:

docker inspect ubuntu

 

没有这个镜像,docker inspect ubuntu:14.04

docker inspect -f '镜像创建时间是:{{.Created}}' ubuntu:14.04

4.导出和导入镜像

(1)使用导出镜像(save)操作将镜像保存在本地

(2)使用导入镜像(load)操作,将镜像包加载到本地仓库中

5.发布镜像

(1)首先在dockerhub网站上注册账号

  1. (1)如何把一个镜像发布到docker hub中?请举例说明。

(2)假如在docker hub上,现有用户名为username,但是想要推送一个叫做user/image的镜像到docker hub上,怎么办?

网速太慢,导致登不上去试了好多次都不成功。终于在我的多次尝试之下,登陆成功了。

将镜像发布到docker hub中。

sudo docker push wjj/ubuntu:14.04

时不时的timeout真的是无语,然后就是重复试了好多次,终于把镜像发布上去了。

不过网速可真够差劲的,发布了将近1个小时!!!

6.删除镜像

  (1)第一种删除镜像的方法是docker rmi不加-f,只能删除无tag的镜像,被曾经打过多处tag就无法直接删除,需要先删除tag,删除曾经启动过的容器,最后才能删除镜像。此时,tag可比作引用,image为tag指向的对象。

  (2)加-f可以删除正在使用的镜像。

  (3)如何删除本地全部镜像?

   删除全部容器:docker rm $(docker ps -aq)

   一条命令实现停用并删除容器:docker stop $(docker ps -q)& docker rm $(docker ps -aq)

(4)如果想要删除一个镜像,但是有容器正在使用它,该如何处理?

删除docker中的镜像,我们可以使用如下命令:docker rmi 镜像id

删除docker中的容器可以使用如下命令:docker rm 容器id

使用如下命令可以查看当前正在运行的容器:docker ps

对于已退出的容器,可以使用如下命令进行查看:docker ps -a

7.查看镜像历史

  (1)查看一下ubuntu:14.04镜像的历史,并描述一下

   docker image history ubuntu:14.04

镜像         创建时间       创建者                             大小

8.通过已有镜像ubuntu:14.04启动一个容器,在容器中安装nginx,

用docker commit命令提交新容器为镜像。相关命令如下:

Docker commit [options] container [REPOSITORY[:TAG]]

  1. 使用镜像ubuntu:14.04来启动一个交互式容器commit_test

docker run -it -p 80 --name commit_test ubuntu:14.04 /bin/bash

  1. 在容器内更新apt库,并且安装nginx

apt-get update

apt-get install -y nginx,然后exit退出容器。

  1. 输入命令docker ps -l看到刚刚创建的容器

  1. 把容器commit_test提交为镜像catherine2005/commit_image1,设置镜像作者为catherine,提交修改的内容为nginx

docker commit -a ‘catherine’ -m ‘nginx’ commit_test catherine2005/commit_image1

  1. 查看刚刚创建的镜像信息

docker images

  1. 使用刚刚创建的镜像catherine2005/commit_image1启动一个容器nginx_web1

docker run -d --name  nginx_web1 catherine2005/commit_image nginx -g “daemon off;”(已创建

  1. 查看新创建的容器

docker ps

  1. 使用刚刚创建的镜像catherine2005/commit_image1启动一个容器nginx_web2

docker run -d –name nginx_web2 -p 80 catherine2005/commit_image1 nginx -g “daemon off;”

(9)再次查看容器

docker ps

此时应该可以看到端口映射出49155->80

(10)使用命令来查看index.html网站

curl http://127.0.0.1:49155

或者在浏览器上直接输入http://127.0.0.1:49155 就可以看到index.html网站

9.如何通过新建一个Dockerfile文件来构建一个和题目8一样的新镜像?

主要分为两步

  1. 创建一个dockerfile文件

  1. 使用docker build命令来构建

sudo docker pull ubuntu:14.04

sudo docker pull quay.io/coreos/flannel:v0.10.0-amd64

sudo docker pull quay.io/latest/flannel:v0.10.0-amd64

 

sudo docker search –limit int TERM

sudo docker search –limit 5 TERM

sudo docker search –limit ubuntu

sudo docker search -s 20 ubuntu

sudo docker images --no-trunc

sudo curl -XGEThttp://192.168.217.8:5000/v2/nginx/tags/list

 

  • 疑难小结
  1. 发布镜像的时候,由于网速过慢,结果试了好多次都是timeout
  2. 发布镜像之前需要在DockerHub上注册一个账号,然后用邮箱进行认证一下,如果认证不成功,在命令中是登录不进去的。

猜你喜欢

转载自blog.csdn.net/qq_38151011/article/details/90199293