创建镜像的三种方式:基于已有镜像的容器创建、基于本地模板导入、基于Dockerfile创建。第三种基于Dockerfile创建镜像的方式会在后续章节深入讲解
1.使用commit 方式创建
思路:先获取一个镜像,进入容器中对容器进行修改,之后提交该容器,生成一个新镜像。
镜像是多层存储,每一层是在前一层的基础上进行的修改;而容器同样也是多层存储,是在以镜像为基础层,在其基础上加一层作为
容器运行时的存储层。测试样例:
docker run --name webserver -d -p 80:80 nginx
这条命令会用 nginx 镜像启动一个容器,命名为 webserver ,并且映射了 80 端口,这样我们可以用浏览器去访问这个 nginx 服务器。
如果是云主机,则访问公网IP;若是Docker for Mac、Docker for Windows,那么可以直接访问:http://localhost。如图:
进入容器,对其进行修改:
$ docker exec -it webserver bash
root@4e8b9f358d54:/# echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
root@4e8b9f358d54:/# exit
exit
我们以交互式终端方式进入webserver 容器,并执行了 bash 命令,也就是获得一个可操作的Shell。并修改了 /usr/share/nginx/html/index.html。
刷新浏览器:
至此,我们修改了容器的文件,也就是改动了容器的存储层。我们可以通过 docker diff 命令看到具体的改动。
$ docker diff webserver
提交容器,将其保存为镜像:docker commit ,其语法格式为:
docker commit [选项] <容器ID或容器名> [<仓库名>[:<标签>]]
主要选项:
-a, --author="" 坐着信息
-m, --message="" 提交信息
-p, --pause=true 提交时暂停容器运行
$ docker commit \
--author "yuor name <your email>" \
--message "修改了默认网页" \
webserver \
nginx:v2
查看生成的镜像:
docker images
2. 使用Dockerfile制作镜像
以 nginx 镜像为例。
在一个空白目录中,建立一个文本文件,并命名为 Dockerfile :
$ mkdir mynginx
$ cd mynginx
$ touch Dockerfile
其内容为:
FROM nginx
RUN echo '<h1>Hello, Docker!</h1>' > /usr/share/nginx/html/index.html
这个 Dockerfile 很简单,一共就两行。涉及到了两条指令, FROM 和 RUN 。
在 Dockerfile 文件所在目录执行:
$ docker build -t nginx:v3 .
(末尾的“.”保留)
3. 基于本地模板导入
格式:
docker import [选项] <文件>|<URL>|- [<仓库名>[:<标签>]]
压缩包可以是本地文件、远程 Web 文件,甚至是从标准输入中得到。压缩包将会在镜像 / 目录展开,并直接作为镜像第一层提交。
比如创建一个 OpenVZ 的 Ubuntu 14.04 模板的镜像:
$ docker import \
http://download.openvz.org/templ ... 6_64-minimal.tar.gz \
openvz/ubuntu:14.04
对应 docker import 有一个 docker export ,这个命令用于导出容器的文件系统到压缩文件中,用法:
docker export [OPTIONS] CONTAINER ,导出的文件位置在当前执行命令的目录下,这里不多做介绍。
创建镜像
创建镜像创建镜像有很多方法,用户可以从 Docker Hub 获取已有镜像并更新,也可以利用本地文件系统创建一个。修改已有镜像先使用下载的镜像启动容器。$ sudo docker run -t -i ...
---------------------
作者:安心Smile
来源:CSDN
原文:https://blog.csdn.net/ANXIN997483092/article/details/82697977
版权声明:本文为博主原创文章,转载请附上博文链接!
|
|