dockefile

news2024/11/15 9:17:52

文章目录

  • 应用的部署
    • 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_gcc

RUN  mkdir /home/user/myapp

ADD test.cpp /home/user/myapp

WORKDIR /home/user/myapp

RUN  g++ test.cpp -o test

CMD ["./test"]


运行

 docker build -f ./my.dockerfile -t my:1.0 .
 docker images
 docker 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.coloradmin.cn/o/1164192.html

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

相关文章

软件测试 —— 移动端测试

1. 移动端 指移动设备&#xff08;如智能手机、平板电脑、智能手表等&#xff09;上的操作系统和应用程序。移动设备具有便携性和多功能性&#xff0c;可以随时随地连接互联网&#xff0c;提供丰富的应用和服务。 2. 移动端应用分类 (1) 原生应用&#xff08;Native App&…

访问单通道Mat中的值之at()、ptr()、iscontinuous()【C++的OpenCV 第十四课-OpenCV基础强化(二)】

&#x1f389;&#x1f389;&#x1f389; 欢迎各位来到小白 p i a o 的学习空间&#xff01; \color{red}{欢迎各位来到小白piao的学习空间&#xff01;} 欢迎各位来到小白piao的学习空间&#xff01;&#x1f389;&#x1f389;&#x1f389; 目录 一、访问的方法 \color{blu…

voronoi diagram(泰森多边形) 应用 - Empire Strikes Back

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 voronoi 图求解点击前往 题目链接&#xff1a;https://vjudge.net/problem/URAL-1520 题目大意 有一个城市&#xff0c;形状是圆形。 城市里有很多化工场。 现在想…

matlab双目标定中基线物理长度获取

在MATLAB进行双目摄像机标定时,通常会获得相机的内参,其中包括像素单位的焦距(focal length)以及物理单位的基线长度(baseline)。对于应用中的深度估计和测量,基线长度的物理单位非常重要,因为它直接影响到深度信息的准确性。有时候,您可能只能获取像素单位的焦距和棋…

华为RS设备状态及接口配置命令

1、查看硬件信息 ①查看序列号 查看整机序列号 display esn display sn ②、查看功率 电源功率 display power 查看光模块功率 display transceiver interface gigabitethernet 1/0/0 verbose ③、查看风扇 display fan ④、查看温度 display temperature all ⑤、查看硬…

微信聚合聊天系统的便捷功能:自动发圈,跟圈

快到双十一咯&#xff0c;很多商家和自媒体、运营人都在发圈做运营&#xff0c;所以现在发圈的频率也会比以往的多一些&#xff0c;但事情一多就会担心今天的朋友圈忘记发、漏发或者错过发圈的时间导致错过私域里的好友、客户会错过活动时间。 其实这些都是可以不用担心&#…

Python 正则表达式(RegEx)指南

正则表达式&#xff08;RegEx&#xff09;是一系列字符&#xff0c;形成了一个搜索模式。RegEx 可用于检查字符串是否包含指定的搜索模式。 RegEx 模块 Python 中有一个内置的包叫做 re&#xff0c;它可以用于处理正则表达式。导入 re 模块&#xff1a; import rePython 中的…

怪物猎人世界Mod制作——替换模型、音效

太喜欢《怪物猎人&#xff1a;世界》这款游戏了&#xff0c;在冰原更新后&#xff0c;游戏版本趋于稳定。卡普空做一些bug修复后宣布不再更新此游戏&#xff0c;游戏版本稳定在v15.11.01。从此这个游戏长达三年未更新&#xff0c;我玩了八百小时也未发现什么明显BUG&#xff0c…

Linux多虚拟主机和配置限制访问与日志

目录 一、多虚拟主机 1.配置单网卡多个ip 2.给每个主机站点设置主页 3.测试访问 二、限制访问 1.限制所有 2.放行192.168.0.0/24网段访问 三、日志与状态页 1.定义访客日志 2.状态页配置 一、多虚拟主机 1.配置单网卡多个ip ip address add 192.168.0.231/24 dev e…

阿里云倚天实例已为数千家企业提供算力,性价比提升超30%

在2023云栖大会上&#xff0c;阿里云宣布倚天ECS实例已服务数千家企业&#xff0c;覆盖电商、生命科学、交通物流及游戏等领域&#xff0c;整体算力性价比提升超30%。 2022年&#xff0c;平头哥自研云原生CPU倚天710在阿里云数据中心规模化部署&#xff0c;并向云上企业提供算力…

