Docker(二)、linux环境Docker的部署以及构建镜像
linux环境Docker的部署以及构建镜像
- 一、docker部署
- 1、快速部署常用的命令:
- 1.1、demo-部署tomcat
- 1.2、tomcat容器内部结构
- 1.2.1、每个tomcat容器,都包含三个组件
- 1.2.2、在容器内部执行命令
- 1.3、容器生命周期
- 二、Dockerfile构建镜像
- 1、demo-Dockerfile自动部署Tomcat 应用
- STEP1 、Dockerfile内容:
- STEP2、新建一个web应用first-dockerfile(小白可),进行构建
- STEP3、在命令行执行如下命令
- 2、部署redis镜像
一、docker部署
1、快速部署常用的命令:
1、表示从远程仓库抽取镜像:docker pull 镜像名<:tags>
2、查看本地镜像:docker images
3、创建容器,启动应用 : docker run 镜像名<:tags>
ps:如果镜像还没有被抽取,此时会先抽取镜像,然后安装到本地,启动镜像
4、查看正在运行中的容器:docker ps
5、删除容器, <-f>表示强制删除:docker rm <-f> 容器id
6、删除指定版本的镜像, <-f>表示 (即便存在对应容器) 强制删除:docker rmi <-f> 镜像名<:tags>
快速部署命令概览图:
1.1、demo-部署tomcat
下载默认版本(当前下载使用最多的版本): docker pull tomcat
查看有哪些本地镜像:docker images
下载指定版本[版本号从hub.docker.com
即docker中央仓库获取到的]:
docker pull tomcat:8.5.46-jdk8-openjdk
docker 镜像仓库访问不了,可以参看阿里镜像:https://developer.aliyun.com/packageSearch?word=tomcat
创建对应容器,才能提供服务:docker run tomcat
启动成功后,可以看到端口8080,若想访问,需要做宿主机和容器的端口映射,操作如下:
docker run -p 8000:8080 -d tomcat
查看正在使用的容器:docker ps
删除容器:
docker stop 容器id
docker rm 容器ID
删除镜像:
docker rmi 镜像<:tags>
宿主机里有docker容器tomcat,tomcat默认端口8080,docker做了一个宿主机和容器的端口映射。外侧浏览器通过宿主机ip和端口8000访问tomcat
转发给内部8080端口。
1.2、tomcat容器内部结构
1.2.1、每个tomcat容器,都包含三个组件
- 1、linux系统,提供最底层的linux命令,此操作系统只提供安装jdk最基本的安装环境,尺寸非常小【tomcat基本运行环境,绝大多数docker容器都内置了linux系统,进入到容器内部,直接进行linux操作就可以了】
- 2、此基础上,docker 自动安装jdk1.8.0_222
- 3、tomcat 【eg:Apache Tomcat/8.5.46 】
1.2.2、在容器内部执行命令
格式:docker exec [-it] 容器id
exec 在对应容器中执行命令
-it 采用交互方式执行命令
如果你想进入一个容器,在容器内部进行后续的操作:docker exec -it 容器ID /bin/bash
ps: /bin/bash :开启一个接收后续命令的终端
demo:
获取容器ID:docker ps
进入容器内部:docker exec -it 45ce1a4ba159 /bin/bash
可执行的linux命令有许多,eg:
查看操作系统版本:cat /proc/version
查看jdk版本:java -version
退出容器,回到宿主机:exit
在宿主机,查看linux 镜像和容器默认存放路径:/var/lib/镜像名
cd /var/lib/docker
可以看到,镜像存放在image路径下,容器存放在containers路径下
1.3、容器生命周期
想多了解一些的小伙伴可以看看这块,非运维小伙伴不做重点掌握:
图中4个椭圆:stopped,running ,pause ,deleted 为容器的4个状态
箭头上的文本均为命令,熟悉这些命令,可以有效协助运维小伙伴排查问题。
二、Dockerfile构建镜像
1、docker是通过Dockerfile构建镜像的,Dockerfile用来做镜像描述,是一个包含用于 组合镜像命令 的可执行脚本,是一个无后缀的文件。
2、docker通过读取Dockerfile中的指令按步自动生成镜像
3、构建镜像
docker build -t 机构/镜像名<:tags> Dockerfile目录(
可以是绝对路径也可以是相对路径)
1、demo-Dockerfile自动部署Tomcat 应用
构建一个自定义镜像,在原有tomcat安装完基础上自动将名为docker-web的应用发布到镜像中,任何拿到自定义镜像中之要执行run就可以访问docker-web应用
STEP1 、Dockerfile内容:
红色字体部分即为Dockerfile内容,
tips:此文件无后缀哈
- #设置基准镜像
FROM tomcat:latest
- #本镜像由哪个人/机构维护。没有执行功能,只是一个说明性信息
MAINTAINER wq.com
- #切换工作目录。 webapps不存在则创建,参看web容器内部文件环境看,默认 /usr/local/tomcat ,而所有web应用都放在webapps目录下WORKDIR
/usr/local/tomcat/webapps
- #ADD表示复制。将镜像文件复制到镜像指定目录下。docker-web:指dockerfile同级目录下的文件夹,./docker-web:指webapps目录下的文件,若此目录不存在则创建;
ADD docker-web ./docker-web
STEP2、新建一个web应用first-dockerfile(小白可),进行构建
本地新建文件夹first-dockerfile
,在里面创建文件夹docker-web
,然后进入,创建index.html
,编辑内容:<h1>docker首页</h1>
在文件夹下,创建Dockerfile
,不带后缀,将上面Dockerfile
内容拷贝到本文件
在/usr下创建images 文件夹,用来存放镜像,上传first-dockerfile文件夹
文件层级:
执行构建命令:
切换到/usr/image/first-dockerfile/
目录下,【点 表示当前目录,即/usr/image/first-dockerfile/
】,执行命令:
docker build -t wq.com/mywebapp:1.0.0 .
执行docker images
可以看到刚才的应用
STEP3、在命令行执行如下命令
启动容器:docker run -p -d 8001:8080 wq.com/mywebapp:1.0.0
在浏览器访问 宿主机IP:8001/docker-web/index.html
可查看正在运行的容器:docker ps
进入到容器内部:docker exec -it 容器ID /bin/bash
直接进入到 /usr/local/tomcat/webapps
目录下,可以看到有docker-web
目录文件夹
2、部署redis镜像
-
拉取redis镜像:
docker pull redis
-
查看镜像是否构建:
docker images
-
启动容器:
docker run -p 6000:6379 -d redis
-
查看运行的容器
docker ps
-
查看端口6000是否被监听,做了宿主机和容器内部的端口映
netstat tulpn
-
进入redis容器内部:
docker exec -it 容器ID /bin/bash
-
查看容器元数据:
docker inspect 容器ID
-
查看容器日志,后期构建自己的应用,如果报错可以通过此命令查看报错情况:
docker logs
监控容器内部进程状态
docker top
与 docker stats
可以看到是每个docker容器进程的资源占用情况,根据输出的容器ID,查对应应用:docker ps
- 可以在容器内部执行:
redis-cli
exit
相关文章:

