阿里云服务部署docker容器

 

 

 

 

1.1 为什么要用docker

问题

image

开发、测试、生产环境不统一,造成项目测试、部署时产生问题

解决方案

image

使用容器化技术,将环境和项目一起发送给测试、部署人员,测试人数和运维人员直接使用发过 来的环境和项目进行操作,避免环境不统一产生的问题.

1.2 什么是docker

docker官网:Docker: Accelerated Container Application Development

image

  • Docker是一种容器化技术,目前市面上流程的容器化技术有两种:Docker和 Kubernetes(K8S)
  • Docker 是一个开源的应用容器引擎,基于 Go 语言并遵从 Apache2.0 协议开源。
  • Docker诞生于2013年,dotCloud公司出品(后改名为Docker Inc)
  • Docker 可以让开发者打包他们的应用以及依赖包及环境到一个轻量级、可移植的容器中, 然后发布到任何流行的 Linux 机器上,也可以实现虚拟化。
  • Docker 容器是完全使用沙箱机制,相互之间不会有任何接口,容器性能开销极低。
  • Docker从17.03版本之后分为CE(Community Edition:社区版)和EE(Enterprise Edition:企业 版)

1.3 docker的应用场景

  • Web 应用的自动化打包和发布。 docker+jenkins+git+maven+gitee实现项目自动化集成部署
  • 自动化测试和持续集成、发布。
  • 在服务型环境中部署和调整数据库或其他的后台应用。
  • 从头编译或者扩展现有的 OpenShift 或 Cloud Foundry 平台来搭建自己的 PaaS 环境。

1.4 Docker 的优点

Docker 是一个用于开发,交付和运行应用程序的开放平台。Docker 使您能够将应用程序与 基础架构分开,从而可以快速交付软件。借助 Docker,您可以与管理应用程序相同的方式 来管理基础架构。通过利用 Docker 的方法来快速交付,测试和部署代码,您可以大大减少 编写代码和在生产环境中运行代码之间的延迟。

  • 快速,一致地交付您的应用程序
  • 响应式部署和扩展
  • 在同一硬件上运行更多工作负载

2.docker的应用场景

2.1 docker的三个基本概念

2.1.1 镜像

Docker 镜像(Image),就相当于是一个 root 文件系统,也可以理解是一个安装软件包 (.exe)(Linux系统+安装的软件)。比如官方镜像 ubuntu:16.04 就包含了完整的一套 Ubuntu16.04 最小系统的 root 文件系统,Tomcat、mysql等也有相关的景象。

2.1.2 容器

就好比安装好的软件(Linux系统+安装的软件),镜像(Image)和容器(Container)的 关系,就像是面向对象程序设计中的类(镜像)和实例(容器)一样,镜像是静态的定义,容器 是镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。就好比通过镜像安装 的系统,或者通过安装软件安装的软件的系统环境和软件。

2.1.3 仓库

仓库可看成一个代码控制中心,用来保存镜像。其本质就是一个镜像仓库。

2.2 镜像和容器的关系

  • Docker 容器通过 Docker 镜像来创建
  • 容器与镜像的关系类似于面向对象编程中的对象与类。

image

2.3 docker的架构

image

3.centos7 安装docker

3.1 安装一些必要的工具

# yum 包更新到最新
yum update
# 安装需要的软件包, yum-utils 提供yum-config-manager功能,另外两个是devicemapper驱动依赖的
yum -y install yum-utils device-mapper-persistent-data lvm2

3.2 添加软件源信息

阿里云服务器不用设置,VMware虚拟机需要做。

# 设置yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/dockerce/linux/centos/docker-ce.repo

3.3 安装docker

# 设置yum缓存
yum makecache fast
# 安装docker,出现输入的界面都按 y
yum -y install docker-ce # Vmware中的安装方式
#yum -y install docker #阿里云安装方式

3.4 启动docker服务

# 启动docker
systemctl start docker
# 查看docker版本,验证是否验证成功
docker -v

