镜像制作是进入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的用法的。
您可以选择一种方式赞助本站
支付宝扫一扫赞助
微信钱包扫描赞助
赏