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
    

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NOIP2023模拟8联测29 C. 蛋糕

NOIP2023模拟8联测29 C. 蛋糕 文章目录 NOIP2023模拟8联测29 C. 蛋糕题目大意思路code 题目大意 你现在得到了一个二维蛋糕&#xff0c;它从左到右可以分成 n n n 列&#xff0c;每列高为 a i a_i ai​ 。对于每一列&#xff0c;又可以从下到上分为 a i a_i ai​ 块&#x…

Jenkins中解决下载maven包巨慢的问题

背景介绍 我们在使用jenkins构建maven项目时由于依赖很多第三方jar包&#xff0c;默认会从maven中央仓库下载&#xff0c;由于maven中央仓库服务器是国外的&#xff0c;所以下载很慢&#xff0c;甚至会超时 解决办法 增加jenkins maven 源配置 如下图所示&#xff0c;增加m…

Apache ActiveMQ (版本 < 5.18.3) (CNVD-2023-69477)RCE修复方案/缓解方案

一、漏洞描述 Apache ActiveMQ 是美国阿帕奇&#xff08;Apache&#xff09;基金会的一套开源的消息中间件&#xff0c;它支持 Java 消息服务、集群、Spring Framework 等。 二、漏洞成因 ActiveMQ 默认开放了 61616 端口用于接收 OpenWire 协议消息&#xff0c;由于针对异常…

Dubbo获取Request、Cookie

RpcContext 关于 RpcContext 的理解&#xff0c;详情见&#xff1a;https://blog.csdn.net/sinat_32502451/article/details/134192733 RpcContext是 Dubbo中的一个类&#xff0c;可以用来获取 Context(上下文)&#xff0c;接着就能获取到 Request、Cookie。 Dubbo获取 Requ…

店铺消费短信通知模板,可以自定义编辑内容群发

店铺消费短信通知模板&#xff0c;可以自定义编辑内容群发 上图可以对短信的发送情况进行查询&#xff0c;可以通过该软件群发短信。 下图为 佳易王 会员管理系统软件&#xff0c;在会员充值或消费的时候&#xff0c;可以设置自动发送短信通知信息。 可以自由设置&#xff0c;…

c#后端接收前端传输的JSON对象处理

c#后端接收到的{"title":"","categoryId":"1","columnId":"1","content":""}这段数据如何处理 在C#后端接收到的这段JSON数据可以使用Newtonsoft.Json库进行解析和处理。首先&#xff0c;确…

OpenFeign的简单介绍和功能实操

前言 本文主要做一下OpenFeign的简单介绍和功能实操&#xff0c;实操主要是OpenFeign的超时和重试&#xff0c;在阅读本文章前&#xff0c;请完成《Nacos 注册中心介绍与实操》内的Nacos多模块生产消费者项目 什么是OpenFeign OpenFeign全名Spring Cloud OpenFeign&#xff…

elemenui puls el-menu default-active不更新问题

有时候我们的目录结构会重新刷新&#xff0c;但是default-active始终保持原来的下标 1.一开始我以为是我给定的属性或者值不对&#xff0c;后来经过一番排查发现根本不是 那我们该如何解决那&#xff1f; 方案1. 通过nextTick去重新赋值方案2. 重写赋值menu方案3. v2和v3都可以…

TensorFlow 的应用场景有哪些

TensorFlow是一个开源的人工智能框架&#xff0c;由Google公司开发。它是一个强大的工具&#xff0c;可以用于数值计算、机器学习和深度学习等领域&#xff0c;具有灵活性、可扩展性、可移植性等特点。 TensorFlow的基本概念包括&#xff1a; Tensor&#xff1a;Tensor是Tens…

【计算机网络】路由器的工作原理

文章目录 输入端口处理和基于目的地转发交换结构输出端口处理排队问题参考资料 路由器的四个组件 输入端口(input port)&#xff1a;执行物理层功能&#xff08;input port 左边方框、output port 右边方框&#xff09;、数据链路层功能&#xff08;input/output port 中间方框…

微服务的定义

