三天入门 Docker - 第二天:Dockerfile 基本介绍与使用

简介: Dockerile 是由一组指令组成的文件,其中每条指令对应Linux中的一条命令,并且支持以舂开头的注释行;一般来说,Dockerfile结构大致分为四个部分:基础镜像、维护者信息、镜像操作指令和容器启动时的运行命令。

Dockerfile基本介绍与使用



前言


—、Dockerfile介绍


二、使用Dockerfile 实现自建镜像


1.自建Nginx镜像

2.自建Tomcat镜像


前言



在日常工作中,大家应该都或多或少的使用过很多镜像,但是不知道大家在使用的时候,有没有想过我们使用的镜像,是如何生成的,以及镜像里面的环境信息等。其实啊,不管是在哪拉取的镜像,这些镜像都是由Dockerfle提前构建好的,并且镜像里面的一些环境信息都是由镜像作者自己配置的。所以说在有些情况下,我们自己使用Dockerfile 来构建的镜像,效果可能更好。


一、Dockerfile介绍



Dockerile 是由一组指令组成的文件,其中每条指令对应Linux中的一条命令,并且支持以舂开头的注释行;一般来说,Dockerfile结构大致分为四个部分:基础镜像、维护者信息、镜像操作指令和容器启动时的运行命令。Dockerfile 官方介绍


我们前面说的Docker是由一系列的层组成,这里的层,就是我们Dockerfle文件中运行的指令,每条指令相当于说都是一个层,并且会进行累加,也就是说,当我们运行的指令过多时,生成出来的镜像便会很大。


Dockerfile常见的操作指令:


image.png


二、使用Dockerfile 实现自建镜像



准备工作:


image.png


  • 这里博主直接使用的是前面文章中的 Docker 环境:传送门


1.自建Nginx镜像


1)编写Dockerfile文件


[root@Docker ~]# mkdir nginx
[root@Docker ~]# cd nginx/
[root@Docker nginx]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
[root@Docker nginx]# vim Dockerfile
# 配置基础镜像
FROM dadoha/centos7.4.1708
# 配置作者信息
MAINTAINER [河北彭于晏]
# 安装相关软件包
RUN yum clean all && yum -y install proc-devel net-tools gcc zlib zlib-devel make openssl-devel wget
# 将 Nginx 软件包传到容器中
ADD nginx-1.18.0.tar.gz /usr/src/
# 配置工作目录
WORKDIR /usr/src/nginx-1.18.0/
# 进行编译安装
RUN ./configure --prefix=/usr/local/nginx && make && make install
# 开启端口
EXPOSE 80 443
# 修改 Nginx 配置文件. 以非 Daemon(后台) 方式启动
RUN echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf
# 复制启动脚本
COPY run.sh /
RUN chmod 755 /run.sh
# 运行启动脚本
CMD ["/run.sh"]


2)配置启动脚本


[root@Docker nginx]# cat <<END > run.sh
#!/bin/bash
/usr/local/nginx/sbin/nginx
END


3)生成镜像


[root@Docker nginx]# docker build -t nginx:1.18 .


4)启动容器并验证


[root@Docker nginx]# docker images | grep 1.18
[root@Docker nginx]# docker run -d --name Nginx -p 31888:80 nginx:1.18


image.png


2.自建Tomcat镜像


1)下载相关软件包


[root@Docker ~]# mkdir tomcat
[root@Docker ~]# cd tomcat
[root@Docker tomcat]# ls
apache-tomcat-8.5.32.tar.gz  jdk-8u181-linux-x64.tar.gz


2)编写Dockerfile文件


[root@Docker tomcat]# vim Dockerfile
FROM dadoha/centos7.4.1708
MAINTAINER [河北彭于晏]
ADD jdk-8u181-linux-x64.tar.gz /usr/local/
ENV JAVA_HOME /usr/local/jdk1.8.0_181
ENV PATH $PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
ENV CLASSPATH $JAVA_HOME/lib:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar
ADD apache-tomcat-8.5.32.tar.gz /usr/local/
EXPOSE 8080
ADD run.sh /
RUN chmod 755 /run.sh
CMD ["/run.sh"]


3)配置启动脚本


[root@Docker tomcat]# cat <<END > run.sh
#!/bin/bash
/usr/local/apache-tomcat-8.5.32/bin/startup.sh
tailf /run
END


4)生成镜像


[root@Docker tomcat]# docker build -t tomcat:8.5.32 .


5)启动容器并验证


[root@Docker tomcat]# docker run -d --name tomcat -p 8888:8080 tomcat:8.5.32


image.png

相关文章
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
1月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
149 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
1天前
|
Linux 持续交付 Docker
掌握Docker:从入门到实践
Docker 是一个开源容器引擎,允许开发者将应用及其依赖打包成可移植的容器,在任意 Linux 机器上运行。本文从基本概念入手,详细介绍 Docker 的安装、基本操作、镜像构建及 Docker Compose 的使用,并通过实战案例展示如何部署 Web 应用、构建微服务架构及实现 CI/CD。通过学习,你将掌握 Docker 的核心功能,提升应用开发和部署效率。
|
14天前
|
运维 Cloud Native Docker
云原生技术入门:Docker容器化实战
【9月更文挑战第20天】本文将引导你走进云原生技术的世界,通过Docker容器化技术的实战演练,深入理解其背后的原理和应用。我们将一起探索如何在云平台上利用Docker简化部署、扩展和管理应用程序的过程,并揭示这一技术如何改变现代软件的开发和运维模式。
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
10天前
|
关系型数据库 Linux 虚拟化
Docker入门基础实战
Docker入门基础实战
|
18天前
|
Kubernetes Cloud Native 开发者
云原生入门:从Docker到Kubernetes的旅程
【9月更文挑战第16天】 本文将带你进入云原生的世界,从理解Docker容器的基础开始,逐步深入到Kubernetes集群管理。我们将通过简单的代码示例和实际操作,探索这两个关键技术如何协同工作,以实现更高效、灵活的应用程序部署和管理。无论你是云原生新手还是希望深化理解,这篇文章都将为你提供清晰的指导和实用的知识。
51 11
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
75 20
|
8天前
|
Docker 容器
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
7-13|docker build -t image-name:tag path/to/Dockerfile 这个命令具体什么意思
|
2月前
|
图形学 C#
超实用!深度解析Unity引擎,手把手教你从零开始构建精美的2D平面冒险游戏,涵盖资源导入、角色控制与动画、碰撞检测等核心技巧,打造沉浸式游戏体验完全指南
【8月更文挑战第31天】本文是 Unity 2D 游戏开发的全面指南,手把手教你从零开始构建精美的平面冒险游戏。首先,通过 Unity Hub 创建 2D 项目并导入游戏资源。接着,编写 `PlayerController` 脚本来实现角色移动,并添加动画以增强视觉效果。最后,通过 Collider 2D 组件实现碰撞检测等游戏机制。每一步均展示 Unity 在 2D 游戏开发中的强大功能。
84 6
下一篇
无影云桌面