您的位置:首页 > 运维架构 > Docker

docker三大组件---镜像

2018-01-17 21:41 260 查看

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




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

来自于哪个仓库,比如 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




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



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 .




其中 -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文件。



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

在删除镜像之前要先用 docker rm 删掉依赖于这个镜像的所有容器

由于之前已经有了hello-docker的镜像,我们先删除,然后再导入。

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

#出现下面的错误




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




1.5移除本地镜像

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

[root@bfd-v7 ~]# docker rm  容器id  #上面的截图中有看到操作过程。
[root@bfd-v7 ~]# docker rmi hello-docker
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: