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

【docker1】指令,docker-compose,Dockerfile

文章目录

  • 1.pull/image,run/ps(进程),exec/commit
  • 2.save/load:docker save + 镜像id,不是容器id
  • 3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一张docker网卡,docker网卡通过nat方式为每个容器分配ip
    • 3.1 link:先docker rm -f删除nginx和alpine两个容器,在alpine中ping myng(相当于域名)的话自动解析为myng的ip
    • 3.2 docker-compose .yml:不用link,location匹配
  • 4.Dockerfile:镜像像程序,容器像进程


1.pull/image,run/ps(进程),exec/commit

docker和vmware虚拟机一样由三部分构成:镜像(image)是像ubuntu镜像文件(iso,img文件),容器(ps)是一个正在运行的虚拟机,仓库是存放镜像文件场所(dockerhub)。tar文件类似于vm使用时的vmdk文件,可将一个镜像直接保存成一个tar文件,别人load重新加载成一个镜像,run起来成了一个虚拟机。Dockfile是一个很短的配置文件,通过写"如何构建"的步骤来指定一个镜像如何构建的,通过docker build指令可将Dockfile构建成一个镜像。仓库保存了一些公有镜像如ubuntu镜像,nginx镜像,mysql镜像,tomcat镜像等。
在这里插入图片描述
ubuntu安装命令:sudo apt install docker.io,网站:play with docker。
docker run -d -p 80:80 nginx上面才会出现80端口,点击80端口跳转到nginx网页首页。
docker run -d -p 81:80 nginx指定外部81端口同理点击81跳转到nginx网页首页(nginx的默认端口是80)。
在这里插入图片描述
在这里插入图片描述
如下再次点击外部80端口。
在这里插入图片描述
如下暂时用不到81,容器里内容修改后要commit成新镜像m1,和pull下来的nginx镜像并列。
在这里插入图片描述
当前目录自己新增index.html(里面写着wai bu de wen jian)和Dockerfile两文件,将原来nginx里面index.html替换了,如下vi Dockerfile。
在这里插入图片描述
在这里插入图片描述
点击外部100号端口如下:上面为dockerfile build成一镜像run成为一容器。
在这里插入图片描述

2.save/load:docker save + 镜像id,不是容器id

docker rm m2将m2镜像直接删除,提示有个容器基于这镜像无法删除,那将容器(container id)也删了。
在这里插入图片描述
删了容器还要删除镜像m2,docker load使m2镜像又从tar文件重新拿过来了。文件映射-v就是将一些静态文件放外面,在外面修改文件(因为是映射的)里面文件也会跟着变化。这个文件映射还会用于其他的一些数据保存,比如mysql的data目录也可以映射到外面,防止数据丢失。
在这里插入图片描述

3.docker-compose:多容器:宿主机(eth0网卡)安装docker会生成一张docker网卡,docker网卡通过nat方式为每个容器分配ip

容器间同一网段可通过ip通信,容器(3个)和宿主机(eth0)通信是通docker0网卡转发路由过来是ip和端口进行通信。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下curl…回车后打印出下面< html >…。以下就能获取nginx容器数据了,但这种方式需要登录一台机器查看ip,再登录另一台机器去配置这个ip,在实际生产中是不可行的。
在这里插入图片描述

3.1 link:先docker rm -f删除nginx和alpine两个容器,在alpine中ping myng(相当于域名)的话自动解析为myng的ip

在这里插入图片描述
如下curl myng直接得到nginx的首页内容,浏览器将内容解析为界面。
在这里插入图片描述
在这里插入图片描述

3.2 docker-compose .yml:不用link,location匹配

nginx需要到php中去解析,php需要到mysql中访问数据库,两个需要写link,且必须先创建mysql,再部署到其他机器重新输入整个指令麻烦。将这些指令记录到一个配置文件里统一配置,这就是docker-compose(需安装)。
在这里插入图片描述
在这里插入图片描述
网页会显示如下index.html文本字样。
在这里插入图片描述
创建test.php用来监测php是否运行成功。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下/root/html下存的是php文件转发到/var/www/html目录下找php文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4.Dockerfile:镜像像程序,容器像进程

FROM:指定当前镜像基于哪个镜像,必填,一行就可以构建一个镜像。
WORKDIR:指定接下来shell语句运行在哪个路径下,如下alpine镜像下肯定没有/app这个目录,自动创建。
COPY:将当前宿主机文件拷贝到镜像中去。
RUN:构建容器时运行这脚本,当前工作目录就是/app,所以如下321写入/app/1.txt
CMD:指定整个容器启动起来运行脚本,运行完后整个容器生命周期结束(tail -f 阻塞式)。

如下必须命名为Dockerfile,1.txt里面原本内容有123。
在这里插入图片描述
如下指定镜像名test,最后的点表示dockfile文件位于当前目录下。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关文章:

【docker1】指令,docker-compose,Dockerfile

