当前位置: 首页 > news >正文

dockefile

文章目录

  • 应用的部署
    • MySql的部署
    • Tomcat的部署
  • dockerfile
    • Docker原理
    • 镜像的制作
      • 容器转镜像
      • Dockerfile
  • 服务编排
    • Docker Compose
  • Docker 私有仓库

应用的部署

  1. 搜索app的镜像
  2. 拉去app的镜像
  3. 创建容器
  4. 操作容器中的app

MySql的部署

  • 容器内的网络服务和外部机器无法直接通信
  • 外部机器和宿主机可以直接通信、
  • 宿主机和容器可以直接通信
  • 容器中的服务需要被外部访问时,可以将 容器中提供服务的端口映射到宿主机的端口上,外部访问宿主机的端口,就能间接访问容器服务
  • 称为 端口映射
  1. 搜索mysql镜像

    sudo docker search mysql
    
  2. 拉取镜像

    sudo docker pull mysql
    
  3. 创建容器,设置端口映射,目录映射

    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原理

  1. Docker 镜像本质是

    一个分层的文件系统

  2. Docker中的一个centos镜像为什么只有200mb,而一个centos操作系统的iso文件要几个G

    centos的ios镜像文件包含了 rootfsbootfs,而docker的centos镜像复用了操作系统的bootfs,只有 rootfs和其他镜像层

  3. docker中一个tomcat镜像为什么有500mb,而一个tomcat安装包只有70mb

    docker中镜像是分层的,分层下载,tomcat只有70多mb,但是他还需要依赖父镜像和基础镜像,所以对外暴露出tomcat镜像有500多

镜像的制作

dockerfile构建的过程
在这里插入图片描述

容器转镜像

  1. 容器转镜像

    目录挂载的是不会写道commit镜像里面去

    docker commit 容器id 镜像名称:版本号
    
  2. 将镜像打包成压缩文件

    docker save -o 压缩文件名称 镜像名称:版本号
    
  3. 将压缩文件解压

    docker load -i 压缩文件名称
    
  4. 我们将自己的实现的应用转化成一个镜像,将其转化成一个压缩文件,传给别人,别人使用这个镜像,生成对应的容器,就能够在自己那边部署使用该应用了

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是一个编排 多容器分布式部署的工具,提供命令集管理容器化应用的完整开发周期,包括服务构建,启动和停止

  1. 利用Dockerfile定义运行环境镜像
  2. 使用docker-compose.yml定义组成应用的各服务
  3. 运行docker-compose up 启动应用

安装docker-compose

Docker 私有仓库

  1. 拉取私有仓库镜像

    docker pull registry
    
  2. 启动私有仓库容器

     docker run -id --name=registry -p 5000:5000 registry
  3. 打开浏览器,输入 私有仓库ip:5000/v2/_catalog 可以看到 {"repositories":[]} 表示私有仓库搭建成功

  4. 修改daemon.json

    sudo vim /etc/docker/daemon.json
    //添加
    "insecure-registries":["私有服务器ip:5000"]
    
  5. 重启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表示名称&#xff0c;编号是1 }生成python文件 安装grpcio和grpcio-tools库 pip install grpcio #安装grpc pip install grpcio-tools #安装grpc tools生成…...

keepalived与nginx与MySQL

keepalived VRRP介绍 集群&#xff08;cluster&#xff09;技术是一种较新的技术&#xff0c;通过集群技术&#xff0c;可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益&#xff0c;其任务调度则是集群系统中的核心技术。 集群组成后&#xff0c;可…...

Pod基础概念

Pod是kubernetes中最小的资源管理组件&#xff0c;Pod也是最小化运行容器化应用的资源对象。一个Pod代表着集群中运行的一个进程。kubernetes中其他大多数组件都是围绕着Pod来进行支撑和扩展Pod功能的&#xff0c;例如&#xff0c;用于管理Pod运行的StatefulSet和Deployment等控…...

WebDAV之π-Disk派盘 + 一叶日记

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

在IDEA运行spark程序(搭建Spark开发环境)

建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境&#xff0c;以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习&#xff0c;在window系统上可以不用安装hadoop和spark&#xff0c;spark程序可以通过pom.xml的文件配置&#xff0c;添加…...

无穷级数例子

计算 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​(n11​n21​n31​...n2n−11​n2n1​) 解&#xff1a; lim ⁡ x …...

C++构造函数和析构函数详解

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

MySQL数据库干货_16—— SQL99标准中的查询

SQL99标准中的查询 MySQL5.7 支持部分的SQL99 标准。 SQL99中的交叉连接(CROSS JOIN) 示例&#xff1a; 使用交叉连接查询 employees 表与 departments 表。 select * from employees cross join departments;SQL99中的自然连接(NATURAL JOIN) 自然连接 连接只能发生在两…...

LLM大语言模型训练中常见的技术:微调与嵌入

