Docker-系统环境

news2025/7/18 17:08:04

Docker

    • 1.Docker与虚拟机的区别
    • 2.Docker主要解决的问题
    • 3.镜像和容器
    • 4.Docker的安装
    • 9.查找镜像
    • 10.常用命令
    • 11.安装数据库
    • 12.安装tomcat
    • 13.容器使用注意事项

1.Docker与虚拟机的区别

Docker是开发运行和部署应用程序的开发管理平台,它类似于虚拟机,可以独立运行,部署并管理应用。
在这里插入图片描述

  • Docker容器提供了基于进程的隔离,而VM虚拟机提供了资源的完全隔离。
  • Docker使用宿主操作系统的内核,而VM虚拟机使用独立的内核。
  • Docker的启动速度是秒级的,VM是分钟级的。
  • Docker的集成性比VM好。

2.Docker主要解决的问题

  • 保证程序运行环境的一致性
  • 降低配置开发环境,生产环境的复杂度和成本
  • 实现程序的快速部署和分发

3.镜像和容器

  • 镜像
    一个镜像相当于是一个服务的模板,比如说下载一个mysql的docker,实际上就相当于是下载一个包含了mysql服务的轻量级虚拟机,我们可以基于这个镜像创建N个容器。

  • 容器
    容器相当于是镜像的实例,有点类似于编程中类和实例的关系,容器创建好后,通过运行这个容器就可以得到对应的服务。

4.Docker的安装

  1. 安装网络相关命令
    yum install net-tools
    在这里插入图片描述

  2. 安装实用工具
    yum install -y yum-utils device-mapper-persistent-data lvm2
    在这里插入图片描述

  3. 添加yum镜像(这样后面安装docker就会快点)
    yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
    在这里插入图片描述

  4. 更新yum缓存
    yum makecache fast
    在这里插入图片描述

  5. 安装docker-ce (开始安装docker ,ce表示社区版,安装会有点慢)
    yum -y install docker-ce
    在这里插入图片描述

  6. 查看docker服务
    systemctl list-unit-files | grep docker
    在这里插入图片描述
    如果显示disabled,说明docker服务不会随操作系统的启动而自动启动。
    systemctl enable docker 运行这个命令会让docker随着服务器的启动而启动
    在这里插入图片描述

  7. 启动docker服务(只用启动一次)
    systemctl start docker 开启
    systemctl stop docker 关闭
    systemctl restart docker重启
    在这里插入图片描述

  8. 查看docker信息(验证docker是否启动)
    docker info
    在这里插入图片描述

9.查找镜像

  • docker命令查找
    docker search 镜像名
    在这里插入图片描述
    docker search mysql --filter=STARS=3000 搜索不小于3000的的镜像
    在这里插入图片描述
  • 国外的镜像仓库地址:https://hub.docker.com
    在这里插入图片描述
    在这里插入图片描述
  • 国内的镜像仓库地址:https://hub.daocloud.io

在这里插入图片描述
在这里插入图片描述

10.常用命令

Docker命令及参数使用大全:https://www.w3cschool.cn/docker/docker-command-manual.html

  1. 查看本机已下载镜像
    docker images
    在这里插入图片描述
字段名含义
REPOSITORY镜像仓库源
TAG镜像的版本
IMAGE ID镜像的id
CREATED镜像的创建时间
SIZE镜像的大小
  1. 下载镜像
    docker pull 镜像地址

  2. 删除镜像
    docker rmi 镜像ID

  3. 查看本机正在运行的容器
    docker ps
    在这里插入图片描述

  4. 查看本机所有容器(不管是否在运行)
    docker container ls -a
    在这里插入图片描述

  5. 启停容器
    docker start 容器名 开启
    docker stop 容器名 停止
    docker restart 容器名 重启

  6. 删除容器
    docker rm 容器名

  7. 复制文件到容器中
    docker cp 宿主机文件路径 容器名:容器内文件路径

  8. 复制容器中的文件到主机中
    docker cp 容器id:容器内路径 目的的主机路径

11.安装数据库

下载镜像—创建并启动容器—连接docker里面的数据库—创建系统数据库—执行sql

  1. 从daocloud上拉取镜像地址
    docker pull 镜像地址
    docker pull daocloud.io/library/mysql:5.6.22
    在这里插入图片描述

  2. 创建并启动容器
    docker run --name 容器名 -e MYSQL_ROOT_PASSWORD=123456 -p 端口:端口 -d 镜像地址
    docker run --name mysql-5.6 -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 -d daocloud.io/library/mysql:5.6.22 (该命令需要参考daocloud详情部分)
    在这里插入图片描述
    注意:第一个3306是宿主机的端口号,也可以改成其他端口号。第二个3306是docker容器内想映射出来的端口号,这里是mysql的端口。这里必须要指定映射端口号,否则外界无法访问容器内的mysql。

  3. 连接docker里面的数据库
    在这里插入图片描述

  4. 在docker这里创建系统数据库
    在这里插入图片描述

