前言
docker理论之类的就不说了,网上一大顿,直接说我们最关心的,就是如何构建我们自己的镜像
镜像是 Docker 的基础,它是容器运行环境的静态模板,包含了应用以及依赖环境。
制作镜像步骤如下:
1.准备构建环境:
镜像构建环境,就是制作镜像的目录,里面包含了制作镜像所需要的所有资源,包含应用、配置文件、其他资源等。
2.编写 Dockerfile 文件:
Dockerfile 文件包含了镜像构建时需要执行的命令,包括拷贝需要的文件到镜像里面、镜像启动时执行的命令等。
3.使用 docker build 命令构建镜像:
docker build 命令将逐条执行Dockerfile 文件里的命令来构建镜像。
4.发布镜像:
把镜像发布到镜像中心供其他人使用
通用建议
1.每个容器只运行一个应用,每个容器只运行一个应用让部署变得清晰明了。
2.最小化镜像层数
Dockerfile的每句话都会在构建镜像时形成一个镜像层,由于一个镜像是有最大层数限制的(计算时还要加上基础镜像的层数),所以尽量减少Dockerfile的命令语句可以减少镜像的层数,比如可以把多条run语句合并成一条。
docker语法说明
Docker 可以通过读取一个 Dockerfile 文件里面的指令来自动构建镜像。Dockerfile是一个文本文件,它包含了用户在构建一个镜像时会在命令行里调用的所有命令。用户可以使用dockerbuild命令来自动执行Dockerfile里的一系列命令行指令,以便构建出自己想要的镜像。
用法
创建一个空目录,在里面创建 Dockerfile 文件,进入该目录执行以下语句构建镜像(注意最后的'.'):
$ docker build -t myapp:1.0 . -t后面的myapp 代表镜像名,1.0代表镜像版本号,如果不指定版本号,则Docker会自动给你设一个版本号latest。‘
’格式
Dockerfile的格式如下:
# Comment
指令
1.FROM
FROM <image>:<tag> FROM指令设置后续指令的基础镜像。
FROM指令必须是 Dockerfile 中第一条非注释的指令。
tag是可选的。如果您省略了,构建器将会使用默认值latest。
例子:
FROM myapplication:1.0.0
2.MAINTAINER
MAINTAINER <name>
MAINTAINER指令用来在生成的镜像中设置作者域。
例子:
MAINTAINER myname “myname"
多余的指令这里就不一一列出了,具体可以查阅docker教程
基于tomcat镜像创建应用docmanager的镜像
1. 准备构建环境
新建 doc文件夹,将 docmanager-deploy.war包解压到 docmanager文件
2. 编写 Dockerfile
示例 Dockerfile 内容如下:
Dockerfile 解释如下:
1.注释说明 Dockerfile 的作用;
2.注释说明 Dockerfile 的版本信息;
3.选择tomcat作为基础镜像;
4.添加 Dockerfile 的维护者信息;
5.添加 docmanager目录到 tomcat 相应目录下;
3. 制作镜像
使用 docker build 命令来制作镜像,注意命令末尾的'.':
# docker build -t docmanager :1.0.0 .
4 查看制作镜像
5. 发布镜像
镜像制作完成后,只能在本地使用,需要发布到镜像中心,用户才能使用。 使用docker push命令将本地镜像发布到私有镜像中心****.docker.com(如果有的话):
docker push ****.docker.com/子目录
6. 测试镜像
docker run -it -p 8090:8080 docmanager:1.0.0
docker run -it -p 8090:8080 docmanager:1.0.0
7.查看运行结果
可以看到,自己制作的镜像已经在容器中启动,本人自己制作过程,经过验证,可以使用。
本文侧重于实践,理论方面可以更多的参考docker官网,里面绝对有你想要的任何东西,可能制作的镜像比较简单,没有用到一些命令,但是这不是本文的重点,纯属个人学习笔记,非喜勿喷,欢迎交流!