Docker学习三:镜像

转载:
http://blog.itpub.net/31556785/viewspace-2564295/
https://blog.csdn.net/huangjun0210/article/details/85764357

1. 镜像管理

在这里插入图片描述

(1) 镜像搜索(docker search)
  • 在搭建项目环境的时候我们可以通过检索docker官方为我们提供的镜像云仓库,查看是否已经有别人构建好的镜像,可以拉取下来直接使用。
  • 命令格式:docker search [参数] 搜索项
  • 常用参数:
	-f 根据提供的格式筛选结果
	--limit int 展示最大的结果数,默认为25

在这里插入图片描述

(2) 镜像下载(docker pull)
  • 根据项目需求挑选心仪的镜像,我们就可以把它下载下来。
  • 命令格式:docker pull [参数] 镜像名称[:版本号]

注意:这里版本号没有指定,默认下载最新版本的镜像,例如 Ubuntu 最新的镜像版本为18.04,你想下载16.04的版本就可以使用 docker pull ubuntu:16.04下载指定版本

(3) 镜像查看(docker images / doker image ls)
  • 上一步我们下载了心仪的镜像,如何确定镜像下载成功了呢?我们可以使用docker images / doker image ls查看本地镜像
  • 命令格式:
    docker images [参数] [仓库名[版本号]]
    docker image ls [参数] [仓库名[版本号]]
  • 常用参数:
	-a 展示所有的镜像
	-q 只展示镜像ID

在这里插入图片描述

(4) 镜像删除(docker rmi / docker image rm)
  • 命令格式:
    docker rmi [参数] 镜像名[镜像名…] – 可以同时删除一个或多个本地镜像
  • 常用参数:
	-f 强制删除

在这里插入图片描述

(5) 镜像保存备份(docker save)
  • 命令格式:
    docker save [参数] 镜像名[镜像名…] | 镜像ID[镜像ID…] – 可以打包一个或多个镜像保存成本地tar文件

  • 常用参数:

	- o 指定写入的文件名和路径,默认为STDOUT

注意:导出时建议指定镜像的名称最好不要使用镜像ID,否则备份导入时镜像名称与版本号会显示none

在这里插入图片描述

(6) 镜像备份导入(docker load)
  • 命令格式:docker load [参数]

  • 常用参数:

	- i 指定要导入的文件默认为STDIN

在这里插入图片描述

(7) 镜像重命名(docker rename)

如果很不幸,你在镜像导出时选择的是镜像ID导出,那么你可以使用rename重命名那些信息显示不全的镜像

  • 命令格式:docker rename [源镜像] [新镜像]
(8) 镜像历史信息(docker history)

这个命令在之后使用Dockerfile创建docker镜像时会经常用到,我们可以使用这个命令查看镜像在之前的更改操作。

  • 命令格式:docker history [参数] 镜像
    在这里插入图片描述
(9) 镜像详细信息(docker image inspect)
  • 命令格式:
    docker image inspect [参数] 镜像 [镜像…]
    docker inspect [参数] 镜像 [镜像…]
  • 命令参数:
 	-f 利用特定Go语言的format格式输出结果

注意:我们不带参数的使用docker inspect 会打印长串的信息(标准的json格式),所以推荐使用 -f 参数查看指定的信息

-f 参数使用的简单实例:
在这里插入图片描述
在这里插入图片描述

2. 构建镜像

构建Docker镜像有以下两种方法:

  • 使用docker commit命令。
  • 使用Dockerfile 文件。
    不推荐使用docker commit来构建镜像,而应该使用更灵活、更强大的Dockerfile来构建Docker镜像。

docker commit 构建镜像可以想象为是在往版本控制系统里提交变更。我们先创建一个容器,并在容器里做出修改,就像修改代码一样,最后再将修改提交为一个镜像。

(1) docker commit命令创建镜像
[root@eshop-cache05 ~]# docker run -i -t centos /bin/bash
[root@013c7cd152f0 /]# lsof -i:8080
bash: lsof: command not found
[root@013c7cd152f0 /]# yum install lsof

我们启动了一个容器,并在里面安装了lsof。使用docker commit命令创建镜像,需要先使用exit命令从容器里退出,之后再运行docker commit命令:

[root@eshop-cache05 ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
013c7cd152f0        centos              "/bin/bash"         7 minutes ago       Exited (1) 13 seconds ago                       quizzical_swartz

[root@eshop-cache05 ~]# docker commit 013c7cd152f0 test/centos-lsof
sha256:9b132f56464faad7794451276ef13e0e46a15bc05154ee15ddb170479994de43

[root@eshop-cache05 ~]# docker images test/centos-lsof
REPOSITORY          TAG                 IMAGE ID            CREATED              SIZE
test/centos-lsof    latest              9b132f56464f        About a minute ago   272MB

在使用docker commit命令中,指定了要提交的修改过的容器的ID(可以通过docker ps命令得到刚创建的容器ID),以及一个目标镜像仓库和镜像名,这里是test/centos-lsof。需要注意的是,docker commit提交的只是创建容器的镜像与容器的当前状态之间有差异的部分,这使得该更新非常轻量。通过docker images 可以查看新创建的镜像信息。

(2) Dockerfile 文件创建镜像
[root@eshop-cache05 opt]# mkdir centos-lsof
[root@eshop-cache05 opt]# cd centos-lsof/
[root@eshop-cache05 centos-lsof]# vim Dockerfile

创建一个名为centos-lsof的目录用来保存Dockerfile,这个目录就是我们的构建环境(build environment),Docker则称此环境为上下文(context)或者构建上下文(build context)。Docker会在构建镜像时将构建上下文和该上下文中的文件和目录上传到Docker守护进程。这样Docker守护进程就能直接访问你想在镜像中存储的任何代码、文件或者其他数据。这里我们还创建了一个Dockerfile文件,我们将用它构建一个能作为Web服务器的Docker镜像。
Dockerfile文件内容如下:

FROM centos
RUN yum install -y lsof

执行docker build命令时,Dockerfile中的所有指令都会被执行并且提交,并且在该命令成功结束后返回一个新镜像。

[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof" .
Sending build context to Docker daemon  2.048kB
Step 1/2 : FROM centos
 ---> 1e1148e4cc2c
Step 2/2 : RUN yum install -y lsof
 ---> Running in 608dfe9f6ee5
 ...
Successfully built e713f53bf3cf
Successfully tagged hj/centos-lsof:latest
  • -t选项为新镜像设置了仓库和名称,这里仓库为hj,镜像名为centos-lsof。
  • 命令中最后的“.”告诉Docker到当前目录中去找Dockerfile文件。也可以指定一个Git仓库地址来指定Dockerfile的位置,这里Docker假设在Git仓库的根目录下存在Dockerfile文件。
[root@eshop-cache05 centos-lsof]# docker build -t="hj/centos-lsof"  [email protected]:hj/centos-lsof

构建成功可以通过docker images查看

[root@eshop-cache05 centos-lsof]# docker images hj/centos-lsof 
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
hj/centos-lsof      latest              e713f53bf3cf        5 minutes ago       272MB
3. 发布镜像

具体查看转载博客:
https://blog.csdn.net/huangjun0210/article/details/85764357
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章