文章目录 1.pull/image&#xff0c;run/ps&#xff08;进程&#xff09;&#xff0c;exec/commit2.save/load&#xff1a;docker save 镜像id&#xff0c;不是容器id3.docker-compose&#xff1a;多容器&#xff1a;宿主机&#xff08;eth0网卡&#xff09;安装docker会生成一…...

Flutter中的异步和多进程

Flutter 是一个用于创建高性能、高保真度移动应用的框架,它使用 Dart 编程语言。 在 Flutter 中,异步和多进程是两种不同的概念,用于解决不同的问题。 异步 (Asynchronous) 异步编程是一种编程范式,允许代码在等待操作完成(如网络请求、文件 I/O)时继续执行其他任务,而不…...

学习C++第二天

1.缺省参数 缺省参数的概念&#xff1a; 缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时&#xff0c;如果没有指定实参则采用该形参的缺省值&#xff0c;否则使用指定的实参。 void show(int a 10) {cout << a << endl; }int main() {sho…...

解析Java中1000个常用类:AbstractSet类,你学会了吗?

推荐一个我自己写的小报童专栏导航网站: http://xbt100.top 收录了生财有术项目精选、AI海外赚钱、纯银的产品分析等专栏,陆续会收录更多的专栏,欢迎体验~复制URL可直达。 以下是正文。 在 Java 集合框架中,AbstractSet 是一个重要的抽象类,为实现自定义的集合(Set)提…...

Nginx基础概念和常用操作

文章目录 1. 安装、启动、连接2. 快速尝试部署网站3. 配置文件1. nginx.conf全局配置事件模块HTTP 模块性能优化建议 2. default.confserver 块基本设置日志设置根路径设置 4. 反向代理1. 模拟3个Web2. 链接 5. 负载均衡1. 加权轮询&#xff0c;Weighted Round Robin2. 最少连接…...

圈复杂度是什么?go语言调整圈复杂度举例

圈复杂度&#xff08;也称为循环复杂度或McCabe复杂度&#xff09;是衡量程序复杂性的一个指标&#xff0c;它通常与代码中的控制流结构&#xff08;如条件语句、循环和函数调用&#xff09;的数量相关。在Go语言中&#xff0c;你可以通过重构代码来降低圈复杂度&#xff0c;从…...

设计模式4-模版方法

设计模式 重构获得模式重构的关键技法1. 静态转动态2. 早绑定转晚绑定3. 继承转组合4. 编译时依赖转运行时依赖5. 紧耦合转松耦合 组件协助动机模式定义结构 要点总结。 例子示例解释&#xff1a; 重构获得模式 设计模式的目的是应对变化&#xff0c;提高复用 设计模式的要点…...

yii2 ActiveForm使用技巧

持续更新&#xff1a; 1、搜索输入框&#xff1a;form-inline <?php $form ActiveForm::begin([action > [index],method > get,options > [class > form-inline] &#xff08;增加此行代码&#xff09; ]); ?>...

【面试】基本数据类型的包装类缓存

目录 1. 说明2. Integer类分析2.1 代码块2.2 字节码2.3 分析2.4 valueOf方法 1. 说明 1.在java中&#xff0c;基本数据类型的包装类&#xff08;Integer、Byte、Character、Short、Long、Boolean&#xff09;的某些值会被缓存。2.以提高性能并减少内存使用。3.这种缓存机制是自…...

6月20日(周四)A股行情总结:A股险守3000点,恒生科技指数跌1.6%

A股三大股指走弱&#xff0c;科创板逆势上扬&#xff0c;半导体板块走强&#xff0c;多股20CM涨停。中芯国际港股涨超1%。恒生科技指数跌超1%。离岸人民币对美元汇率小幅走低&#xff0c;20日盘中最低跌至7.2874&#xff0c;创下2023年11月中旬以来的新低&#xff0c;随后收复部…...

Parallels Desktop 19 for mac破解版安装激活使用指南

Parallels Desktop 19 for Mac 乃是一款适配于 Mac 的虚拟化软件。它能让您在 Mac 计算机上同时运行多个操作系统。您可借此创建虚拟机&#xff0c;并于其中装设不同的操作系统&#xff0c;如 Windows、Linux 或 macOS。使用 Parallels Desktop 19 mac 版时&#xff0c;您可在 …...

JExcel API使用笔记

JExcel API使用笔记 JExcel是一个开源的支持excel的java类库&#xff0c;广泛利用其api来生成excel报表 API基本使用 1.创建excel文件 workbook Workbook.createWorkbook(file);//传入file文件2.创建sheet页 WritableSheet sheet workbook.createSheet("记录表&quo…...

springCloudAlibaba之分布式网关组件---gateway

gateway-网关 网关spring cloud gatewaygateway初体验gateway整合nacos简写方式 内置路由断言工厂内置断言工厂 自定义路由断言工厂自定义路由工厂 内置/自定义过滤器典型内置过滤器自定义过滤器 全局过滤器自定义全局过滤器 请求日志记录&跨域处理Gateway跨域配置&#xf…...

Springboot项目jar加密