image

3.5 配置阿里云镜像仓库

3.5.1 登录阿里云官网,没有的自己注册一个

image

3.5.2 点击产品,然后鼠标滑到容器与中间件

image

3.5.3 点击容器镜像服务 ACR

image

3.5.4 点击管理控制台

image

3.5.5 点击镜像工具下的镜像加速器,找到加速地址,第一次没有自己生成一下

image

3.6 配置加速镜像的地址

sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://ynzn5u2a.mirror.aliyuncs.com"]
}
EOF

3.7 重启docker

systemctl daemon-reload
systemctl restart docker
docker -v #查看docker版本

4.docker的相关命令

4.1 查看当前本地有哪些镜像

docker images
docker images -q # 查看所有镜像的id
  • REPOSITORY镜像名称
  • tag 镜像版本,latest表示最新版本。
  • image id 镜像的id
  • created 创建了的时间
  • size 镜像大小

4.2 搜索镜像

docker search tomcat #到docker仓库中搜索对应名称的镜像
  • name:镜像名称
  • description:镜像描述
  • stars:镜像点赞数
  • offical:是否是官方
  • automated:是否维护

4.3 下载镜像

  • docker pull 镜像名称
  • docker pull tomcat 默认下载tomcat最新的镜像
  • docker pull tomcat:7.0.56 下载7.0.56版的tomcat镜像
docker pull tomcat:7.0.56

image

docker push : 将镜像上传到镜像仓库

4.4 删除镜像

  • docker rmi 镜像名称/镜像ID
  • docker rmi docker images -q # 删除所有本地镜像,注意上撇号。
  • 如果镜像生成的有容器,需要先停止容器删除容器才能删除镜像

image

image

4.5 运行安装镜像

运行安装镜像,就会产生一个容器

docker run hello-world

image

  • 当然你也可以先下载镜像,再通过镜像运行容器
docker pull hello-world
docker run hello-world

镜像运行执行会产生一个容器。安装好的容器是不会运行的。

4.6 Docker数据卷

问题

  • Docker容器删除后,在容器中产生的数据也会随之销毁。
  • Docker容器和外部机器可以直接交换文件吗?
  • 容器之间想要进行数据交互?

数据卷

image

  • 数据卷是宿主机中的一个目录或文件。
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步。
  • 一个数据卷可以被多个容器同时挂载。

image

  • 一个容器也可以被挂载多个数据卷。
  • 数据卷可在容器之间共享或重用数据
  • 不会在容器删除时删除其挂载的数据卷
  • 数据卷中的更改不会包含在镜像的更新中
  • 数据卷的生命周期一直持续到没有容器使用它为止

数据卷挂载

docker run -it -v 宿主机目录:容器内目录 centos

-v:目录映射,即数据卷挂载,可以使用多个-v做多个目录或文件映射。

4.7 安装Tomcat

1.拉取tomcat镜像

docker pull tomcat:7.0.56

2.通过tomcat镜像来创建一个容器

docker run -id -p 8080:8080 -v /webapps:/usr/local/tomcat/webapps --name
mytomcat tomcat:7.0.56
  • -i:保持容器运行,通常与-t同时使用。加入it这两个参数后,在此命令中表示进入容器中。
  • -d: 以守护(后台)模式运行容器。创建一个容器在后台运行,容器不会自动关闭。
  • -t:为容器重新分配一个伪输入终端,通常与-i同时使用。

-it和-id可以在docker run指令中使用

​ -it:创建交互式容器(前台容器),创建容器之后就会自动进入容器中,退出容器,容器自动 停止

​ -id:创建守护式容器(后台容器),创建容器之后不会自动进入容器中,退出容器,容器不会 自动停止

​ 交互式容器:以交互式方式创建并启动容器(前台),启动完成后,直接进入当前容器。使用 exit命令退出容器,容器就会停止

