从容器创建镜像
我们可以使用“docker commit”命令将容器的当前状态保存为新镜像。
如果我们修改了容器并希望将更改提交到新镜像以供以后使用,这将非常有用。
幻灯片中的示例从 centos:7 镜像创建了一个名为“geeklab”的新容器,并在该容器中运行 bash shell 命令。
# docker run -i -t --name geeklab centos:7 /bin/bash [root@873abc18f59d /]#
在容器内,yum 命令用于安装 httpd 包。
[root@873abc18f59d /]# yum install httpd
使用 exit 命令停止正在运行的容器。
[root@873abc18f59d /]# exit exit
“docker commit”命令将更改保存到新镜像。
使用 -m 选项提供描述更改的消息。
使用 -a 选项提供作者信息。
提供容器 ID 或者容器名称、镜像名称和标签。
例子:
# docker commit -m="CentOS 7 With httpd installed" -a "Geek Lab" geeklab centos7/httpd:v1 sha256:b3c42dd36e247cabcfaf134afb4765e9853ebfbe856c8d785f65cfafc9fd53cd
docker images 命令的输出现在包括新镜像。
# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos7/httpd v1 b3c42dd36e24 20 seconds ago 334 MB
保存和加载镜像或者容器
我们可以创建镜像和容器的 tar 文件,以便在无权访问 Docker Hub 的系统上使用。
使用“docker save”命令将镜像保存到 tar 文件。
我们可以将存储库中的所有镜像保存到 tar 文件,也可以将特定镜像保存到 tar 文件。
通过将 STDOUT 重定向到 tar 文件或者使用 -o 选项指定输出 tar 文件名来创建 tar 文件。
以下示例重定向 STDOUT 以将 centos 存储库中的所有镜像保存到 centos-all.tar:
# docker save centos > centos-all.tar
以下示例将 centos:latest 镜像保存到 centos-lates.tar 文件。
# docker save -o=centos-latest.tar centos:latest
使用 docker load 命令将镜像从 tar 文件加载到本地 Docker 存储库。
以下示例从 centos-all.tar 文件加载镜像:
# docker load --input centos-all.tar
Docker 是 Linux 容器的开放平台管理工具。
它为开发人员和系统管理员提供了一种方法来构建应用程序并将其打包到轻量级容器中。
Docker 由以下组件组成:
- Docker Engine – 一个便携、轻量级的运行时和打包工具
- Docker Hub – 一种用于共享应用程序和自动化工作流的云服务
Docker 用于创建基于镜像的应用程序容器。
基于镜像的容器将具有单独运行时堆栈的应用程序打包到单个容器中。
这使得容器独立于主机操作系统和内核版本。
因此,我们可以在笔记本电脑、数据中心虚拟机和任何云上运行相同的应用程序,无需更改。
我们可以将此容器转移到另一台运行 Docker 的机器上并运行该应用程序,而不会出现任何兼容性问题。
从 Dockerfile 创建镜像
使用 docker build 命令从名为“Dockerfile”的文件中包含的指令创建一个新镜像。
Dockerfile 的格式为:
# Comment INSTRUCTION arguments
该指令不区分大小写,但约定是将指令大写以将其与参数区分开来。
Docker 按顺序运行 Dockerfile 中的指令。
我们从基础镜像构建新镜像。
第一条指令是 FROM 并指定要使用的基本镜像。
例子:
FROM centos:7
使用 RUN 指令指定在当前镜像之上的新层中运行的命令并提交结果。
例子:
RUN yum –y install httpd
ENTRYPOINT 指令指定从镜像创建的容器运行的命令。
例子:
ENTRYPOINT /usr/sbin/httpd –D FOREGROUND
有关所有说明的说明,请参阅 dockerfile 手册页。
以下 URL 还提供了所有可用 Dockerfile 说明的描述、用法和示例:https://docs.docker.com/reference/builder/。