欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

docker三大组件---镜像

程序员文章站 2024-01-28 22:01:34
...

1、 Docker 的三大组件之镜像。

Docker 运行容器前需要本地存在对应的镜像,如果镜像不存在本地,Docker 会从镜像仓库下载(默认是
Docker Hub 公共注册服务器中的仓库)。

  • 从仓库获取镜像;
  • 管理本地主机上的镜像;
  • 介绍镜像实现的基本原理。

1.1获取镜像docker pull指令

我们从 Docker Hub 仓库下载一个 Ubuntu 12.04 操作系统的镜像。

#上一篇博客有说到,获取一个镜像。
 [root@bfd-v7 ~]# docker pull ubuntu:12.04

1.2列出所有的镜像,docker images指令

docker images

docker三大组件---镜像

在列出信息中,可以看到几个字段信息:

  • 来自于哪个仓库,比如 ubuntu
  • 镜像的标记,比如 14.04
  • 它的 ID 号(唯一)
  • 创建时间
  • 镜像大小

1.3创建镜像

创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一
个。

1.3.1、根据已有的nginx的镜像生成一个新的wyl-nginx的镜像。
docker cp index.html 5cbfdbbe064b://usr/share/nginx/html

docker commit -m "fun" 5cbfdbbe064b wyl-nginx

docker三大组件---镜像

之前的nginx镜像是运行后的页面的nginx的欢迎页面,我们对之前的做一个修改,然后运行,之后就会生成一个新的镜像。

docker三大组件---镜像

1.3.2、Dockerfile生成镜像
#创建一个dl目录dockerfile的缩写
[root@bfd-v7 /]# mkdir dl
[root@bfd-v7 dl]# cd dl
[root@bfd-v7 dl]# touch Dockerfile
[root@bfd-v7 dl]# vim Dockerfile
#写上下面的呃逆荣
FROM alpine:latest
MAINTAINER wyl9527
CMD echo "hello docker"

Dockerfile 基本的语法是:

  • 使用 # 来注释
  • FROM 指令告诉 Docker 使用哪个镜像作为基础
  • 接着是维护者的信息
  • CMD 运行的指令
[root@bfd-v7 dl]# docker build -t hello-docker .

docker三大组件---镜像

其中 -t 标记来添加 tag,指定新的镜像的用户信息。 “.” 是 Dockerfile 所在的路径(当前目录),也可以替换为一个具体的 Dockerfile 的路径。

可以看到 build 进程在执行操作。它要做的第一件事情就是上传这个 Dockerfile 内容,因为所有的操作都要依据 Dockerfile 来进行。 然后,Dockfile 中的指令被一条一条的执行。每一步都创建了一个新的容器,在容器中执行指令并提交修改(就跟之前介绍过的 docker commit 一样)。当所有的指令都执行完毕之后,返回了最终的镜像 id。所有的中间步骤所产生的容器都被删除和清理了。

*注意一个镜像不能超过 127 层

1.4镜像的导出和导入

1.4.1、如果要导出镜像到本地文件,可以使用 docker save 命令。
[root@bfd-v7 ~]# docker save -o wyl-nginx.tar.gz wyl-nginx
[root@bfd-v7 ~]# docker save -o hello-docker.tar.gz hello-docker

导出到当前的目录,如下图中的hello-docker.tar.gz文件。
docker三大组件---镜像

1.4.2可以使用 docker load 从导出的本地文件中再导入到本地镜像库

在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器
由于之前已经有了hello-docker的镜像,我们先删除,然后再导入。

[root@bfd-v7 ~]# docker rmi hello-docker

#出现下面的错误

docker三大组件---镜像

[root@bfd-v7 ~]# docker load<hello-docker.tar.gz
[root@bfd-v7 ~]# docker images  #查看一个新的hello-docker镜像

docker三大组件---镜像

1.5移除本地镜像

如果要移除本地的镜像,可以使用 docker rmi 命令。注意 docker rm 命令是移除容器,否则会报错。

[root@bfd-v7 ~]# docker rm  容器id  #上面的截图中有看到操作过程。
[root@bfd-v7 ~]# docker rmi hello-docker