目录结构
一、Dockerfile、Docker镜像和Docker容器的关系
在进行创建镜像之前,我们先了解一下这三者之间的关系。
Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态。从应用软件的角度来看,Dockerfile、Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石。
更多介绍可以移步这里:深入分析Docker镜像原理(点击链接查看)
二、创建自定义镜像的两种方式
- 使用commit命令创建本地镜像,我们在原有镜像基础上所做的修改应用commit命令之后 ,形成一个全新镜像,个人不太推荐此种做法,因为不便镜像的持续维护。
- 使用Dockerfile创建镜像,简单来说,就是我们编写好一个模板文件,编译之后就形成一个可用版本的镜像,后期我们只需维护该模板文件就可以达到镜像的持续更新、维护。
三、采用Dockerfile创建镜像(建立通用java环境镜像)
为了保持镜像通用与可维护 ,首先我们需要首先创建一个环境配置java镜像。具体Dockerfile编写如下:
#首先设置我们基础镜像来源
FROM centos:latest
#设置作者信息
MAINTAINER jiucool "www.jiucool.org"
#下面是设置环境变量
ENV JDK_FILE_NAME server-jre-8u74-linux-x64.tar.gz
ENV INSTALL_FOLDER /home/install
ENV JDK_HOME /usr/local/jdk
#执行相关命令
RUN mkdir ${INSTALL_FOLDER}
RUN mkdir ${JDK_HOME}
ADD ${JDK_FILE_NAME} ${JDK_HOME}
ADD jdk.sh /etc/profile.d/
RUN chmod 755 /etc/profile.d/jdk.sh
RUN chmod +x -R /usr/local/jdk/
WORKDIR ${INSTALL_FOLDER}
#执行的默认命令
CMD ["/bin/bash"]
我们的文件目录结构如下:
然后执行编译命令
docker build -t jiucool/java:server-jre-8u74 .
OK,到这里已经编译成功,我们需要运行该镜像验证一下,是否配置正确。
docker run -it jiucool/java:server-jre-8u74
OK,经验证一切正常。
四、镜像推送到docker hub 官方仓库
首先我们需要登录账号:
docker login
Username: jiucool
Password:
Email: XXXX@jiucool.org
Login Succeeded
推送到Docker Hub上的镜像必须按照下面的格式进行:username/image_name,如果命名的镜像名字不是按照上面的规则进行的,可以使用docker tag 进行修改。
下面执行推送命令:
docker push jiucool/java:server-jre-8u74
稍等片刻即推送成功。
然后通过官方库进行搜索查找验证。
至此,我们已经从编写Dockerfile — 编译 — 推送,完成了整个过程。
版权声明:除特殊说明,文章均为博主 久酷 原创文章,转载请注明来源