12.安装tomcat

下载镜像—创建并启动容器—上传程序包到服务器指定路径,并解压—验证docker里tomcat容器指定路径下程序包上传成功—重启容器

  1. 从daocloud上拉取镜像地址
    docker pull 镜像地址
    docker pull daocloud.io/library/tomcat:8.0.23
    在这里插入图片描述
  2. 创建并启动容器
    docker run --name 容器名 -p 端口:端口 -d -v 服务器路径:容器路径 镜像地址
    docker run --name tomcat-8.0 -p 8080:8080 -d -v /mnt/tomcat/xbh:/usr/local/tomcat/webapps/xbh daocloud.io/library/tomcat:8.0.23
    在这里插入图片描述
  3. 上传程序包到服务器指定路径,并解压
    将程序包上传到安装了docker服务器/mnt/tomcat/xbh下
    在这里插入图片描述
  4. 验证docker里tomcat容器指定路径下程序包上传成功
    docker exec -it 容器名 bash进入容器内的bash交互命令模式查看是否挂载成功
    docker exec -it tomcat-8.0 bash
    在这里插入图片描述
    /usr/local/tomcat/webapps/xbh路径下面找到xbh.rar说明挂载成功
  5. 如果要修改程序包文件里面的内容,只能在服务器路径下的程序包进行修改,容器里也会同步修改了。不能在bash交互模式里修改。
    exit 退出bash
    cd /mnt/tomcat/xbh进入程序包路径
    vi db.properies 修改配置文件
    wq保存
    cat db.properies查看文件内容是否修改成功

可再次进入tomcat容器验证文件内容修改成功:
docker exec -it tomcat-8.0 bash
cd webapps/xbh
cat db.properies
6. 重启容器
docker restart 容器名
docker restart tomcat-8.0

13.容器使用注意事项

  • 尽量让一个容器做一件事情,或启动一个服务。
  • 焦虑使用挂载的方式将数据文件挂载到容器中,容器里面尽量不要保存数据。
  • 尽量按照docker的要求使用容器,而不是像一个虚拟机那样什么都往容器里面装。
  • 尽量不要使用交互模式来直接操作容器,而是在宿主机上执行命令,或者使用docker file来进行定制。
    Docker File用于构建镜像。通过一系列指令,基于某一个原始镜像来创建一个新的镜像,基于文本文件。维护比较方便,构建比较灵活,一般运维工程师经常使用,测试工程师了解即可。

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

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

相关文章

七、Feign

文章目录一、Feign实现远程调用1.替换RestTemplate发起远程调用,RestTemplate存在的问题:2.实现Feign远程调用:二、Feign的自定义日志1.Feign可修改的配置如下2.方式一:配置文件方式3.方式二:Java代码方式一、Feign实现…

Qt:信号与槽机制

说实话,Qt给我的感觉像一种魔改版c,不纯粹,看不到内部的源代码,也不知道一些宏是怎么实现的... 信号与槽内部机制 回归正题,其实学过设计模式的应该都能看出来,qt的这个机制是一个观察者模式; …

又解锁了一种OpenFeign的使用方式!

引言 Hello 大家好,这里是Anyin。 在关于OpenFeign那点事儿 - 使用篇 中和大家分享了关于OpenFeign在某些场景下的一些处理和使用方法,而今天Anyin再次解锁了OpenFeign的又一个使用场景,只能说真香。 在我们日常开发中,相信大家…

SSM框架-MyBatis基础

1. MyBatis简介 1.1 MyBatis历史 MyBatis最初是Apache的一个开源项目iBatis,2010年6月这个项目由Apache Software Foundation迁移到了Google Code。随着开发团队转投Google Code旗下,iBatis3.x正式更名为MyBatis。代码于2013年11月迁移到Github。 iBa…

Pipelines in Shell

本篇文章内容需要读者知道 shell 的一些语法和作用,知道 shell 的用途,和一些基本的用法。 这里可以查看原文:Pipelines in Shell 学习 shell 脚本必须要理解 pipeline 的概念,知道 command 的输入(input)和…

编译概念总结

