首页 > 其他 > 详细

Docker 制作镜像

时间:2019-07-22 10:27:00      阅读:54      评论:0      收藏:0      [点我收藏+]

(1),DockerFile 文件
Docker可以通过从Dockerfile中读取指令来自动构建镜像。
Dockerfile是一个文本文档,包含用户可以在命令行上调用的所有命令,以组合镜像。
使用docker build,docker即可启动构建工作,构建过程为连续执行DockerFile中的
多个命令行指令。
•官方例:
FROM scratch
ADD centos-7-x86_64-docker.tar.xz /

LABEL org.label-schema.schema-version="1.0" \
org.label-schema.name="CentOS Base Image" \
org.label-schema.vendor="CentOS" \
org.label-schema.license="GPLv2" \
org.label-schema.build-date="20190305"

CMD ["/bin/bash"]

(2),DockerFile 基础语法
•关键字指令必须为大写字母,且至少需要一个参数;
•关键字指令从上到下顺序执行;
•#表示注释;
•每条指令执行都会创建一个镜像层;

(3),DockerFile 执行流程
•docker从基础镜像运行一个容器。
•执行一条指令并对容器做出修改。
•执行类似docker commit的操作,提交一个新的镜像层。
•docker再基于刚刚提交的镜像,运行一个新容器。
•执行dockerfile中的下一条指令直到所有的指令都执行完成。

(4),DockerFile 关键字指令
FROM : FROM指令初始化新的构建阶段,并为后续指令设置基本镜像。
MAINTAINER(过期):维护者指令设置生成镜像的作者字段,使用Label。
RUN:将在当前镜像之上的新层中执行任何命令,并提交结果。
EXPOSE:容器在运行时监听指定的网络端口。EXPORT不会让主机访问容器的端口。
WORKDIR:为文件中跟随它的任何RUN、CMD、ENTRYPONT、COPY和ADD指令设置工作目录。
ENV:设置环境变量
ADD: 复制文件,并将它们添加到镜像文件系统的指定目录。
COPY:类似ADD
VOLUME:设置数据卷
CMD:一个文件中只能有一条CMD指令。如果您列出了多个CMD,则只有最后一个CMD会生效。
ENTRYPOINT:类似CMD
ONBUILD :当镜像被用作另一个构建的基础时,ONBUILD指令在镜像中添加了一个稍后要执行的触发指令。

●阿里云镜像搜索:https://cr.console.aliyun.com/cn-qingdao/instances/images


(5)docker制作镜像示例1(Centos镜像)

★自定义镜像 centos
1、编写DockerFile 文件
2、使用docker build 构建镜像
3、使用docker run 创建容器

★DockerFile
--------------------------------------------------------------
FROM centos
LABEL author="xxx@zzz.com"
ENV myhome /tmp
WORKDIR $myhome
RUN yum -y install vim

RUN mkdir /datavolume
VOLUME /datavolume #设置一个数据卷。此时,主机中的数据卷自动生成。

CMD /bin/bash
----------------------------------------------------------------

★构建镜像
docker build -f dockerfile_path -t image:tag . #最后的.勿忘。
例:docker build -f /mydocker/DockerFile -t my_centos:1.1 .


(6)docker制作镜像示例2(tomcat镜像)
环境:centos + jdk8 + tomcat + vim

技术分享图片
 1 #选择基础镜像
 2 FROM centos
 3 #设置描述信息
 4 LABEL maintainer="xxx@zzz.com"
 5 #测试COPY从主机拷贝文件到容器
 6 COPY testcp.txt /usr/local/testcp.txt
 7 #在基础镜像上安装软件 apache-tomcat-9.0.13.tar.gz 和 jdk-8u181-linux-x64.tar.gz
 8 ADD jdk-8u181-linux-x64.tar.gz /usr/local/ #从主机的当前路径拷贝jdk-8u181到容器的/usr/local/
 9 ADD apache-tomcat-9.0.13.tar.gz /usr/local/
10 #安装 vim 编辑器
11 RUN yum -y install vim
12 #设置 容器数据卷
13 RUN mkdir /dataVolume
14 VOLUME /dataVolume
15 
16 #设置工作路径
17 ENV MYPATH /usr/local
18 WORKDIR $MYPATH
19 #设置环境变量
20 ENV JAVA_HOME /usr/local/jdk1.8.0_181
21 ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
22 ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.13
23 ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.13
24 ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
25 #容器监听端口
26 EXPOSE 8080
27 #启动时运行 tomcat
28 CMD /usr/local/apache-tomcat-9.0.13/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.13/bin/logs/catalina.out
View Code

★构建镜像

docker build -t my_tomcat . #省略的参数,从当前目录找。

★利用当前镜像创建容器。
docker run -d -p 8888:8080 --name mytomcat01 mytomcat

Docker 制作镜像

原文:https://www.cnblogs.com/mountain2011/p/11223452.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!