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、查看日志

目录
相关文章
|
27天前
|
运维 Kubernetes Docker
利用Docker和Kubernetes构建微服务架构
利用Docker和Kubernetes构建微服务架构
|
1月前
|
缓存 Linux 网络安全
docker的镜像无法下载如何解决?
【10月更文挑战第31天】docker的镜像无法下载如何解决?
1241 29
|
27天前
|
存储 关系型数据库 Linux
【赵渝强老师】什么是Docker的镜像
Docker镜像是一个只读模板,包含应用程序及其运行所需的依赖环境。镜像采用分层文件系统,每次修改都会以读写层形式添加到原只读模板上。内核bootfs用于加载Linux内核,根镜像相当于操作系统,上方为应用层。镜像在物理存储上是一系列文件的集合,默认存储路径为“/var/lib/docker”。
|
1月前
|
应用服务中间件 PHP nginx
Docker-compose 编排lnmp(dockerfile) 完成Wordpress
通过使用Docker Compose,我们可以轻松编排LNMP环境并部署WordPress。本文详细介绍了各组件的Dockerfile和配置文件编写,并通过docker-compose.yml文件实现了整个环境的自动化部署。这种方法不仅简化了部署过程,还提高了环境的可移植性和一致性。希望本文能帮助你更好地理解和使用Docker Compose来管理和部署复杂的应用程序。
70 3
|
1月前
|
存储 监控 Linux
docker构建镜像详解!!!
本文回顾了Docker的基本命令和管理技巧,包括容器和镜像的增删改查操作,容器的生命周期管理,以及如何通过端口映射和数据卷实现容器与宿主机之间的网络通信和数据持久化。文章还详细介绍了如何使用Docker部署一个简单的Web应用,并通过数据卷映射实现配置文件和日志的管理。最后,文章总结了如何制作自定义镜像,包括Nginx、Python3和CentOS镜像,以及如何制作私有云盘镜像。
126 2
|
1月前
|
关系型数据库 MySQL Docker
docker环境下mysql镜像启动后权限更改问题的解决
在Docker环境下运行MySQL容器时,权限问题是一个常见的困扰。通过正确设置目录和文件的权限,可以确保MySQL容器顺利启动并正常运行。本文提供了多种解决方案,包括在主机上设置正确的权限、使用Dockerfile和Docker Compose进行配置、在容器启动后手动更改权限以及使用 `init`脚本自动更改权限。根据实际情况选择合适的方法,可以有效解决MySQL容器启动后的权限问题。希望本文对您在Docker环境下运行MySQL容器有所帮助。
104 1
|
1月前
|
存储 Java 开发者
成功优化!Java 基础 Docker 镜像从 674MB 缩减到 58MB 的经验分享
本文分享了如何通过 jlink 和 jdeps 工具将 Java 基础 Docker 镜像从 674MB 优化至 58MB 的经验。首先介绍了选择合适的基础镜像的重要性,然后详细讲解了使用 jlink 构建自定义 JRE 镜像的方法,并通过 jdeps 自动化模块依赖分析,最终实现了镜像的大幅缩减。此外,文章还提供了实用的 .dockerignore 文件技巧和选择安全、兼容的基础镜像的建议,帮助开发者提升镜像优化的效果。
|
27天前
|
API Docker 容器
【赵渝强老师】构建Docker Swarm集群
本文介绍了如何使用三台虚拟主机构建Docker Swarm集群。首先在master节点上初始化集群,然后通过特定命令将node1和node2作为worker节点加入集群。最后,在master节点上查看集群的节点信息,确认集群构建成功。文中还提供了相关图片和视频教程,帮助读者更好地理解和操作。
|
27天前
|
缓存 JavaScript 安全
深入理解Docker镜像构建过程
深入理解Docker镜像构建过程
64 0
|
4月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
360 5