Docker之镜像

1、镜像

镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容包括代码、运行时、库、环境变量和配置文件。

镜像由多个层组成,每层叠加之后,从外部看来就如一个独立的对象。镜像内部是一个精简的操作系统(OS),同时还包含应用运行所必须的文件和依赖包。

2、镜像相关命令

2.1、查看镜像列表(docker images)

docker images 命令列出本地主机上的镜像:

上面可以看到只有一个 hello-world 的镜像。

上面的各个选项说明:

  • REPOSITORY:表示镜像的仓库源

  • TAG:镜像的标签

  • IMAGE ID:镜像ID

  • CREATED:镜像创建时间

  • SIZE:镜像大小

同一仓库源可以有多个 TAG,代表这个仓库源的不同个版本,如 ubuntu 仓库源里,有 12.10、14.04 等多个不同的版本,我们使用 REPOSITORY:TAG(比如:tomcat:3.2 )来定义不同的镜像。如果不指定一个镜像的版本标签,docker 将默认使用该镜像的 latest ,即最新镜像。

也可以通过直接查看某个镜像:docker images 镜像名,示例:

2.2、搜索镜像(docker search)

我们可以通过浏览 Docker Hub 网站来搜索镜像,也可以使用 docker search 命令来搜索镜像。

比如我们搜索 tomcat 镜像:

可以发现,第一个就是我们想要找的 tomcat 镜像。

2.3、获取镜像(docker pull)

当我们在本地主机上直接通过 run 来使用一个不存在的镜像时,Docker 会自动下载这个镜像。当然,我们也可以通过 docker pull 命令来手动下载它。

docker pull tomcat   #默认下载最新版本,等价于 docker pull tomcat:latest

如果我们在下载或者使用时不指定版本,则默认使用的是最新版本。

当然,我们也可以下载指定版本的镜像,直接在冒号后面加上版本号即可:

docker pull tomcat:3.2

2.4、删除镜像(docker rmi)

镜像删除使用 docker rmi 命令,比如我们删除 hello-world 镜像:

docker rmi hello-world  
docker rmi -f hello-world  #强制删除
 
docker rmi hello-world tomcat   #要想同时删除多个只需用空格分开镜像名称即可
docker rmi $(docker images -qa) #删除全部镜像

2.5、创建镜像

2.5.1、基于原有的镜像创建新镜像(docker commit)

我们可以基于现有的在运行的容器来做些修改,然后通过 docker commit 命令来将修改后的容器构建成一个镜像。语法如下:

docker commit -m="描述信息" -a="作者名" 容器ID 镜像名:标签

#示例
docker commit -m="mytomcat" -a="wen" 85f874987777 wen/wentomcat:1.0   # wen/是命名空间,不用命名空间也行。镜像名不能有大写字母

比如我们先运行一个 tomcat 容器,然后将该容器的 webapps.dist 文件夹内容复制到 webapps 下,修改过后通过 docker commit 命令将修改过后的容器构建成一个新的镜像:

由此我们就可以看到在本地已经有我们新创建的镜像了:

下面运行该镜像:

上面我们通过将宿主机的 7777 端口映射到新的 tomcat 镜像的 8080 端口上运行,我们可以通过访问宿主机的 ip:7777 来访问 tomcat 的默认项目的首页:

2.5.2、通过dockerfile创建镜像

docker build 命令可用于从Dockerfile构建映像。

语法结构如下:

docker build -f 本地dockerfile文件绝对路径 -t 镜像名 .    #最后的 . 不要漏掉,表示Dockerfile 文件所在目录,可以指定Dockerfile 的绝对路径

#示例
docker build -f /usr/data/Dockerfile -t mycentos:1.0 .
原文地址:https://www.cnblogs.com/wenxuehai/p/15153766.html