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,一经查实,立即删除!

相关文章

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;由于针对异常…

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

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

OpenFeign的简单介绍和功能实操

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

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

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

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 内置类型…

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; 一、进…

Microsoft 365 管理自动化

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

云计算的思想、突破、产业实践

文章目录 &#x1f4d5;我是廖志伟&#xff0c;一名Java开发工程师、Java领域优质创作者、CSDN博客专家、51CTO专家博主、阿里云专家博主、清华大学出版社签约作者、产品软文创造者、技术文章评审老师、问卷调查设计师、个人社区创始人、开源项目贡献者。&#x1f30e;跑过十五…

【C++项目】高并发内存池项目第八讲 项目总结和面试问题分享

项目总结面试分享 1.项目总结1.1优点1.2不足1.3面试常见问题 2.面试分享项目部分C语法部分 项目源代码&#xff1a;高并发内存池 1.项目总结 1.1优点 增加动态申请的效率减少陷入内核的次数减少系统内存碎片提升内存使用率尽量减少锁竞争应用于多核多线程场景 1.2不足 当前…

万字解析设计模式之原型模式与建造者模式

一、原型模式 1.1概述 原型模式是一种创建型设计模式&#xff0c;其目的是使用已有对象作为原型来创建新的对象。原型模式的核心是克隆&#xff0c;即通过复制已有对象来创建新对象&#xff0c;而不是通过创建新对象的过程中独立地分配和初始化所有需要的资源。这种方式可以节…

shell script 案例二

需求&#xff0c;运行程序&#xff0c;用户输入firstname&#xff0c;回车&#xff0c;再次提示输入lastname&#xff0c;然后回车&#xff0c;屏幕打印fullname信息 注意&#xff1a;前期写程序要注意规范&#xff0c;方便以后自己写多了回头看可以看的懂&#xff0c;程序代码…

如何在麒麟上安装 ONLYOFFICE 桌面编辑器

我们很高兴地告诉大家&#xff0c;ONLYOFFICE 桌面编辑器现已上架麒麟软件商店。请阅读下文了解详情。 关于麒麟 麒麟是一款国产操作系统&#xff0c;主要是为了满足中国市场的需求和偏好而设计的。 它能够与各种硬件平台和软件应用程序的广泛兼容&#xff0c;因而受到认可。…

路由器如何设置IP地址

IP地址是计算机网络中的关键元素&#xff0c;用于标识和定位设备和主机。在家庭或办公室网络中&#xff0c;路由器起到了连接内部设备和外部互联网的关键作用。为了使网络正常运行&#xff0c;需要正确设置路由器的IP地址。本文将介绍如何设置路由器的IP地址&#xff0c;以确保…

性能测试 —— Jmeter日志查看与分析

一、Jmeter日志概览 Jmeter日志文件保存在bin目录中&#xff0c;名称为jmeter.log。我们可以在面板中直接察看日志&#xff0c;点击右上角黄色标志物可以打开日志面板&#xff0c;再次点击收起 另外&#xff0c;Jmeter可以很方便地设置日志输出级别&#xff1a; 通过这种方式修…

腾讯云轻量级服务器哪个镜像比较好?

腾讯云轻量应用服务器镜像是什么&#xff1f;镜像就是操作系统&#xff0c;轻量服务器镜像系统怎么选择&#xff1f;如果是用来搭建网站腾讯云百科txybk.com建议选择选择宝塔Linux面板腾讯云专享版&#xff0c;镜像系统根据实际使用来选择&#xff0c;腾讯云百科来详细说下腾讯…