dockefile
文章目录
- 应用的部署
- MySql的部署
- Tomcat的部署
- dockerfile
- Docker原理
- 镜像的制作
- 容器转镜像
- Dockerfile
- 服务编排
- Docker Compose
- Docker 私有仓库
应用的部署
- 搜索app的镜像
- 拉去app的镜像
- 创建容器
- 操作容器中的app
MySql的部署
- 容器内的网络服务和外部机器无法直接通信
- 外部机器和宿主机可以直接通信、
- 宿主机和容器可以直接通信
- 容器中的服务需要被外部访问时,可以将
容器中提供服务的端口映射到宿主机的端口
上,外部访问宿主机的端口,就能间接访问容器服务 - 称为
端口映射
-
搜索mysql镜像
sudo docker search mysql
-
拉取镜像
sudo docker pull mysql
-
创建容器,设置端口映射,目录映射
mkdir mysql cd mysql
➜ mysql sudo docker run -id \ > -p 3307:3306 \ > --name=c_mysql \ > -v $PWD/conf:/etc/mysql/conf.d \ > -v $PWD/logs:/logs \ > -v $PWD/data:/var/lib/mysql \ > -e MYSQL_ROOT_PASSWORD=123456 \ > mysql
-
参数说明
- -p 3307:3306将容器的3306端口映射到宿主机的3307端口
- -v $PWD/conf:/etc/mysql/conf.d :将主机当前目录下的
conf
挂载到容器的/etc/mysql/conf.d
上,配置文件 - -v $PWD/logs:/logs :将当前主机目录下的logs挂载到容器的logs,日志目录
- -e MYSQL_ROOT_PASSWORD=123456: 初始化root用户密码
-
使用
正常的使用mysql
-
本地访问到docker中的mysql 数据库
sudo mysql -uroot -P 3307 -h 127.0.0.1 -p
Tomcat的部署
和上述mysql部署类似
docker run -id --name=c_tomcat -p 8080:8080 -v $PWD:/usr/local/tomcat/webapps tomcat
dockerfile
Docker原理
-
Docker 镜像本质是
一个分层的文件系统
-
Docker中的一个centos镜像为什么只有200mb,而一个centos操作系统的iso文件要几个G
centos的ios镜像文件包含了
rootfs
和bootfs
,而docker的centos镜像复用了操作系统的bootfs,只有rootfs和其他镜像层
-
docker中一个tomcat镜像为什么有500mb,而一个tomcat安装包只有70mb
docker中镜像是分层的,分层下载,tomcat只有70多mb,但是他还需要依赖父镜像和基础镜像,所以对外暴露出tomcat镜像有500多
镜像的制作
dockerfile构建的过程
容器转镜像
-
容器转镜像
目录挂载的是不会写道commit镜像里面去
docker commit 容器id 镜像名称:版本号
-
将镜像打包成压缩文件
docker save -o 压缩文件名称 镜像名称:版本号
-
将压缩文件解压
docker load -i 压缩文件名称
-
我们将自己的实现的应用转化成一个镜像,将其转化成一个压缩文件,传给别人,别人使用这个镜像,生成对应的容器,就能够在自己那边部署使用该应用了
Dockerfile
Dockerfile概念
- Dockerfile是一个文本文件
- 里面包含了一条条的指令
- 每一条指令构建一层,基于基础镜像,最终构建出一个新的镜像
- 可以给别人提供一个完全一致的开发环境
我们可以登陆hub.docker.com查看别人是怎么写dockerfile的
关键字 | 作用 | 备注 |
---|---|---|
FROM | 指定父镜像 | 指定dockerfile是基于哪个 image 构建的 |
MAINTAINER | 作者信息 | 表明谁写的 |
RUN | 执行命令 | 容器创建的过程中执行,格式:RUN command 如: RUN yum install-y vim ,进入后自动安装vim |
CMD | 容器启动命令 | CMD command param1 pararm2 用于设置部署容器实例是运行的默认命令 CMD /bin/bash |
ENTRYPOINT | 入口 | 配置容器启动后执行的命令,并且不可被 docker run 提供的参数覆盖。每个 Dockerfile 中只能有一个ENTRYPOINT,当指定多个时,只有最后一个起效。 |
ADD | 添加文件 | ADD src dst 添加src 文件到dst路径下,同时还能 解压 |
ENV | 环境变量 | ENV== |
ARG | 构建参数 | |
WORKDIR | 工作目录 | 进入容器的默认目录WORKDIR /usr |
EXPOSE | 端口 | 使容器内的应用可以通过端口和外界交互 EXPOSE 80 |
VOLUME | 挂载的目录 | 用于在容器中创建一个或者多个挂载点,这些点可以用来在容器和主机之间共享数据,volume命令只是在容器中创建一个挂载点,不会在镜像中包含任何数据,需要我们使用COPY,ADD命令将数据拷贝到镜像中 |
docker build -f ./centos_file -t ccc:1 .
- -f:指定dockerfile的文件路径
- -t:指定镜像的名称和版本号
示例
mkdir docker
cd docker
vim test.cpp
输入
#include <iostream>
using namespace std;int main()
{char op;float num1, num2;cout << "输入运算符:+、-、*、/ : ";cin >> op;cout << "输入两个数: ";cin >> num1 >> num2;switch(op){case '+':cout << num1+num2;break;case '-':cout << num1-num2;break;case '*':cout << num1*num2;break;case '/':if (num2 == 0){cout << "error不能除以零";break;}else{cout << num1 / num2;break;}default:// 如果运算符不是 +, -, * 或 /, 提示错误信息cout << "Error! 请输入正确运算符。";break;}return 0;
}
vim my.dockerfile
//输入
FROM codenvy/cpp_gccRUN mkdir /home/user/myappADD test.cpp /home/user/myappWORKDIR /home/user/myappRUN g++ test.cpp -o testCMD ["./test"]
运行
docker build -f ./my.dockerfile -t my:1.0 .docker imagesdocker run -it my:1.0 /bin/bash
服务编排
原理:
可能在一个应用中包含了若干个应用,如mysql,redis之类的
所以,可以按照一定的业务规则批量的管理容器
Docker Compose
Docker Compose是一个编排 多容器分布式部署
的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止
- 利用Dockerfile定义运行环境镜像
- 使用docker-compose.yml定义组成应用的各服务
- 运行docker-compose up 启动应用
安装docker-compose
Docker 私有仓库
-
拉取私有仓库镜像
docker pull registry
-
启动私有仓库容器
docker run -id --name=registry -p 5000:5000 registry
-
打开浏览器,输入
私有仓库ip:5000/v2/_catalog
可以看到{"repositories":[]}
表示私有仓库搭建成功 -
修改daemon.json
sudo vim /etc/docker/daemon.json //添加 "insecure-registries":["私有服务器ip:5000"]
-
重启docker服务
systemctl restart docker docker start registry
-
将镜像上传到私有仓库
-
标记镜像为私有仓库的镜像
docker tag wxm:1.0 192.168.0.22:5000/wxm:1.0
-
推送镜像到远程仓库
docker push 192.168.0.22:5000/wxm:1.0
-
-
从私有仓库拉取镜像
docker pull 192.168.0.22:5000/wxm:1.0
相关文章:

dockefile
文章目录 应用的部署MySql的部署Tomcat的部署 dockerfileDocker原理镜像的制作容器转镜像Dockerfile 服务编排Docker Compose Docker 私有仓库 应用的部署 搜索app的镜像拉去app的镜像创建容器操作容器中的app MySql的部署 容器内的网络服务和外部机器无法直接通信外部机器和…...
rpc入门笔记 0x02 protobuf的杂七杂八
syntax "proto3"; // 这是个proto3的文件message HelloRequest{ // 创建数据对象string name 1; // name表示名称,编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…...

keepalived与nginx与MySQL
keepalived VRRP介绍 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。 集群组成后,可…...
Pod基础概念
Pod是kubernetes中最小的资源管理组件,Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的,例如,用于管理Pod运行的StatefulSet和Deployment等控…...

WebDAV之π-Disk派盘 + 一叶日记
推荐一款操作方便、界面简洁,记录生活点滴与心情,具有诗情画意的日记软件。 一叶日记是一款记录日记的手机软件,在这款软件中它里面有着各种不同的工具,可以方便用户去随时随地的记录日记,同时里面还有着各种不同的主题背景,可以供用户去选择使用各种功能,给用户记录带…...

在IDEA运行spark程序(搭建Spark开发环境)
建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加…...
无穷级数例子
计算 lim x → ∞ ( 1 n 1 1 n 2 1 n 3 . . . 1 n 2 n − 1 1 n 2 n ) 计算\lim _{x\to \infty} (\frac{1}{n1} \frac{1}{n2}\frac{1}{n3} ... \frac{1}{n2n-1} \frac{1}{n2n} ) 计算x→∞lim(n11n21n31...n2n−11n2n1) 解: lim x …...

C++构造函数和析构函数详解
一、构造函数 1、概念 构造函数是特殊的成员函数,需要注意的是,构造函数虽然名叫做构造,但是构造函数的主要任务并不是开空间创建对象,而是初始化对象。 2、特征 函数名与类名相同。无返回值对象实例化时编译器自动调用对应的…...

MySQL数据库干货_16—— SQL99标准中的查询
SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例: 使用交叉连接查询 employees 表与 departments 表。 select * from employees cross join departments;SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两…...
LLM大语言模型训练中常见的技术:微调与嵌入
微调(Fine-Tuning): 微调是一种用于预训练语言模型的技术。在预训练阶段,语言模型(如GPT-3.5)通过大规模的文本数据集进行训练,从而学会了语言的语法、语义和世界知识。然后,在微调阶…...

每日一练 | 网络工程师软考真题Day47
阅读以下关于Linux文件系统和Samba效劳的说明,答复以下【问题1】至【问题3】。 【说明】 Linux系统采用了树型多级目录来管理文件,树型结构的最上层是根目录,其他的所有目录都是从根目录生成的。通过Samba可以实现基于Linux操作系统的效劳器和…...

Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器
文章目录 引言Kafka Eagle简介Kafka Eagle的特点Kafka Eagle的优势使用Kafka Eagle的步骤结论 引言 在现代大数据架构中,Apache Kafka已成为一个不可或缺的组件,用于可靠地处理和传输大规模的数据流。然而,随着Kafka集群规模的不断增长&…...
infercnv hpc东南服务器 .libpath 最终使用monocle2环境安装
安装不成功就用conda安装 conda install -c bioconda bioconductor-infercnv Installing infercnv There are several options for installing inferCNV. Choose whichever you prefer: Option A: Install infercnv from BioConductor (preferred) From within R, run the…...

【音视频 | Ogg】RFC3533 :Ogg封装格式版本 0(The Ogg Encapsulation Format Version 0)
😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C、数据结构、音视频🍭 🤣本文内容🤣&a…...
Hadoop时代落幕,开源大数据将何去何从?
Hadoop时代落幕,谁是大数据的新宠儿? 1、 1、...

作为一名程序员面临哪些挑战?应该如何应对?
在现今互联网失业潮的大环境下,每一位程序员都面临着被淘汰的风险,但逃避没有用,今天我们就来总结这些挑战与风险,找准自己的方向与定位,做好职业规划,希望这些信息能对大家有所帮助。 一、面临的挑战 老…...

flink的安装与使用(ubuntu)
组件版本 虚拟机:ubuntu-20.04.6-live-server-amd64.iso flink:flink-1.18.0-bin-scala_2.12.tgz jdk:jdk-8u291-linux-x64.tar flink 下载 1、官网:https://flink.apache.org/downloads/ 2、清华镜像:https://mirr…...

容器:软件性能测试的最佳环境
容器总体上提供了一种经济的和可扩展的方法来测试产品在实际情况下的性能,同时还能保持较低的资源成本和开销成本。 软件性能和可伸缩性是我们谈论应用程序开发时经常遇到的话题。一个很大的原因是应用程序的性能和可伸缩性直接影响其在市场上的成功。一个应用程序…...

【Qt控件之QMovie】详解
Qt控件之QMovies 概述公共类型属性公共函数公共槽函数信号静态公共成员示例使用场景 概述 QMovie类是一个方便的类,用于播放具有QImageReader的动画。此类用于显示没有声音的简单动画。如果您想显示视频和媒体内容,请改用Qt多媒体框架Qt Multimedia mul…...

Star History 九月开源精选 |开源 GitHub Copilot 替代
虽然大火了近一年,但是截至目前 AI 唯一破圈的场景是帮助写代码(谷歌云旗下的 DORA 年度报告也给 AI 泼了盆冷水)。不过对于软件开发来说,生成式人工智能绝对已经是新的标配。 本期 Star History 收集了一些开源 GitHub Copilot …...

龙虎榜——20250610
上证指数放量收阴线,个股多数下跌,盘中受消息影响大幅波动。 深证指数放量收阴线形成顶分型,指数短线有调整的需求,大概需要一两天。 2025年6月10日龙虎榜行业方向分析 1. 金融科技 代表标的:御银股份、雄帝科技 驱动…...

Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

超短脉冲激光自聚焦效应
前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应,这是一种非线性光学现象,主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场,对材料产生非线性响应,可能…...
测试markdown--肇兴
day1: 1、去程:7:04 --11:32高铁 高铁右转上售票大厅2楼,穿过候车厅下一楼,上大巴车 ¥10/人 **2、到达:**12点多到达寨子,买门票,美团/抖音:¥78人 3、中饭&a…...
在四层代理中还原真实客户端ngx_stream_realip_module
一、模块原理与价值 PROXY Protocol 回溯 第三方负载均衡(如 HAProxy、AWS NLB、阿里 SLB)发起上游连接时,将真实客户端 IP/Port 写入 PROXY Protocol v1/v2 头。Stream 层接收到头部后,ngx_stream_realip_module 从中提取原始信息…...

React19源码系列之 事件插件系统
事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
SQL进阶之旅 Day 22:批处理与游标优化
【SQL进阶之旅 Day 22】批处理与游标优化 文章简述(300字左右) 在数据库开发中,面对大量数据的处理任务时,单条SQL语句往往无法满足性能需求。本篇文章聚焦“批处理与游标优化”,深入探讨如何通过批量操作和游标技术提…...

表单设计器拖拽对象时添加属性
背景:因为项目需要。自写设计器。遇到的坑在此记录 使用的拖拽组件时vuedraggable。下面放上局部示例截图。 坑1。draggable标签在拖拽时可以获取到被拖拽的对象属性定义 要使用 :clone, 而不是clone。我想应该是因为draggable标签比较特。另外在使用**:clone时要将…...
【中间件】Web服务、消息队列、缓存与微服务治理:Nginx、Kafka、Redis、Nacos 详解
Nginx 是什么:高性能的HTTP和反向代理Web服务器。怎么用:通过配置文件定义代理规则、负载均衡、静态资源服务等。为什么用:提升Web服务性能、高并发处理、负载均衡和反向代理。优缺点:轻量高效,但动态处理能力较弱&am…...