一个很笨很笨的人的编译自救笔记。 1 程序设计语言 程序设计语言用于书写计算机程序的语言。语言的基础是一组记号和一组规则。根据规则由记号构成的记号串的总体就是语言。在程序设计语言中,这些记号串就是程序。 程序设计语言由三个方面的因素,语法…

[附源码]SSM计算机毕业设计商场日常维修管理系统JAVA

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

深度学习(19):nerf论文公式理解

注:有问题欢迎评论留言,但尽量不要喷呀。 1. nerf论文第四章翻译如下: 我们的5D神经辐射场将场景表示为空间任意点的体积密度和定向发射辐射(directional emitted radiance)。我们使用经典体积渲染(class…

嗯哦哎辟 2022 游寄

虽然上次不是假的,但这次是真的寄了。 Day 0 虽然是南京本地人,但因疫情原因,晚上决定去住了酒店。 看了一眼考场,感觉位置小得离谱。不愧是 NOI 2022 团体总分第十的“强省”江苏。 刚开始去了 409,发现房间里一股…

C++ 基础入门

1、变量 作用:给一段指定的内存空间起名,方便操作这段内存。 2、常量 作用:用于记录程序中不可更改的数据 C中定义常量的两种方式: #define 宏常量: #define 常量名 常量值const修饰的变量:const数据类型 …

26k Star, 理解Git太轻松了。。。

程序员宝藏库:gitee.com/sharetech_lee/CS-Books-Store Git是目前使用比较广泛一款版本控制工具,从事开发工作,很难绕开Git。 因此,关于如何快速学习Git使用一直都是一个经久不衰的话题。 前不久我在另外一篇文章中曾提到Git对初…

【药材识别】基于色差色温特征结合SVM实现药材炮制程度判断系统附GUI界面

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

十九种卷积

参考文章:一文看尽深度学习中的20种卷积(附源码整理和论文解读) - 知乎 (zhihu.com)https://zhuanlan.zhihu.com/p/381839221 一、原始卷积(Vanilla Convolution) CNNs中的卷积,也称为滤波器,是由一组具有固定窗口大小且带可学习参数(learnable paramerters)的卷积核所组…

Java之IO流详解(一)——File类

一、File类创建文件 方法说明public boolean createNewFile()当具有该名称的文件不存在时,创建一个由该抽象路径命名的新空文件public boolean mkdir()创建由此抽象路径命名的目录public boolean mkdirs()创建由此抽象路径命名的目录,包括任何必须但不存…

Go常见错误第15篇:interface使用的常见错误和最佳实践

前言 这是Go常见错误系列的第15篇:interface使用的常见错误和最佳实践。 素材来源于Go布道者,现Docker公司资深工程师Teiva Harsanyi。 本文涉及的源代码全部开源在:Go常见错误源代码,欢迎大家关注公众号,及时获取本…

加载配置文件内容利用反射动态创建对象和调用方法(开闭原则的体现)

反射的应用:根据配置文件来创建对象和调用方法 需求:1,根据配置文件re.properties 指定的信息,创建对象并调用方法 classfullpathsrc.com.liu.Cat methodhi 即通过外部文件配置,在不修改源码的情况下,来控…

GAN详解

前言 GAN是当今作为火热的生成式算法,由Ian Goodfellow,Yoshua Bengio等人在2014年提出的,Yan LeCun表示道GAN是“adversarial training is the coolest thing since sliced bread”。它使用两个神经网络,将一个神经网络与另一个…

ArcGIS中ArcMap栅格图层0值设置为NoData值的简便方法

本文介绍在ArcMap软件中,将栅格图层中的0值或其他指定数值作为NoData值的方法。 在处理栅格图像时,有时会发现如下图所示的情况——我们对某一个区域的栅格数据进行分类着色后,其周边区域(即下图中浅蓝色的区域)原本应…

C语言学习记录(十五)C预处理器和C库

文章目录一、C预处理器1.1 翻译程序1.2 明示常量:#define1.3 在#define中使用参数1.4 文件包含:#include1.5 其他指令1.5.1 #undef指令1.5.2 从C预处理角度看已定义1.5.3 条件编译1.5.3.1 #ifdef、#else和#endif指令1.5.3.2 #ifndef1.5.3.3 #if和elif指令…

Gof23-创建型-工厂-单例-抽象工厂-建造-原型以及UML的绘制

创建型的设计模式工厂模式单例模式抽象工厂建造者模式原型模式UML图形的绘制工厂模式 工厂模式 Factory Pattern 适用的场景:统一的接口作为统一的零件,实现类作为零件的组合,将实例产品类的生产交给工厂,用户只需要面对工程提取…