Dockerfile与DockerCompose

Docker的Image结构是怎样的?

  • 镜像是将应用程序 及其需要的 系统函数库、环境、配置、依赖 打包而成。

镜像结构

  • 入口( Entrypoint )
    • 镜像运行入口,一般是程序启动的脚本和参数
  • 层( Layer )
    • 在BaseImage基础上添加安装包、依赖、配置等,每次操作都形成新的一层。
  • 基础镜像( BaseImage )
    • 应用依赖的系统函数库、环境、配置、文件等

镜像是分层结构,每一层称为一个Layer
在这里插入图片描述

Dockerfile

  • Dockerfile 就是一个文本文件,其中包含一个个的 指令(Instruction),用指令来说明要执行什么操作来构建镜像。每一个指令都会形成一层Layer。
指令说明示例
FROM指定基础镜像FROM centos:6
ENV设置环境变量,可在后面指令使用ENV key value
COPY拷贝本地文件到镜像的指定目录COPY 。/mysql-5.7.rpm /tmp
RUN执行Linux的shell命令,一般是安装过程的命令Run yum install gcc
EXPOSE指定容器运行时监听的端口,是给镜像使用者看的EXPOSE 8080
ENTRYPOINT镜像中应用的启动命令,容器运行时调用ENTRYPOINT java -jar xx.jar
更新详细语法说明,请参考官网文档:https://docs.docker.com/engine/reference/buider

示例:基于Ubantu镜像构建一个新镜像,运行一个java项目

  • 步骤1:新建一个空文件夹docker-demo
  • 步骤2: 拷贝课前资料中的docker-demojar文件到docker-demo这个目录
  • 步骤3:拷贝课前资料中的jdk8.tar.gz文件到docker-demo这个目录
  • 步骤4:拷贝课前资料提供的Dockerfile到docker-demo这个目录
  • 步骤5:进入docker-demo
  • 步骤6: 运行构建镜像命令:
    • docker build -t javaweb:1.0 .
    • -t 指的是tag 名称:版本号
    • 最后的 “.” 是指Dockerfile文件的所在目录,当前在此目录,所以用 “.”

Dockerfile:

#指定基础镜像
FROM ubuntu:16.04

#配置环境变量,JDK的安装目录
ENV JAVA DIR=/usr/local

#拷贝jdk和java项目的包6
COPY ./jdk8.tar.gz $JAVA_DIR/
COPY ./docker-demo.jar /tmp/app.jar

#安装JDK
RUN cd $JAVA DIR
&& tar -xf ./jdk8.tar.gz&& mv ./jdk1.8._144 ./java8

#配置环境变量
ENV JAVA_HOME=$JAVA DIR/java8ENV PATH=$PATH:$JAVA HOME/bin

#暴露端口
EXPOSE 8099

#入口,java项目的启动命令
ENTRYPOINT java -jar /tmp/app.jar

DockerCompose

  • Docker Compose可以基于Compose文件帮我们快速的部署分布式应用,而无需手动一个个创建和运行容器
  • Compose文件是一个文本文件,通过指令定义集群中的每个容器如何运行。相当于多个run命令的集合

Compose文件语法示例两种方式:

version:"3.8"
services:
	mysql:                                   #相当于 --name
		image: mysql:5.7.25  
		environment:                    #相当于 -e
			MYSQL_ROOT_PASSWORD: 123
		volumes:                                    #相当于 -v
			- /tmp/mysql/data:/var/lib/mysql
			- /tmp/mysql/conf/hmy.cnf:/etc/mysql/conf.d/hmy.cnf
	Ruoyi :            # --name 临时构建
		build: .   #镜像构建目录
		ports:                       #相当于 -p
			8090: 8090

DockerCompose的详细语法参考官网: https://docs.docker.com/compose/compose-file/

下载配置DockerCompose

下载
curl -L
https://github.com/docker/compose/releases/download/1.29.1/docker-
compose-`uname -s`-`uname -m` > /usr/1ocal/bin/docker-compose

或者直接下载上传到 /usr/local/bin/

修改文件权限
chmod +x /usr/local/bin/docker-compose
Base自动补全命令
curl -L
https://raw.githubusercontent.com/docker/compose/1.29.1/contrib/completion/bash/docker-compose > /etc/bash_completion.d/docker-compose

如果这里出现访问GitHub错误,需要修改自己的hosts文件:

echo "199.232.68.133 raw.githubusercontent.com" >> /etc/hosts

docker-compose构建镜像并运行命令

# cd 要构建的文件目录内
docker-compose up -d  #up 构建并运行   down 停止并删除

更多命令 执行 --help查看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/288072.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Spring-IOC综述

文章迁移自语雀。 怎么查看spring的文档 ioc综述 说到spring的ioc,其实就是控制反转,为啥需要控制反转呢,其实是为了功能的增强,如果不用spring, 我们直接使用工厂方法,静态工厂方法, 都是是可以获取到对象的,但是如果需求变了,我们在类的生成时,添加了很多信息,使用工厂就不…

认真学SQL——MySQL入门之DQL多表查询

多表查询 本质: 把多个表通过主外键关联关系连接(join)合并成一个大表,再去查询 知识点: 外键 foreign key 外键概念: 在从表(多方)创建一个字段,引用主表(一方)的主键,对应的这个字段就是外键。 外键特点: 1:从表外键的值是对主表主键…

ubuntu安装vim报Package vim has no installation candidate

解决办法: sudo apt-get update sudo apt-get upgrade 然后再安装vim即可 sudo apt install vim fr:hunkxu

Java基础-----Date类(二)