个人理解 其实微服务就是DDD cloud native DDD&#xff1a; 提供了微服务的理论基础&#xff0c;一个大型复杂的服务可以按照其对外提供的业务功能划分成相对独立的小服务。注意这个小是相对而言的&#xff0c;每一个小服务其实就是一个独立的子域(subdomain)&#xff0c;它应…

043-第三代软件开发-第三方串口库使用

第三代软件开发-第三方串口库使用 文章目录 第三代软件开发-第三方串口库使用项目介绍第三方串口库使用示例代码 关键字&#xff1a; Qt、 Qml、 QextSerialPort、 QThread、 高频 项目介绍 欢迎来到我们的 QML & C 项目&#xff01;这个项目结合了 QML&#xff08;Qt…

多输入多输出 | Matlab实现k-means-LSTM(k均值聚类结合长短期记忆神经网络)多输入多输出组合预测

多输入多输出 | Matlab实现k-means-LSTM&#xff08;k均值聚类结合长短期记忆神经网络&#xff09;多输入多输出组合预测 目录 多输入多输出 | Matlab实现k-means-LSTM&#xff08;k均值聚类结合长短期记忆神经网络&#xff09;多输入多输出组合预测预测效果基本描述程序设计参…

[云原生1. ] 使用Docker-compose一键部署Wordpress平台

文章目录 1. Docker-compose概述1.1 简介1.2 docker-compose 的三大概念1.3 docker-compose配置模板文件常用的字段1.4 docker-compose 常用命令及格式 2. YAML 文件的详细介绍及编写注意事项2.1 简介2.2 yaml的特性2.2.1 语法特点2.2.2 数据结构2.2.3 引号的区别2.2.4 内置类型…

算法训练营第九天 | 字符串:总结篇

文章目录 力扣 | 344 反转字符串力扣 | 514 反转字符串 || 剑指offer 05. 替换空格力扣 | 151 . 翻转字符串中的单词剑指offer 58-|| .左旋转字符串 一、344 反转字符串 &#xff1a; 344. 反转字符串 - 力扣&#xff08;LeetCode&#xff09; 整体思路&#xff1a; 双指针…

springboot配置https

SSL &#xff1a; secure socket layer 是一种加密协议&#xff0c;SSL主要用于保护数据在 客户端和服务器之间的传输&#xff0c;&#xff0c;防止未经授权的访问和窃取敏感信息 在腾讯云申请ssl证书 申请了之后在我的域名中&#xff0c;&#xff0c;解析 解析了之后&…

【驱动开发】注册字符设备使用gpio设备树节点控制led三盏灯的亮灭

注册字符设备使用gpio设备树节点控制led三盏灯的亮灭 设备树&#xff1a; 头文件&#xff1a; #ifndef __HEAD_H__ #define __HEAD_H__ typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPDR;unsigned int IDR;unsigned int OD…

物流小程序制作教程:从零到有,详细解析

随着互联网的快速发展&#xff0c;物流行业也逐渐实现了数字化转型。为了满足消费者对更加便捷、高效的服务需求&#xff0c;许多物流企业选择制作自己的小程序。本文将通过乔拓云网后台&#xff0c;带你轻松搭建物流小程序&#xff0c;主要分为以下几个部分&#xff1a; 一、进…

发送post请求、携带cookie、响应对象、高级用法

发送post请求 请求体中&#xff0c;两种方式&#xff1a;data{} ⇢ \dashrightarrow ⇢ 编码格式 urlencoded ⇢ \dashrightarrow ⇢ keyvalue&keyvaluejson{} ⇢ \dashrightarrow ⇢ 编码格式是json 使用方式&#xff1a; resrequests.post(url) 模拟登录 import …

Microsoft 365 管理自动化

Microsoft 365 服务被大多数组织广泛使用&#xff0c;每天生成的数据量巨大。解决 Microsoft 365 中的问题可能非常困难&#xff0c;并且使用多个管理中心来保护组织变得复杂。本机控制台还缺少某些批量管理任务、全面的审计报告和基于角色的精细访问控制。 Microsoft 360 管理…