部署的程序进行加密&#xff0c;防止第三方非法拷贝走项目进行二次开发或部署。我们知道java代码编译后生成的以.class结尾的字节码文件或者.jar/.war结尾的可执行文件都是可以反编译生成.java文件的&#xff0c;虽然反编译后生成的.java文件和原本的.java文件有些微差别&#…...

【React】高阶组件

概述 高阶组件并非一个组件&#xff0c;而是增强组件功能的一个函数。 高阶组件的作用是对多个组件公共逻辑进行横向抽离。 高阶组件 – React (reactjs.org) 示例 ChildCom1.jsx import React from react;function ChildCom1(props) {return (<div>这是子组件1<d…...

全面理解-Flutter(万字长文,深度解析)

1、Web 性能差&#xff0c;跟原生 App 存在肉眼可见的差距&#xff1b; 2、React Native 跟 Web 相比&#xff0c;支持的能力非常有限&#xff0c;特定长场景问题&#xff0c;需要三端团队一个一个处理&#xff1b; 3、Web 浏览器的安卓碎片化严重&#xff08;感谢 X5&#x…...

RabbitMQ实战宝典:从新手到专家的全面探索

前言 在当今分布式系统架构中&#xff0c;消息队列已成为不可或缺的一部分&#xff0c;而RabbitMQ作为其中的佼佼者&#xff0c;凭借其强大的功能和灵活性&#xff0c;广泛应用于各种规模的应用场景中。本文将带你从基础概念出发&#xff0c;深入探讨RabbitMQ的核心特性&#…...

6月21日(周五)AH股总结:沪指失守3000点,恒生科技指数跌近2%,多只沪深300ETF午后量能显著放大

内容提要 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点。白酒及光刻机概念集体走低&#xff0c;中芯国际港股跌超2%。CRO医药概念及水利股逆势走强。 A股低开低走 沪指全天围绕3000点关口来回拉锯&#xff0c;收盘跌破3000点&#xff0c;跌0.24%。深成指跌0.04…...

双非本,3年时间从外包到阿里P6(Android岗),看我是怎么逆袭成功的?

而在小公司&#xff0c;因为我也在小公司呆过&#xff0c;所以我有最直接的感受。整个部门技术人员没几个&#xff0c;我又大学刚毕业&#xff0c;带我的人&#xff0c;问啥啥不会&#xff0c;只有一个大佬&#xff0c;跳槽来的&#xff0c;是我们技术总监&#xff0c;有问题谁…...

前端面试题(基础篇七)

一、谈谈你对webpack的看法 webpack是一个模块打包工具&#xff0c;我们可以使用webpack管理我们的模块依赖&#xff0c;编译输出模块所需的静态文件。它可以很好的管理、打包web开发中所需的html、css、JavaScript以及其他各种静态文件&#xff08;使用的图片、字体图标等&am…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…...

EtherNet/IP转DeviceNet协议网关详解

一&#xff0c;设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络&#xff0c;本网关连接到EtherNet/IP总线中做为从站使用&#xff0c;连接到DeviceNet总线中做为从站使用。 在自动…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

AGain DB和倍数增益的关系

我在设置一款索尼CMOS芯片时&#xff0c;Again增益0db变化为6DB&#xff0c;画面的变化只有2倍DN的增益&#xff0c;比如10变为20。 这与dB和线性增益的关系以及传感器处理流程有关。以下是具体原因分析&#xff1a; 1. dB与线性增益的换算关系 6dB对应的理论线性增益应为&…...

JavaScript基础-API 和 Web API

在学习JavaScript的过程中&#xff0c;理解API&#xff08;应用程序接口&#xff09;和Web API的概念及其应用是非常重要的。这些工具极大地扩展了JavaScript的功能&#xff0c;使得开发者能够创建出功能丰富、交互性强的Web应用程序。本文将深入探讨JavaScript中的API与Web AP…...

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的“no matching...“系列算法协商失败问题

【SSH疑难排查】轻松解决新版OpenSSH连接旧服务器的"no matching..."系列算法协商失败问题 摘要&#xff1a; 近期&#xff0c;在使用较新版本的OpenSSH客户端连接老旧SSH服务器时&#xff0c;会遇到 "no matching key exchange method found"​, "n…...

基于Java+VUE+MariaDB实现(Web)仿小米商城

仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意&#xff1a;运行前…...

在 Spring Boot 项目里,MYSQL中json类型字段使用

前言&#xff1a; 因为程序特殊需求导致&#xff0c;需要mysql数据库存储json类型数据&#xff0c;因此记录一下使用流程 1.java实体中新增字段 private List<User> users 2.增加mybatis-plus注解 TableField(typeHandler FastjsonTypeHandler.class) private Lis…...

提升移动端网页调试效率:WebDebugX 与常见工具组合实践

在日常移动端开发中&#xff0c;网页调试始终是一个高频但又极具挑战的环节。尤其在面对 iOS 与 Android 的混合技术栈、各种设备差异化行为时&#xff0c;开发者迫切需要一套高效、可靠且跨平台的调试方案。过去&#xff0c;我们或多或少使用过 Chrome DevTools、Remote Debug…...