​ 守护式容器:以守护式方式创建容器(后台),创建容器之后,不会立刻进入容器中,容器是 在后台 运 行的,使用exit命令退出容器后,容器不会停止,会一直运行。

  • -p 8080:8080 : 将宿主机的 8080 端口映射到容器的 8080 端口,即端口映射操作。 (docker容器是完全使用沙箱机制,外部机器不能直接访问,如果想要访问必须让宿主机的 端口和容器的端口映射关联,外部机器通过宿主机端口映射访问容器)
  • -v:目录映射,即数据卷挂载,可以使用多个-v做多个目录或文件映射。
  • --name mytomcat :创建容器的名称
  • 最后一个tomcat:7.0.56是镜像的名称

3.在本机进行测试

image

4.查看容器的id

docker ps #查看正在运行的容器
docker ps -a #查看所有容器

image

5.进入到tomcat容器中

执行或进入容器

docker exec -it 容器ID /bin/bash

/bin/bash:使用/bin/bash来解释执行指令。

image

6.退出容器

exit 容器停止退出 #前台容器会停止退出,后台容器只是退出
ctrl+P+Q 容器不停止退出

image

7.重启容器

docker restart 容器id //需要把防火墙打开 默认要启用iptables规则

8.容器中的命令小结

  • docker ps 查看正在运行的容器
  • docker ps -a 查看所有的容器
  • docker stop 容器ID 停止容器
  • docker start 容器id 启动容器 //需要把防火墙打开 默认要启用iptables规则
  • docker restart 容器id 重启容器 //需要把防火墙打开 默认要启用iptables规则
  • docker kill 容器ID或者容器名 强制停止容器 docker rm 容器ID 删除已停止的容器
  • docker logs -f -t --tail n 容器ID 查看容器日志 (--tail 数字 显示最后多少条)
  • docker cp 容器ID:容器内路径 宿主机路径 从容器内拷贝文件到宿主机上

9.通过刚才安装tomcat容器他是一个小型的Linux系统,可以在上面安装并执行相关的软件

10.如果出现404错误解决方式(了解)

进入到容器中,再进入到tomcat的目录中执行以下指令:

