Docker(12)-- 使用Dockerfile构建docker镜像

简介: 使用Dockerfile构建docker镜像

使用Dockerfile构建docker镜像

一、自定义一个 centos

1、编写DockerFile

查看下官方默认的CentOS的情况:

目的:使我们自己的镜像具备如下:登陆后的默认路径、vim编辑器、查看网络配置ifconfig支持

准备编写Dockerflie文件

[root@alway home] mkdir dockerfile-test 
[root@alway home] ls 
ceshi dockerfile-test docker-test-volume f1 
[root@alway home] vim mydockerfile-centos # 编辑文件 
[root@alway home] cat mydockerfile-centos 
FROM centos 
MAINTAINER alway<1826445018@qq.com> 
ENV MYPATH /usr/local 
WORKDIR $MYPATH 
RUN cd /etc/yum.repos.d/ \
    && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \
    && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \
    && yum makecache \
    && yum update -y \
    && yum -y install vim \
    && yum -y install net-tools
EXPOSE 80 
CMD echo $MYPATH 
CMD echo "----------end--------" 
CMD /bin/bash

2、构建

docker build -f dockerfile地址 -t 新镜像名字:TAG .

会看到 docker build 命令最后有一个 ‘.’ ,‘.’ 表示当前目录,该路径指定在何处找到DOCKER守护进程上构建的“上下文”的文件, 目录中的所有文件都被排序并发送到DOCKER守护进程。

docker build -f mydockerfile-centos -t mycentos:0.1 .

3、运行

docker run -it 新镜像名字:TAG

docker run -it mycentos:0.1

可以看到,我们自己的新镜像已经支持 vim/ifconfig的命令,扩展OK!

4、列出镜像地的变更历史

docker history 镜像名

二、自定义镜像 tomcat

1、 mkdir -p /root/docker-test/tomcat

2、在上述目录下 touch read.txt

3、将 JDK 和 tomcat 安装的压缩包拷贝进上一步目录

4、在 /root/docker-test/tomcat 目录下新建一个Dockerfile文件

vim Dockerfile

FROM centos
MAINTAINER alway<1826445018@qq.com>
#把宿主机当前上下文的read.txt拷贝到容器/usr/local/路径下 
COPY read.txt /usr/local/cincontainer.txt
#把java与tomcat添加到容器中 
ADD jdk-11.0.8_linux-x64_bin.tar.gz /usr/local/
ADD apache-tomcat-9.0.64.tar.gz /usr/local/
#安装vim编辑器 
RUN cd /etc/yum.repos.d/ \
    && sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-* \
    && sed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-* \
    && yum makecache \
    && yum update -y \
    && yum -y install vim \
    && yum -y install net-tools
#设置工作访问时候的WORKDIR路径,登录落脚点 
ENV MYPATH /usr/local
WORKDIR $MYPATH
#配置java与tomcat环境变量 
ENV JAVA_HOME /usr/local/jdk-11.0.8
ENV CLASSPATH $JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
ENV CATALINA_HOME /usr/local/apache-tomcat-9.0.64
ENV CATALINA_BASE /usr/local/apache-tomcat-9.0.64
ENV PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/lib:$CATALINA_HOME/bin
#容器运行时监听的端口 
EXPOSE 8080 
#启动时运行tomcat 
#ENTRYPOINT ["/usr/local/apache-tomcat-9.0.64/bin/startup.sh" ]
#CMD ["/usr/local/apache-tomcat-9.0.64/bin/catalina.sh","run"]
CMD /usr/local/apache-tomcat-9.0.64/bin/startup.sh && tail -F /usr/local/apache-tomcat-9.0.64/bin/logs/catalina.out

5、构建镜像

docker build -t mytomcat:0.1 .

不加-f 指定Dockerfile构建文件时,docker默认使用当前路径下的Dockerfile文件

6、启动运行 run

docker run -d -p 9090:8080 --name mytomcat -v /home/docker-test-volume/tomcat/apps:/usr/local/apache-tomcat-9.0.64/webapps/test -v /home/docker-test-volume/tomcat/logs/:/usr/local/apache-tomcat-9.0.64/logs --privileged=true mytomcat:0.1

7、验证测试访问!

8、发布服务

9、查看日志

目录
相关文章
|
3月前
|
人工智能 前端开发 Docker
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
在 AI 智能体开发中,开发者常面临本地调试与云端部署的矛盾。本文介绍如何通过 Docker Compose 与 Docker Offload 解决这一难题,实现从本地快速迭代到云端高效扩容的全流程。内容涵盖多服务协同、容器化配置、GPU 支持及实战案例,助你构建高效、一致的 AI 智能体开发环境。
382 2
从本地到云端:用 Docker Compose 与 Offload 构建可扩展 AI 智能体
|
3月前
|
JavaScript Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
379 100
|
3月前
|
缓存 安全 Linux
优化Docker镜像大小的多阶段构建实践
优化Docker镜像大小的多阶段构建实践
314 99
|
3月前
|
缓存 Docker 容器
优化Docker镜像大小的五个实用技巧
优化Docker镜像大小的五个实用技巧
330 98
|
3月前
|
缓存 前端开发 Docker
Docker Layer Caching:加速你的容器构建
Docker Layer Caching:加速你的容器构建
|
3月前
|
安全 Go Docker
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
|
2月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
503 5
|
3月前
|
Java Docker 容器
使用Docker多阶段构建优化镜像大小
使用Docker多阶段构建优化镜像大小
206 8
|
4月前
|
缓存 Ubuntu Docker
Ubuntu环境下删除Docker镜像与容器、配置静态IP地址教程。
如果遇见问题或者想回滚改动, 可以重启系统.
311 16
|
Linux Docker Windows
Docker概述:什么Docker如此特别,它是如何构建的
本文讲的是Docker概述:什么Docker如此特别,它是如何构建的,【编者的话】在上一系列介绍中,我们大体地介绍了CoreOS。在这个系列中我想介绍一下Docker。本文我们看一下为什么Docker如此特别,它是如何构建的。我们会从基本开始介绍,所以读者不必担心自己是刚接触Docker的。
1461 0

热门文章

最新文章