文章目录 1. LocalDate:获取本地日期2. 单独获取日期时间类中的每个值3. 使用给定值修改日期4. 设置日期和时间的偏移量5. Instant类6. DateTimeFormatter格式化和解析6.1 将LocalDate转换成字符串String格式6.2 将时间戳转换成字符串String格式6.3 将字符串解析成日期6.4 将字…

爬虫与反爬-localStorage指纹(某易某盾滑块指纹检测)(Hook案例)

概述:本文将用于了解爬虫中localStorage的检测原理以及讲述一个用于检测localStorage的反爬虫案例,最后对该参数进行Hook断点定位 目录: 一、LocalStorage 二、爬虫中localStorage的案例(以某盾滑块为例) 三、如何…

安装beego

执行安装命令 go get github.com/astaxie/beego 报错 换一条执行命令 go install github.com/beego/bee/v2latest 查看是否执行成功 bee version cd 到项目目录上,创建项目 bee new 项目名称 成功!

无人机低空视角:针对人群密集场景的检测、跟踪和计数技术

无人机低空视角:针对人群密集场景的检测、跟踪和计数技术 DroneCrowdPaper简介数据集ECCV2020挑战DroneCrowd(完整版) DroneCrowd Paper 无人机在人群中的检测、跟踪和计数:基准研究。 简介 本文提出了一种时空多尺度注意力网络…

关于标准那些事——第六篇 四象之“朱雀”(要素的表述)

两仪生四象——东方青龙(木)、西方白虎(金)、南方朱雀(火)、北方玄武(水) 分别对应标准编写之四象——层次的编写、要素的编写、要素的表述、格式的编排。 今天来分享一下 要素的表…

使用Matplotlib模拟绘制北京上海气温变化折线图

02 模拟北京上海气温变化折线图 通过本练习,可以掌握如何在一个坐标系中展示多个折线图,以及如何修改折线图的颜色和样式,以及如何设置和显示图例。 在一个坐标系中绘制两条折线 要在一个坐标系中绘制两条这些,我们只需要进行两…

Vue:脚手架Vue-CLI的使用

一、环境准备 vue脚手架(vue-CLI)的使用是基于nodejs环境下的。 你可以简单理解为,Java项目需要再jvm虚拟机上才能编译运行 nodejs的作用就是将vue文件编译成html、css、js代码文件。 如何安装nodejs 参考:https://blog.csdn.net…

25道RabbitMQ面试题含答案(很全)

点击下载《25道RabbitMQ面试题含答案(很全)》 1. 什么是RabbitMQ RabbitMQ是一个开源的消息队列系统,它使用AMQP(高级消息队列协议)标准。RabbitMQ的主要目标是提供可靠的消息传递,确保消息的可靠性和顺序…

git使用(完整流程)

1. 新建仓库 1.右击 git bash 后 输入 git init (仓库为:当前目录) git init name (仓库为:name文件夹) git clone https://github.com/Winnie996/calculate.git //https2.工作区域 工作目录 3. 添加 提交 git add . //工作区添加至暂存区 git commit -m "注释内容&q…

包围盒体积-体积计算

文章目录 环境:1.1 包围盒法介绍:2.1 python代码3.1 可视化4.1 体积Calculation 环境: Open3D 1.1 包围盒法介绍: 求解离散点最优包围空间 常用的凸包算法: AABB OOB 2.1 python代码 conda activete deeplabv3plus(…

UnityRenderStreaming使用记录(一)

UnityRenderStreaming 地址https://github.com/Unity-Technologies/UnityRenderStreaming 一、客户端相关 1、unity工程添加Package 2、WebRTC选Version 3.0.0-pre.6,升级会报错 导入Samples 3、打开Broadcast场景 二、服务器相关 这里使用github上的源码&…

Linux的引导过程与服务控制

一.开机启动的完整过程 引导过程: 1.bios加电自检 检测硬件是否正常,然后根据bios中的启动项设置,去找内核文件 服务器主机开机以后,将根据主板BIOS中的设置对CPU、内存、显卡、键盘灯设备进行初步检测,检测成功后根…

910b安装驱动mindspore和torch

910b对应驱动及对应mindspore安装 910b对应驱动!!!!!千万不要降低或升高内核版本!!!!! 官网显示的两个安装包均无法安装成功安装torch 910b对应驱动 这是官方…

x-cmd pkg | zellij - 比 tmux 更容易上手的终端多路复用器

简介 zellij 是一个面向开发、运营以及任何热爱终端的人的终端多路复用器 (Terminal Multiplexers),类似于 tmux 和 screen,内置许多功能,允许用户扩展并创建自己的个性化环境。 zellij 的设计理念是不牺牲简单性来换…

笔记中所得(已删减)

1.交流电的一个周期内电压/电流的平均值都为0 2.电动势:电池将单位正电荷由负极搬到正极所做的功 5.额定能量:电池的额定容量乘以标称电压,以Wh为单位 6.500mAh意义是可以以500mA的电流放电1小时 7.电池容量的单位是mAh 13.实际电流源不能串联 14. 15. 16. 17. 18. 19.电…

反编译有哪些优势

在现在这个信息化的时代,软件开发中的编程是关键步骤,了解编程的反编译同样至关重要。对于大多数人来说,编程和反编译似乎是两个相对比较陌生的概念,但是都在软件开发周期中起着至关重要的作用。尤其是反编译,它在多个…

了解长短期记忆 (LSTM) 网络:穿越时间和记忆的旅程

一、说明 在人工智能和机器学习的迷人世界中,长短期记忆 (LSTM) 网络作为一项突破性创新脱颖而出。LSTM 旨在解决传统循环神经网络 (RNN) 的局限性,尤其是在学习长期依赖性方面的局限性,彻底改变了我们在各个领域建模和预测序列的能力。本文深…