微调&#xff08;Fine-Tuning&#xff09;&#xff1a; 微调是一种用于预训练语言模型的技术。在预训练阶段&#xff0c;语言模型&#xff08;如GPT-3.5&#xff09;通过大规模的文本数据集进行训练&#xff0c;从而学会了语言的语法、语义和世界知识。然后&#xff0c;在微调阶…...

每日一练 | 网络工程师软考真题Day47

阅读以下关于Linux文件系统和Samba效劳的说明&#xff0c;答复以下【问题1】至【问题3】。 【说明】 Linux系统采用了树型多级目录来管理文件&#xff0c;树型结构的最上层是根目录&#xff0c;其他的所有目录都是从根目录生成的。通过Samba可以实现基于Linux操作系统的效劳器和…...

Kafka - 监控工具 Kafka Eagle:实时洞察Kafka集群的利器

文章目录 引言Kafka Eagle简介Kafka Eagle的特点Kafka Eagle的优势使用Kafka Eagle的步骤结论 引言 在现代大数据架构中&#xff0c;Apache Kafka已成为一个不可或缺的组件&#xff0c;用于可靠地处理和传输大规模的数据流。然而&#xff0c;随着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)

&#x1f601;博客主页&#x1f601;&#xff1a;&#x1f680;https://blog.csdn.net/wkd_007&#x1f680; &#x1f911;博客内容&#x1f911;&#xff1a;&#x1f36d;嵌入式开发、Linux、C语言、C、数据结构、音视频&#x1f36d; &#x1f923;本文内容&#x1f923;&a…...

Hadoop时代落幕,开源大数据将何去何从?

Hadoop时代落幕&#xff0c;谁是大数据的新宠儿&#xff1f; 1、 1、...

作为一名程序员面临哪些挑战?应该如何应对?

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

flink的安装与使用(ubuntu)

组件版本 虚拟机&#xff1a;ubuntu-20.04.6-live-server-amd64.iso flink&#xff1a;flink-1.18.0-bin-scala_2.12.tgz jdk&#xff1a;jdk-8u291-linux-x64.tar flink 下载 1、官网&#xff1a;https://flink.apache.org/downloads/ 2、清华镜像&#xff1a;https://mirr…...

容器:软件性能测试的最佳环境

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

【Qt控件之QMovie】详解

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

Star History 九月开源精选 |开源 GitHub Copilot 替代

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

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段&#xff1a; 构建阶段&#xff08;Build Stage&#xff09;&#xff1a…...

谷歌浏览器插件

项目中有时候会用到插件 sync-cookie-extension1.0.0&#xff1a;开发环境同步测试 cookie 至 localhost&#xff0c;便于本地请求服务携带 cookie 参考地址&#xff1a;https://juejin.cn/post/7139354571712757767 里面有源码下载下来&#xff0c;加在到扩展即可使用FeHelp…...

CVPR 2025 MIMO: 支持视觉指代和像素grounding 的医学视觉语言模型

CVPR 2025 | MIMO&#xff1a;支持视觉指代和像素对齐的医学视觉语言模型 论文信息 标题&#xff1a;MIMO: A medical vision language model with visual referring multimodal input and pixel grounding multimodal output作者&#xff1a;Yanyuan Chen, Dexuan Xu, Yu Hu…...

渗透实战PortSwigger靶场-XSS Lab 14:大多数标签和属性被阻止

<script>标签被拦截 我们需要把全部可用的 tag 和 event 进行暴力破解 XSS cheat sheet&#xff1a; https://portswigger.net/web-security/cross-site-scripting/cheat-sheet 通过爆破发现body可以用 再把全部 events 放进去爆破 这些 event 全部可用 <body onres…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Java线上CPU飙高问题排查全指南

一、引言 在Java应用的线上运行环境中&#xff0c;CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时&#xff0c;通常会导致应用响应缓慢&#xff0c;甚至服务不可用&#xff0c;严重影响用户体验和业务运行。因此&#xff0c;掌握一套科学有效的CPU飙高问题排查方法&…...

安卓基础(aar)

重新设置java21的环境&#xff0c;临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的&#xff1a; MyApp/ ├── app/ …...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)

Aspose.PDF 限制绕过方案&#xff1a;Java 字节码技术实战分享&#xff08;仅供学习&#xff09; 一、Aspose.PDF 简介二、说明&#xff08;⚠️仅供学习与研究使用&#xff09;三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

《C++ 模板》

目录 函数模板 类模板 非类型模板参数 模板特化 函数模板特化 类模板的特化 模板&#xff0c;就像一个模具&#xff0c;里面可以将不同类型的材料做成一个形状&#xff0c;其分为函数模板和类模板。 函数模板 函数模板可以简化函数重载的代码。格式&#xff1a;templa…...

Docker 本地安装 mysql 数据库

Docker: Accelerated Container Application Development 下载对应操作系统版本的 docker &#xff1b;并安装。 基础操作不再赘述。 打开 macOS 终端&#xff0c;开始 docker 安装mysql之旅 第一步 docker search mysql 》〉docker search mysql NAME DE…...