Docker镜像制作

avatar 2020年5月15日23:22:10 评论 934 次浏览

镜像制作是进入kubernetes的第二步,第一步肯定是学习docker了。今天就说说docker镜像的好处,我们学会了镜像制作可以根据我们的需求,创建一个属于自己环境镜像,在本地传到镜像仓库里,然后使用dockerfile把我们的项目文件copy到自己定义的镜像里可以批量的拉取镜像创建容器,这个是在kubernetes中批量生成pod的时候使用的。这里先不说Dockerfile如何编写,先看下面的Dockerfile文件。

[root@www.wulaoer.org wulaoer]# cat Dockerfile 
FROM centos:7.2.1511
RUN echo "Asia/Shanghai" > /etc/timezone;
RUN mkdir /usr/local/java
ADD jdk-8u201-linux-x64.tar.gz /usr/local/java/
RUN ln -s /usr/local/java/jdk1.8.0_201 /usr/local/java/jdk
ENV JAVA_HOME=/usr/local/java/jdk
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH

我这里是做了一个jdk的镜像,然后把镜像中的时间定义了一下和宿主机的时间一样,这样就能保证生成的日志时间和系统时间一致了

RUN echo "Asia/Shanghai" > /etc/timezone;

把镜像的时区修改成上海,这样保证了使用该镜像生成容器时时间使用的是上海时区,不会和北京时间相差八个小时。

RUN mkdir /usr/local/java

是创建了一个目录,用来存放java文件

COPY jdk-8u201-linux-x64.tar.gz /usr/local/java/

是把本地的java文件copy到镜像中

RUN ln -s /usr/local/java/jdk1.8.0_201 /usr/local/java/jdk

做了一个软连接,到jdk

ENV JAVA_HOME=/usr/local/java/jdk
ENV JRE_HOME=${JAVA_HOME}/jre
ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
ENV PATH=${JAVA_HOME}/bin:$PATH

定义了jdk的变量,Dockerfile的注解已经说明白了,下面我们生存一个生成一个新的镜像看看。

[root@www.wulaoer.org wulaoer]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
[root@www.wulaoer.org wulaoer]# docker build -t jdk1.8:latest .
Sending build context to Docker daemon  312.3MB
Step 1/9 : FROM centos:7.2.1511
7.2.1511: Pulling from library/centos
a8c7037c15e9: Pull complete 
Digest: sha256:50cca1e74da4b6a4eb4ade029c8fdd4ee8564776801914d9bd89df8c6344add0
Status: Downloaded newer image for centos:7.2.1511
 ---> 9aec5c5fe4ba
Step 2/9 : RUN echo "Asia/Shanghai" > /etc/timezone;
 ---> Running in f583a5e8884a
Removing intermediate container f583a5e8884a
 ---> cd12eb279082
Step 3/9 : RUN mkdir /usr/local/java
 ---> Running in 5e5eee205ecf
Removing intermediate container 5e5eee205ecf
 ---> 098dafa44c0d
Step 4/9 : COPY jdk-8u201-linux-x64.tar.gz /usr/local/java/
 ---> 53736578666c
Step 5/9 : RUN ln -s /usr/local/java/jdk1.8.0_201 /usr/local/java/jdk
 ---> Running in 1e9410d5088c
Removing intermediate container 1e9410d5088c
 ---> fc72c676bce5
Step 6/9 : ENV JAVA_HOME=/usr/local/java/jdk
 ---> Running in eb6f910441a3
Removing intermediate container eb6f910441a3
 ---> 80db22c4f107
Step 7/9 : ENV JRE_HOME=${JAVA_HOME}/jre
 ---> Running in 684b6bcbcfdf
Removing intermediate container 684b6bcbcfdf
 ---> 2943bd1bf795
Step 8/9 : ENV CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
 ---> Running in 15fd27ee5e91
Removing intermediate container 15fd27ee5e91
 ---> 94cd0b83a5ba
Step 9/9 : ENV PATH=${JAVA_HOME}/bin:$PATH
 ---> Running in e8b76b8c26d7
Removing intermediate container e8b76b8c26d7
 ---> 9e6c3e788e52
Successfully built 9e6c3e788e52
Successfully tagged jdk1.8:latest
[root@www.wulaoer.org wulaoer]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
jdk1.8              latest              9e6c3e788e52        14 seconds ago      386MB
centos              7.2.1511            9aec5c5fe4ba        14 months ago       195MB

创建成功的前提是需要的jdk-8u201-linux-x64.tar.gz必须和Dockerfile是一个目录下,不然会找不到jdk文件。如果Dockerfile和不在当前路径,可以使用-f参数,指定DOckerfile的路径

[root@www.wulaoer.org wulaoer]# docker build -t jdk1.8:latest /wulaoer/Dockerfile

使用-t参数,可以定义新镜像的名称,例如上面的jdk1.8:latest,如果你的Dockerfile在git上可以使用

[root@www.wulaoer.org wulaoer]# docker build -t jdk1.8:latest github.com/creack/docker-firefox

以上就是制作docker镜像的方法,可能Dockerfile的用法不清晰,没关系,下一个文章就是针对Dockerfile的用法的。

avatar
  • 未经博主允许,禁止转载本博客任何内容,如需转载请留言,谢谢合作!!!
  • 转载注明:Docker镜像制作 | 吴老二

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: