phpcms做汽车网站,新手做网站选材,专用汽车网站模板,咪呜瀑布流WordPress模板什么是Docker镜像
Docker 镜像类似于虚拟机镜像#xff0c;可以将它理解为一个只读的模板。
一个镜像可以包含一个基本的操作系统环境#xff0c;里面仅安装了 Apache 应用程序#xff08;或 用户需要的其他软件#xff09; 可以把它称为一个 Apache 镜像。镜像是创建 Do…什么是Docker镜像
Docker 镜像类似于虚拟机镜像可以将它理解为一个只读的模板。
一个镜像可以包含一个基本的操作系统环境里面仅安装了 Apache 应用程序或 用户需要的其他软件 可以把它称为一个 Apache 镜像。镜像是创建 Docker 容器的基础。通过版本管理和增量的文件系统 Docker 提供了一套十分简单的机制来创建和更新现有的镜像用户甚至可以从网上下载一个已经做好的应用镜像并直接使用。 Docker 运行容器前需要本地存在对应的镜像 如果镜像不存在 Docker 会尝试先从默 认镜像仓库下载默认使用 Docker Hub 公共注册服务器中的仓库 用户也可以通过配置 使用自定义的镜像仓库。 获取镜像 镜像是运行容器的前提 官方的 Docker Hub 网站已经提供了数十万个镜像供大家开放 下载。 命令 可以使用 docker [image] pull 命令直接从 Docker Hub 镜像源来下载镜像。 该命 令的格式为 docker [image] pull NAME [ :TAG] 。 其中 NAME 是镜像仓库名称用来区分镜像 TAG 是镜像的标签往往用来表示版本 信息 。 通常情况下 描述 一 个镜像需要包括 “ 名称标签 “ 信息。 例如 获取一个 Ubuntu 18.04 系统的基础镜像可以使用如下的命令
[rootopenEuler-node1 ~]# docker pull ubuntu:18.04
18.04: Pulling from library/ubuntu
7c457f213c76: Pull complete
Digest: sha256:152dc042452c496007f07ca9127571cb9c29697f42acbfad72324b2bb2e43c98
Status: Downloaded newer image for ubuntu:18.04如果没有写 “名称标签“ 信息中的标签会默认添加一个latest标签表示这个仓库中最新的镜像
[rootopenEuler-node1 ~]# docker pull ubuntu
Using default tag: latest #自动添加的一个标签获取最新的版本
latest: Pulling from library/ubuntu
bccd10f490ab: Pull complete
Digest: sha256:77906da86b60585ce12215807090eb327e7386c8fafb5402369e421f44eff17e
Status: Downloaded newer image for ubuntu:latest 如果从非官方 的仓库 下载则 需要在仓库 名称前指定完整的仓库地址。例如从网易蜂巢 的镜像源来下载ubun七u:18.04镜像可以使用如下命令此时下载的镜像名称 为pull hub.c.163.com/public/centos:6.5 [rootopenEuler-node1 ~]# docker pull hub.c.163.com/public/centos:6.5
6.5: Pulling from public/centos
96057de2d572: Pull complete
a3ed95caeb02: Pull complete
8a1dcc3f76c2: Pull complete
8fe56c90e86a: Pull complete
43fc3558431f: Pull complete
5881bc109689: Pull complete
Digest: sha256:92fd18cda0cbf63bb4b5ffd0c073a9d689d5b202e3b491cbc74488fff1c37d11
Status: Downloaded newer image for hub.c.163.com/public/centos:6.5pull 子命令支持的 选项主要包括 -a, --all--agstrue|false: 是否获取仓库中的所有镜像默认为否 查看镜像 images命令列出镜像 使用docker images或docker image ls 命令可以列出本地主机上已有镜像的基 本信息。 REPOSITORY来自于哪个仓库TAG镜像的标签信息IMAGE ID镜像的ID(唯一标识镜像 images子命令主要支持如下选项 -a, --all 式 rue I false: 列出所有包括临时文件镜像文件默认为否 -f, --fi让er[] : 过滤列出的镜像 如dangling 式 rue 只显示没有被使用的 镜像也可指定带有特定标注的镜像等 使用tag命令添加镜像标签 docker tag ubuntu:latest myubuntu:latest 这些myubuntu:latest镜像的ID跟ubunt:latest是 完全一 致的它们实际上指向了同一个镜像文件只是别名不同而巳。docker tag命令添加的标签实际上起到了类似链接的作用。 使用inspect命令查看详细信息
[rootopenEuler-node1 ~]# docker inspect ubuntu:18.04 上面代码返回的是 一 个 JSON 格式的消息,如果我们只要其中 一 项内容时可以使 用 -f 来指定例如获取镜像的 Arch让ect ure [rootopenEuler-node1 ~]# docker inspect -f {{.Architecture}} ubuntu:18.04
amd64搜索镜像 Docker 镜像的 search 子命令 -f, --filer fill er: 过滤输出内容 --format st ring: 格式化输出内容 --limit int 限制输出结果个数 默认为 25 个 --no-trunc: 不截断输出结果。 [rootopenEuler-node1 ~]# docker search busybox
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
busybox Busybox base image. 3223 [OK]
radial/busyboxplus Full-chain, Internet enabled, busybox made f… 56 [OK]
yauritux/busybox-curl Busybox with CURL 25
arm32v7/busybox Busybox base image. 10
arm64v8/busybox Busybox base image. 8
odise/busybox-curl 4 [OK]
s390x/busybox Busybox base image. 3
..... 可以看到返回了很多包含关键字的镜像 其中包括镜像名字、 描述、 收藏数表示该镜像 的受欢迎程度、 是否官方创建、 是否自动创建等。默认的输出结果将按照星级评价进行排序。 删除和清理镜像
删除就rm -f参数是强制删除可以基于ID或者标签删除
docker rmi busybox:latest 使用Docker 一 段时间后 系统中可能会遗留一些临时的镜像文件 以及 一 些没有被使 用的镜像 可以通过docker image prune命令来进行清理。 -a, -all: 删除所有无用镜像 不光是临时镜像 -filter filter: 只清理符合给定过滤器的镜像 -f, -force: 强制删除镜像 而不进行提示确认。 创建镜像 1基于已有容器创建 该方法主要是使用 docker [container] commit 命令 演示 首先 启动一个镜像 并在其中进行修改操作。 例如 创建一个test文件 之后退出 代码如下 [rootopenEuler-node1 ~]# docker run -it ubuntu:18.04 bash
root35b863d7caf6:/# touch test
root35b863d7caf6:/# exit此时容器与原镜像就不一致了可以用commit来提交一个新的镜像 [rootopenEuler-node1 ~]# docker commit -m Add a new file -a FYS 35b863d7caf6 test:0.1
sha256:e2c7a68ee5c90d3ae55b095ca7dc8ee4a9ca1a54e9722d6ef4b98c68d1c5e4cf此时查看本地镜像列表 会发现新创建的镜像已经存在了 [rootopenEuler-node1 ~]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test 0.1 e2c7a68ee5c9 23 seconds ago 63.2MB2基于本地模板导入 例如下载了 ubuntu-18.04 的模板压缩包之后使用以下命令导人即可 [rootopenEuler-node1 ~]# cat ubuntu-18.04-x86_64-minimal.tar.gz I docker import - ubuntu:lB.043基于Dockefile创建 下面给出 Dockerfile 的一个简单示例基于 debian:stretch-slim 镜像安装 Python 3 环境构成一个新的 python:3 镜像 [rootopenEuler-node1 ~]# vim dockerfile
FROM debian:stretch-slim
LABEL version1.0 maintainer docker user docker usergithub
RUN apt-get update \apt-get install-y python3 \ apt-get clean \rm rf /var/lib/apt/lists/*
[rootopenEuler-node1 ~]# docker build -t python:3 .FROM 基础镜像当前新镜像是基于哪个镜像的 MAINTAINER 镜像维护者的姓名和邮箱地址 RUN 容器构建时需要运行的命令如果在容器运行时需要运行其他命令使用run指定 EXPOSE 容器对外暴露的端口mysql3306、redis6379 WORKDIR创建容器后进入容器使用pwd指令落脚点的目录没有指定就是/如centos是/redis是/data ENV 用来构建镜像的过程中设置环境变量ENV 键 值。 相当于成员变量 如ENV MY_PATH /usr/mytest 这个环境变量可以在后续的任何RUN指令中使用也可以在其它指令中直接使用这些环境变量 ADD 将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包。 ADD COPY解压缩 COPY 类似ADD拷贝文件和目录到镜像中。将从构建上下文目录中 源路径 的文件/目录复制到新的一层的镜像内的 目标路径 位置 VOLUME 容器数据卷用来数据保存和持久化工作 CMD 指定一个容器启动时需要运行的命令。DockerFile 中可以有多个 CMD 指令但只有最后一个生效CMD 会被 docker run 之后的参数替换 也就是人工添加或文件中指定的CMD参数会把DockerFile里面的参数覆盖只会有最后一个生效。 .其中 使用 -f 命令可以指定dockerfile的路径。 存出和载入镜像
1存出镜像 可以使用 docker [image] save 命令 该命令支持 -o output string 参数 导出镜像到指定的文件中 [rootopenEuler-node1 ~]# docker save -o ubuntu_18.04.tar ubuntu:18.04
[rootopenEuler-node1 ~]# ll
总用量 64012
-rw-------. 1 root root 974 2月 19 16:15 anaconda-ks.cfg
-rw-r--r-- 1 root root 205 3月 11 16:47 dockerfile
-rw------- 1 root root 65539072 3月 11 16:54 ubuntu_18.04.tar2载入镜像 可以使用 docker [image] load 将导出的 tar 文件再导人到本 镜像库。-i input string 选项从指定文件中读入镜像内容与存出相反 [rootopenEuler-node1 ~]# docker load ubuntu_18.04.tar
[rootopenEuler-node1 ~]# docker load -i ubuntu_18.04.tar 上传镜像 可以使用 docker [image] push 命令上 传镜像到仓库默认上传到 Dock er Hub 官方仓库需要登录 命令格式为 docker [image] push [:TAG] I [REGISTRY_HOST [ :REGISTRY_PORT] / ]NAME [:TAG:] [rootopenEuler-node1 ~]# docker push user/test:latest第一次上传时会提示输入登录信息或进行注册之后登录信息会记录到本 地 docker 目录下