“AI解析认知+大数据替代推荐”,云汉芯城推出【芯片智选】元器件替代查询工具

面对数以亿计的元器件型号&#xff0c;工程师们往往会遇到经常使用的物料需要替代但难以选型、遍查规格书也无法对应上所有参数&#xff0c;或是新找到的物料资料不全等问题。如何进行高效准确的选型与替代决策是一项极具挑战性的任务。 在此背景下&#xff0c;云汉芯城结合自研…

机器人制作开源方案 | 宠物智能机器人

一、作品简介 作者&#xff1a;陈瑛、卢文博、刘沈军、 浦津、葛望东单位&#xff1a;南京林业大学指导老师&#xff1a;金慧萍、田涛 1. 背景调研及研究意义 1.1背景调研 随着我国社会经济水平的飞速发展和城市化的进程加速推进&#xff0c;居民生活水平有了较 大幅度的提…

如何解决网站被攻击问题:高防服务器与高防CDN的选择

在当今数字时代&#xff0c;网站攻击已经成为严重的威胁&#xff0c;对网站的可用性和数据安全构成潜在风险。为了解决这个问题&#xff0c;企业需要考虑采用高防服务器或高防CDN等防护方案。本文将详细说明这两种方案的优劣势&#xff0c;并分析大、中、小型企业各自适合的防护…

5大自动化测试的Python框架 【实用干货】

自从2018年被评选为编程语言以来&#xff0c;Python在各大排行榜上一直都是名列前茅。 目前&#xff0c;它在Tiobe指数中排名第三个&#xff0c;仅次于Java和C。随着该编程语言的广泛使用&#xff0c;基于Python的自动化测试框架也应运而生&#xff0c;且不断发展与丰富。 因…

VB.NET—Form问题记录

目录 前言: 过程: 总结: 升华: 前言: 分享一个VB.NET遇到的一个问题&#xff0c;开始一直没有解决&#xff0c;这个问题阻碍着我前进成为我路上的拦路虎&#xff0c;千方百计的想要绕过去&#xff0c;但事与愿违怎么也绕不过去&#xff0c;因为运行不了窗体&#xff0c;程序…

【特殊矩阵的压缩存储】

文章目录 特殊矩阵的压缩存储特殊的矩阵 特殊矩阵的压缩存储 矩阵&#xff1a;一个由m x n个元素排成的m行n列的表。 矩阵的常规存储&#xff1a; 将矩阵描述为一个二维数组。 矩阵的常规存储的特点&#xff1a; 可以将元素进行随机存取&#xff1b; 矩阵运算非常简单&#xf…

【Unity实战】最全面的库存系统(二)

文章目录 先来看看最终效果前言箱子库存箱子存储物品玩家背包快捷栏满了,物品自动加入背包修复开着背包拾取物品不会刷新显示的问题将箱子库存和背包分开,可以同时打开完结先来看看最终效果 前言 本期紧跟着上期,继续来完善我们的库存系统,实现箱子库存和人物背包 箱子库…

Docker:本地目录挂载

Docker&#xff1a;本地目录挂载 1. 案例&#xff1a;MySQL容器的数据挂载2. 将MySQL挂载到我们指定的目录 1. 案例&#xff1a;MySQL容器的数据挂载 查看MySQL容器&#xff0c;判断是否有数据卷挂载基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载 [root172 _…

前端BOM、DOM

文章目录 BOM操作window对象navigator对象&#xff08;了解即可&#xff09;history对象location对象弹出框警告框确认框提示框 计时相关1.过一段时间之后触发&#xff08;一次&#xff09;2.每隔三秒时间触发一次 DOM操作HTML DOM树 查找标签直接查找间接查找 节点操作操作 获…

【ArcGIS模型构建器】06:ArcGIS中DOM批量分幅教程

ArcGIS中利用模型构建器实现DOM批量分幅裁剪。 文章目录 1. 加载数据2. 批量分幅1. 加载数据 批量分幅通常是基于数字正射影像来实现。 数字正射影像(DOM.tif)CASS标准图幅(shp) 2. 批量分幅 单个图幅可以通过裁剪或者按掩膜提取工具来进行,批量分幅采用模型构建器进行。…