cp -r webapps.dist/* webapps

  • 在容器中执行以上命令,有的tomcat默认没有webapps,而是webapps.dist

4.8 安装redis

1. 搜索redis镜像

docker search redis

2. 拉取redis镜像

docker pull redis:5.0

3. 创建容器,设置端口映射

docker run -id --name=c_redis -p 6379:6379 redis:5.0

4. 使用外部机器连接redis

./redis-cli.exe -h 192.168.149.135 -p 6379

5.镜像和容器的本质

Docker容器中使用的Linux系统是centos系统

5.1 进到tomcat容器中

  • docker exec -it 容器ID /bin/bash
  • 执行命令 cd /
  • 查看目录结构

image

  • 这里也就说明一个容器可以看成一个小型的Linux操作系统

5.2 查看是否安装了jdk

  • 由于tomcat需要安装jdk才能起作用,我们看一下tomcat容器中是否安装了jdk
  • 在tomcat容器中输入java命令

image

5.3 总结

  • 容器化技术,实际就是在一台机器上运行很多虚拟的容器
  • 这些虚拟的容器就是一台台小型的操作系统
  • 当我们运行容器的时候,它会自动帮助我们安装需要的软件
  • 需要的软件安装好后,把对应的程序给启动起来,我们就可以使用了

5.4 镜像底层是什么

tomcat镜像:

  • 是一个shell脚本
  • 里面首先编写了安装操作系统的脚本
  • 其次编写了安装jdk的脚本
  • 最后编写了安装tomcat的脚本

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/316172.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

详解Skywalking 服务Overview页面的参数含义(适合小白)

本文针对刚刚接触skywalking的同学&#xff0c;重点讲解服务Overview页面中各个参数的含义&#xff0c;为大家快速上手skywalking会起到帮助作用&#xff01; 最重要的三个指标 Service Apdex&#xff08;数字&#xff09;:当前服务的评分 Successful Rate&#xff08;数字&a…

分布式系统架构设计之分布式消息队列的实际应用场景分析以及未来展望

一、分布式消息队列的实际应用场景 随着企业业务的不断发展和数据量的持续增长&#xff0c;分布式消息队列已经成为了许多系统中不可或缺的一部分。它提供了异步通信、流量削峰、数据缓冲等功能&#xff0c;为构建高并发、高可用、可扩展的系统提供了有力的支持。本部分会通过…

列表解析与快速排序

排序是在对文本、数值等数据进行操作时常用的功能&#xff0c;本文介绍两种常用的排序方式&#xff0c;借此学习列表解析&#xff0c;并巩固递归算法。 1 选择排序 说到排序&#xff0c;以数值为例&#xff0c;肯定涉及到值大小的对比&#xff0c;选择排序即通过依次在子集中…

win11下载Hbuliderx 安装闪退解决教程+安装包分享

在官网下载 目录 在官网下载 出现闪退 下载失败 2.2. 最终在百度网盘里下载了历史版本 2.3. 然后解压文件 2.4. 双击打开 2.5. 安装成功 出现闪退 下载失败 结果下载失败&#xff0c;一下子弹出的下载框就会闪退 2.2. 最终在百度网盘里下载了历史版本 下载的网盘链接: …

【详解】结构体的内存对齐(每步配图)

目录 引言&#xff1a; 为什么存在结构体内存对齐? 结构体内存对齐规则&#xff1a; 练习一&#xff1a; 测试代码&#xff1a; 结果如下&#xff1a; 第二个练习&#xff1a;结构体的嵌套问题 测试代码&#xff1a; 代码结果如下&#xff1a; 两个关于结构体的易错…

第七讲 单片机驱动彩色液晶屏 控制RA8889软件:显示文字:Part3.自建字库

单片机驱动TFT彩色液晶屏系列讲座 目录 第一讲 单片机最小系统STM32F103C6T6通过RA8889驱动彩色液晶屏播放视频 第二讲 单片机最小系统STM32F103C6T6控制RA8889驱动彩色液晶屏硬件框架 第三讲 单片机驱动彩色液晶屏 控制RA8889软件:如何初始化 第四讲 单片机驱动彩色液晶屏 控…

【重明】机器视觉QT/C++实现工业相机二次开发框架

工业相机二次开发是机器视觉行业必不可少的技能之一。 而如何实现一个框架&#xff0c;能够兼容所有工业相机二次开发&#xff0c;从而支持多种类型的工业相机&#xff0c;就是机器视觉行业的进阶技能了。 重明工业相机二次开发项目就是在实现相机二开框架的基础上&#xff0c…

Java面试汇总——redis篇

1、什么是缓存穿透 ? 怎么解决 ? 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在&#xff0c;这样缓存就形同虚设&#xff08;只有数据库查到了&#xff0c;才会让redis缓存&#xff0c;但现在的问题是查不到&#xff09;&#xff0c;会频繁的去访问数据库。 解决…

6. 逻辑删除

逻辑删除对应的是物理删除&#xff0c;分别介绍一下这两个概念&#xff1a; 物理删除 &#xff1a;指的是真正的删除&#xff0c;即&#xff1a;当执行删除操作时&#xff0c;将数据表中的数据进行删除&#xff0c;之后将无法再查询到该数据逻辑删除 &#xff1a;并不是真正意…

whistle代理+mock轻松解决“页面端“测试接口没数据难题

0、whistle是什么&#xff1f;怎么用&#xff1f; 自行百度&#xff0c;此处不再赘述&#xff01; 1、示例演示&#xff08;交易订单测试&#xff09; 背景和痛点最近在测试一个小需求&#xff0c;需要涉及订单侧服务商品库侧服务库存侧服务财务侧线下交易服务。痛点主要在订…

淘宝商家实现批量上货API接口调用接入说明(淘宝开放平台免申请接入)

API接入详细步骤&#xff1a; 第一步&#xff1a;在淘宝开放平台中选择接口塡写应用申报递交给我司&#xff0c;确认接口是否都有。 第二步&#xff1a;确认接口都有&#xff0c;需交1000元进行测试&#xff0c;可以测试三天&#xff0c;测试数据符合淘宝开放平台接口参数说明&…

【python】09.面向对象进阶

面向对象进阶 在前面的章节我们已经了解了面向对象的入门知识&#xff0c;知道了如何定义类&#xff0c;如何创建对象以及如何给对象发消息。为了能够更好的使用面向对象编程思想进行程序开发&#xff0c;我们还需要对Python中的面向对象编程进行更为深入的了解。 property装…

轴组【CAN】

如果有126个轴&#xff0c;你程序里挨个添加轴很麻烦。 可以用轴组批量添加。【数组】 CAN驱动器 0x164 就是下个驱动器 p_CAN主站地址:ADR(IoConfig_Globals.CANopen_Manager_SoftMotion);p_CAN从站地址1:ADR(IoConfig_Globals.DMA882_CAN);p_CAN从站地址2:ADR(IoConfig_Gl…

超维空间M1无人机使用说明书——61、ROS无人机物体识别与精准投放

引言&#xff1a;基于空中物流的项目背景。我们提供了使用基于诗句的物体识别和精准投放、降落。实现原理如下&#xff1a; 1、在ROS下使用机载电脑实现物体识别 2、记载电脑根据反馈的位置发布运动控制指令 3、PX4解析机载电脑发布的命令&#xff0c;作出运动控制 4、设置…

PCL 使用克拉默法则进行四点定球(C++详细过程版)

目录 一、算法原理二、代码实现三、计算结果本文由CSDN点云侠原创,PCL 使用克拉默法则进行四点定球(C++详细过程版),爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫与GPT生成的文章。 一、算法原理 已知空间内不共面的四个点,设其坐标为 A (…

【Maven】003-基于 IDEA 创建 Maven 工程

【Maven】003-基于 IDEA 创建 Maven 工程 文章目录 【Maven】003-基于 IDEA 创建 Maven 工程一、关于 Maven 工程的 GAVP1、GAVP 简介2、GAV 坐标规范3、Packaging 定义规则 二、基于 IDEA 创建 Maven 工程1、创建 Maven 项目2、创建结果3、项目结构说明 一、关于 Maven 工程的…

特征工程-特征处理(一)

特征处理-&#xff08;离散型特征处理&#xff09; 完成特征理解和特征清洗之后&#xff0c;我们要进行特征工程中最为重要和复杂的一步了——特征处理 离散型特征处理 离散型特征通常为非连续值或以字符串形式存在的特征&#xff0c;离散型特征通常来讲是不能直接喂入模型中…

HandlerInterceptor拦截器 postHandle执行addHeader无效,postHandle执行setStatus无效的解决方案

问题描述 想在postHandle方法里执行addHeader方法来补充一些Header信息&#xff08;如分页信息&#xff09;&#xff0c;但是最后执行却未如期显示 拦截器源码 import com.zhangziwa.practisesvr.utils.response.ResponseContext; import jakarta.servlet.http.HttpServletR…

必看!2023年机器人领域十大事件!

原创 | 文 BFT机器人 2023年&#xff0c;机器人产业快速发展&#xff0c;成就了机器人领域的一个又一个里程碑。机器人行业涌现了许多令人瞩目的事件&#xff0c;实现了重大突破&#xff0c;展示了机器人技术在各个领域的广泛应用和革命性变革。 本文将对2023年机器人领域的十…

【MATLAB】REMD_LSTM神经网络时序预测算法

有意向获取代码&#xff0c;请转文末观看代码获取方式~也可转原文链接获取~ 1 基本定义 REMD-LSTM神经网络时序预测算法是一种结合了REMD&#xff08;Reservoir Enhanced Multi-scale Deep Learning&#xff09;算法和长短期记忆神经网络&#xff08;LSTM&#xff09;的时间序…