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

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 topdocker stats 可以看到是每个docker容器进程的资源占用情况,根据输出的容器ID,查对应应用:docker ps

  • 可以在容器内部执行:
    redis-cli
    exit

相关文章:

Docker(二)、linux环境Docker的部署以及构建镜像

linux环境Docker的部署以及构建镜像 一、docker部署1、快速部署常用的命令&#xff1a;1.1、demo-部署tomcat1.2、tomcat容器内部结构1.2.1、每个tomcat容器&#xff0c;都包含三个组件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基础(四)

开始吧&#xff0c;做时间的主人&#xff01; 把时间分给睡眠&#xff0c;分给书籍&#xff0c;分给运动&#xff0c; 分给花鸟树木和山川湖海&#xff0c; 分给你对这个世界的热爱&#xff0c; 而不是将自己浪费在无聊的人和事上。 思维导图 函数 为什么需要函数 <!DO…...

mysql超级聚合with rollup

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

浅谈电动汽车充电桩设计与应用研究

安科瑞 华楠 摘要&#xff1a;目前&#xff0c;随着我国社会经济的快速发展&#xff0c;我国的各个领域都取得了突破性的发展&#xff0c;尤其是在电动汽车充电桩的设计方法&#xff0c;新型的电动汽车充电桩设计已经广泛的受到了人民群众的青睐与认可&#xff0c;而这种发展前…...

tensorflow Windows安装说明

TensorFlow官网教程 Tensorflow 2.10是最后一个在本地windows上支持GPU的版本。从2.11版本开始&#xff0c;需要在windows WLS2&#xff08;适用于 Linux 的 Windows 子系统&#xff09;上安装才能使用GPU。 在anaconda shell控制台中,切换至虚拟环境, 安装TensorFlow 这是用…...

【Leetcode热题】打卡 day11——20(更新至11)

1、合并两个有序链表 - 链表 暴力 / 递归 21. 合并两个有序链表 &#xff08;1&#xff09;暴力 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 命令解压文件 版权声明 本博客的内容基于我个人学习黑马程序员课程的学习笔记整理而成。我特此声明&#xff0c;所有版权属于黑马程序员或相关权利人…...

梦想让生活得以忍受-寄语机器视觉工程师

我&#xff0c;曾梦想梦想走天涯&#xff0c;看看这世界的繁华&#xff0c;年少的心总有些轻狂&#xff0c;如今四海为家。 大家都听过这首歌&#xff0c;迎来很多打工人的共鸣&#xff0c;著名作家海明威曾说&#xff0c;“一个人可以被打败&#xff0c;但不可以被毁灭”&…...

linux 设置打开文件数

可以使用下面的文件进行设置 /etc/security/limits.d/90-nproc.conf 先来看/etc/security/limits.d/90-nproc.conf 配置文件&#xff1a; [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约束&#xff08;Constraints&#xff09;是用于确保表中数据完整性和一致性的规则。它们定…...

系统工程知识体系(SEBoK)

介绍 《系统工程知识体系》&#xff08;SEBoK&#xff09;是以一种理念设计的&#xff0c;即如果工程师有一个实时更新、实用的指南&#xff0c;他们就能做出更优秀的工作。如果你以前没有使用过这个资源&#xff0c;也没有关系&#xff1b;因为已经有一个完整的指南供你参考&…...

Spring DI (Dependency Injection)

What Is DI? 当一个类需要依赖另一个对象&#xff0c;把另一个对象实例化之后注入给这个对象的过程我们称之为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 &#xff0c; Spring Boot 提供了直接使用 JDBC 的方式连接数据库&#xff0c;毕竟使用 JDBC 并不是很方便&#xff0c;需要我们自己写更多的代码才能使用&#xff0c;一般而言在 Spring Boot 中我们常用的 ORM 框架有 JPA 和 Mybaties &#xff0c;本…...

Wireshark抓包分析ICMP协议

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

C++——安装环境、工具

一、进入官网下载 Visual Studio 下载地址&#xff1a;https://visualstudio.microsoft.com/zh-hans/ 二、安装 三、安装完后如果出现window SDK 下载失败&#xff0c;可自行下载&#xff0c;如果没有请跳过这一步 Window SDK 官方地址&#xff1a;https://developer.microsoft…...

征稿啦!第 18 届「中国 Linux 内核开发者大会」重磅启动

第十八届中国 Linux 内核开发者大会&#xff08;CLK &#xff09;如期而至。CLK 以“自由、协作、创新”为理念&#xff0c;以开源技术的推广和普及为使命&#xff0c;旨在促进 Linux 内核开发爱好者相互交流&#xff0c;共同进步。 经过组委会公开征集承办单位和各意向承办单…...

JDBC8.0+

首先创建工程&#xff0c;导入jar包 1.注册驱动 //注册驱动//利用反射&#xff0c;较为灵活Class.forName("com.mysql.cj.jdbc.Driver");/**问题&#xff1a;会注册俩次驱动* 解决方案&#xff1a;只触发静态代码块* 触发静态代码块&#xff1a;* 类加载机制&…...

聊聊常见的IO模型 BIO/NIO/AIO 、DIO、多路复用等IO模型