Docker(二)、linux环境Docker的部署以及构建镜像
linux环境Docker的部署以及构建镜像 一、docker部署1、快速部署常用的命令:1.1、demo-部署tomcat1.2、tomcat容器内部结构1.2.1、每个tomcat容器,都包含三个组件1.2.2、在容器内部执行命令 1.3、容器生命周期 二、Dockerfile构建镜像1、demo-Dockerfile自…...

GEE错误——Image.select: Pattern ‘MDF‘ did not match any bands
问题 ImageCollection (Error) Collection query aborted after accumulating over 5000 elements. ImageCollection (268 elements) Mean DOD550: Layer error: ImageCollection.reduce: Error in map(ID=MCD19A2_A2001001_h15v17_061_2022161165308_01): Image.select: Patte…...

前端JavaScript入门到精通,javascript核心进阶ES6语法、API、js高级等基础知识和实战 —— JS基础(四)
开始吧,做时间的主人! 把时间分给睡眠,分给书籍,分给运动, 分给花鸟树木和山川湖海, 分给你对这个世界的热爱, 而不是将自己浪费在无聊的人和事上。 思维导图 函数 为什么需要函数 <!DO…...

mysql超级聚合with rollup
超级聚合,是在group by的基础上,再次进行聚合。 它再次聚合的列,是select中没有用到聚合函数的列。 文章目录 例子1解释例子2表以及数据 例子1 mysql> SELECT year, country, product, SUM(profit) AS profitFROM salesGROUP BY year, c…...

浅谈电动汽车充电桩设计与应用研究
安科瑞 华楠 摘要:目前,随着我国社会经济的快速发展,我国的各个领域都取得了突破性的发展,尤其是在电动汽车充电桩的设计方法,新型的电动汽车充电桩设计已经广泛的受到了人民群众的青睐与认可,而这种发展前…...
tensorflow Windows安装说明
TensorFlow官网教程 Tensorflow 2.10是最后一个在本地windows上支持GPU的版本。从2.11版本开始,需要在windows WLS2(适用于 Linux 的 Windows 子系统)上安装才能使用GPU。 在anaconda shell控制台中,切换至虚拟环境, 安装TensorFlow 这是用…...

