Dockerfile是一个包含用于组合映像的命令的文本文档。可以使用在命令行中调用任何命令。 Docker通过读取Dockerfile中的指令自动生成映像。
docker build命令用于从Dockerfile构建映像。可以在docker build命令中使用-f标志指向文件系统中任何位置的Dockerfile。
例:
docker build -f /path/to/a/Dockerfile
docker build -t imagename:tag .
Dockerfile文件结构掌握
- FROM 指定依赖与另外一个image,openjdk:8
- MAINTAINER、LABEL 指定作者和一些标签信息
- COPY 构建image时从当前目录负责到镜像的/data/目录下,linux中cp一样。
- RUN 构建image时执行的命令,这里就是一个提示
- WORKDIR 切换目录到/data/下,类似linux cd命令
- CMD 执行具体的命令,我这里执行linux java命令,用例执行webapp服务
- EXPOSE 对外开放8080端口,container外部可以访问的端口。
docker build 命令掌握
docker build -t nc-link:v2 .
"-t nc-link:v2" 是指定镜像的名字,后面"."是当前目录下构建,默认当前目录的dockerfile文件;
执行结果如下:
docker image ls
可以查看image列表;
如何学习
docker中build、run、logs几个命令是绕不过去的,特别是build必须要扎实掌握,也就是dockerfile文件语法需要掌握,这块可以根据需要慢慢积累就好。
我的场景是部署java web服务,采用springboot作为研发框架最终打包一个可执行的jar文件,抛弃了传统tomcat方式运行去执行java -jar xxx.jar启动服务。
nc-link服务是依赖jdk环境的,从docker hub下载了openjdk:8作为nc-link运行的底层服务。有的服务可能需要依赖很多个其他容器,就像堆箱子一般一层层的往上码。
趋势
服务容器化部署运行的趋势已经显而易见,越早转过来越好,docker是一个很好的选择。
推荐关注作者博客网站:Owen Blog