文章目录 一、前言1. 什么是IO模型2. 为什么需要IO模型 二、常见的IO模型1. 同步阻塞IO&#xff08;Blocking IO&#xff0c;BIO&#xff09;2. 同步非阻塞IO&#xff08;Non-blocking IO&#xff0c;NIO&#xff09;3. 异步非阻塞IO&#xff08;Asynchronous IO&#xff0c;AI…...

Linux- 网络编程初探

原始套接字&#xff08;Raw Socket&#xff09; 原始套接字&#xff08;Raw Socket&#xff09;是一种提供较低级别网络访问的套接字。通过使用原始套接字&#xff0c;应用程序可以直接发送或接收网络层如IP的数据包&#xff0c;或者传输层如TCP、UDP的段&#xff0c;而无需通…...

不用Animator!用Playable+Timeline打造Unity自定义动画状态机(含项目代码片段)

突破Animator限制&#xff1a;Playable与Timeline构建Unity高阶动画系统 在Unity游戏开发中&#xff0c;动画系统一直是角色表现的核心。传统Animator虽然入门简单&#xff0c;但当项目复杂度上升时&#xff0c;状态机臃肿、过渡僵硬、调试困难等问题逐渐暴露。许多中高级开发…...

在PC上畅玩Switch游戏:Ryujinx模拟器完全指南

在PC上畅玩Switch游戏&#xff1a;Ryujinx模拟器完全指南 【免费下载链接】Ryujinx 用 C# 编写的实验性 Nintendo Switch 模拟器 项目地址: https://gitcode.com/GitHub_Trending/ry/Ryujinx 想在电脑上体验《塞尔达传说&#xff1a;旷野之息》的震撼冒险&#xff0c;或…...

别再手动切换收发!用SP3485芯片实现RS485自动收发电路的保姆级教程

用SP3485芯片实现RS485自动收发电路的完整设计指南 在工业控制、楼宇自动化等长距离通信场景中&#xff0c;RS485接口因其抗干扰能力强、传输距离远等优势成为首选。然而传统RS485设计需要手动控制收发使能信号&#xff0c;不仅增加软件复杂度&#xff0c;还容易因时序错误导致…...

从零开始学SCL:手把手教你实现天塔之光、数码管显示等工业控制案例(含避坑指南)

从零开始学SCL&#xff1a;手把手教你实现天塔之光、数码管显示等工业控制案例&#xff08;含避坑指南&#xff09; 工业自动化领域中&#xff0c;PLC编程是核心技能之一。而SCL&#xff08;Structured Control Language&#xff09;作为IEC 61131-3标准中的高级文本语言&#…...

Vivado IP封装实战:从源码到GUI配置的完整避坑指南(含EDF/DCP对比)

Vivado IP封装实战&#xff1a;从源码到GUI配置的完整避坑指南&#xff08;含EDF/DCP对比&#xff09; 在FPGA开发中&#xff0c;团队协作和代码共享是常见需求&#xff0c;但如何平衡代码保护与功能灵活性一直是开发者面临的难题。Vivado提供了多种模块封装方案&#xff0c;每…...

告别广告侵扰:AdGuard广告拦截扩展全平台部署指南

告别广告侵扰&#xff1a;AdGuard广告拦截扩展全平台部署指南 【免费下载链接】AdguardBrowserExtension AdGuard browser extension 项目地址: https://gitcode.com/gh_mirrors/ad/AdguardBrowserExtension 副标题&#xff1a;从新手到高手的一站式配置方案 一、价值定…...

Qwen1.5镜像部署推荐:一键启动WebUI,告别手动配置烦恼

Qwen1.5镜像部署推荐&#xff1a;一键启动WebUI&#xff0c;告别手动配置烦恼 还在为手动配置AI模型环境而头疼吗&#xff1f;今天介绍的Qwen1.5-0.5B-Chat镜像部署方案&#xff0c;让你真正实现一键启动&#xff0c;无需任何复杂操作就能拥有智能对话服务。 1. 项目概述&#…...

Qwen3.5-4B-Claude-Opus零基础上手:Web交互页面功能详解与最佳实践

Qwen3.5-4B-Claude-Opus零基础上手&#xff1a;Web交互页面功能详解与最佳实践 1. 模型与平台介绍 Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF 是一个基于 Qwen3.5-4B 的推理蒸馏模型&#xff0c;特别强化了结构化分析、分步骤回答、代码与逻辑类问题的处理能力。…...

LiuJuan Z-Image效果对比展示:BF16 vs FP16在人像细节与稳定性上的差异

1. 1. 1. 1. 1. 1. 1. 1. 1. 概述 1. 1. 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1. 概述 1…...

造相 Z-Image 电商提效:淘宝主图/拼多多详情页/小红书种草图量产

造相 Z-Image 电商提效&#xff1a;淘宝主图/拼多多详情页/小红书种草图量产 1. 电商视觉内容生产的痛点与机遇 电商卖家每天面临的最大挑战之一就是视觉内容的生产。无论是淘宝主图、拼多多详情页还是小红书种草图文&#xff0c;都需要大量高质量的图片来吸引用户眼球。传统…...