【Leetcode热题】打卡 day11——20(更新至11)
1、合并两个有序链表 - 链表 暴力 / 递归 21. 合并两个有序链表 (1)暴力 class Solution {public ListNode mergeTwoLists(ListNode l1, ListNode l2) {ListNode dummynew ListNode();ListNode curdummy;while(l1!null&&l2!null){if(l1.val&l…...

linux使用操作[3]
文章目录 版权声明环境变量$符号自行设置环境变量 上传、下载rz、sz命令 压缩、解压tar命令压缩tar解压zip 命令压缩文件unzip 命令解压文件 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明,所有版权属于黑马程序员或相关权利人…...

梦想让生活得以忍受-寄语机器视觉工程师
我,曾梦想梦想走天涯,看看这世界的繁华,年少的心总有些轻狂,如今四海为家。 大家都听过这首歌,迎来很多打工人的共鸣,著名作家海明威曾说,“一个人可以被打败,但不可以被毁灭”&…...

linux 设置打开文件数
可以使用下面的文件进行设置 /etc/security/limits.d/90-nproc.conf 先来看/etc/security/limits.d/90-nproc.conf 配置文件: [root ~]# cat /etc/security/limits.d/90-nproc.conf # Default limit for number of users processes to prevent # accidental fork…...

MySQL基础篇-约束
目录 1.约束概述 2.分类 3.测试user表的约束情况 主键约束 非空约束及唯一约束 检查约束 默认约束 4.外键约束 外键约束的语法 外键约束的删除/更新行为 小结 1.约束概述 MySQL约束(Constraints)是用于确保表中数据完整性和一致性的规则。它们定…...

系统工程知识体系(SEBoK)
介绍 《系统工程知识体系》(SEBoK)是以一种理念设计的,即如果工程师有一个实时更新、实用的指南,他们就能做出更优秀的工作。如果你以前没有使用过这个资源,也没有关系;因为已经有一个完整的指南供你参考&…...
Spring DI (Dependency Injection)
What Is DI? 当一个类需要依赖另一个对象,把另一个对象实例化之后注入给这个对象的过程我们称之为DI # Create an object dependency in traditional programming public class Store {private Item item;public Store() {item new ItemImpl1(); } }# Using …...

Spring Boot : ORM 框架 JPA 与连接池 Hikari
数据库方面我们选用 Mysql , Spring Boot 提供了直接使用 JDBC 的方式连接数据库,毕竟使用 JDBC 并不是很方便,需要我们自己写更多的代码才能使用,一般而言在 Spring Boot 中我们常用的 ORM 框架有 JPA 和 Mybaties ,本…...

Wireshark抓包分析ICMP协议
「作者主页」:士别三日wyx 「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者 「推荐专栏」:对网络安全感兴趣的小伙伴可以关注专栏《网络安全入门到精通》 分析目的:分析ICMP协议的数据格式、报文…...

C++——安装环境、工具
一、进入官网下载 Visual Studio 下载地址:https://visualstudio.microsoft.com/zh-hans/ 二、安装 三、安装完后如果出现window SDK 下载失败,可自行下载,如果没有请跳过这一步 Window SDK 官方地址:https://developer.microsoft…...
征稿啦!第 18 届「中国 Linux 内核开发者大会」重磅启动
第十八届中国 Linux 内核开发者大会(CLK )如期而至。CLK 以“自由、协作、创新”为理念,以开源技术的推广和普及为使命,旨在促进 Linux 内核开发爱好者相互交流,共同进步。 经过组委会公开征集承办单位和各意向承办单…...
JDBC8.0+
首先创建工程,导入jar包 1.注册驱动 //注册驱动//利用反射,较为灵活Class.forName("com.mysql.cj.jdbc.Driver");/**问题:会注册俩次驱动* 解决方案:只触发静态代码块* 触发静态代码块:* 类加载机制&…...
聊聊常见的IO模型 BIO/NIO/AIO 、DIO、多路复用等IO模型
文章目录 一、前言1. 什么是IO模型2. 为什么需要IO模型 二、常见的IO模型1. 同步阻塞IO(Blocking IO,BIO)2. 同步非阻塞IO(Non-blocking IO,NIO)3. 异步非阻塞IO(Asynchronous IO,AI…...

Linux- 网络编程初探
原始套接字(Raw Socket) 原始套接字(Raw Socket)是一种提供较低级别网络访问的套接字。通过使用原始套接字,应用程序可以直接发送或接收网络层如IP的数据包,或者传输层如TCP、UDP的段,而无需通…...

UE5 学习系列(三)创建和移动物体
这篇博客是该系列的第三篇,是在之前两篇博客的基础上展开,主要介绍如何在操作界面中创建和拖动物体,这篇博客跟随的视频链接如下: B 站视频:s03-创建和移动物体 如果你不打算开之前的博客并且对UE5 比较熟的话按照以…...

高频面试之3Zookeeper
高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个?3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制(过半机制࿰…...

【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
镜像里切换为普通用户
如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

让回归模型不再被异常值“带跑偏“,MSE和Cauchy损失函数在噪声数据环境下的实战对比
在机器学习的回归分析中,损失函数的选择对模型性能具有决定性影响。均方误差(MSE)作为经典的损失函数,在处理干净数据时表现优异,但在面对包含异常值的噪声数据时,其对大误差的二次惩罚机制往往导致模型参数…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...