Docker入门
Docker
一、何为Docker
Docker是一个开源的应用容器引擎,基于GO语言并遵循从Apache2.0协议开源。
Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后在发布到任何流行的Linux机器上,也可以实现虚拟化。
容器是完全使用沙箱机制,相互之间不会有任何接口,更重要的是容器性能开销极低。
Docker支持将软件编译成一个镜像;然后在镜像中各种软件做好配置,将镜像发布出去,其他使用这可以之间使用这个镜像。运行中的这个镜像称为容器,容器启动是非常快速的。
二、Docker核心概念
docker镜像(Images):Docker镜像适用于创建Docker容器的模板。
docker容器(Container):容器时独立运行的一个或一组应用。
docker客户端(Client):客户端通过命令行或者其他工具使用Docker。
API(https://docs.docker.com/reference/api/docker_remote_api)与Docker的守护进程通信。
docker主机(Host):一个物理或者虚拟的机器用于执行Docker守护进程和容器。
docker仓库(Registry):Docker仓库用来保存镜像,可以理解为代码控制中心的代码仓库。DockerHub(https://hub.docker.com)提供了庞大的镜像集合供使用。
使用Dockers的步骤:
1)、安装Docker;
2)、去Docker仓库找到这个软件的镜像;
3)、使用Docker运行这个镜像,这个镜像就会生成一个容器;
4)、对容器的启动停止就是对软件的启动停止;
三、安装Docker
查看Contos版本
uname -r$$
Docker要求Contos系统的内核版本高于3.1.0
$$
升级软件包及内核;(选做)
yum update安装Docker
yum install docker启动Docker
systemctl start docker --启动Docker备注: 此处启动可能会报错,解决方法参考文末常见问题将Docker设为开机启动项
[root@localhost ~]# systemctl enable docker返回结果为: Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.四、常用操作
***Docker的仓库 (Docker Hub)
1、镜像操作
操作 | 命令 | 说明 |
检索 | docker search 关键字 eg:docker search redis | 我们经常去docker hub 上检索镜像的详细信息,如镜像的TAG。 |
拉取 | docker pull 镜像名:tag | :tag 是可选的,tag表示标签,多为软件的版本,默认是latest(最新的)。 |
列表 | docker images | 查看所有本机镜像 |
删除 | docker rmi image-id | 删除指定的本地镜像 |
检索信息详情
INDEX | NAME | DESCRIPTION | STARS | OFFICIAL | AUTOMA |
索引 | 镜像的名称,一般只需要看/后面的内容 | 说明 | 关注人数k | 是否是官方 | 是否自动配置 |
2、容器操作
操作 | 命令 | 说明 |
运行 | docker run -name container -name -d image-name eg:docker run name myredis -d redis | -naem:自定义容器名 -d:后台运行 image-name:指定镜像模板 |
列表 | docker ps (查看运行中 的容器) | 加上-a;可查看所有容器 |
启动 | docker start container-name/container-id | 启动容器 |
停止 | docker stop container-name/container-id | 停止当前你所运行的容器 |
删除 | docker rm container-id | 删除指定的容器 |
端口映射 | -p 3306:3306 eg:docker run -d -p 3306:3306 --name myreids docker.io/redis | -p:主机端口(映射到)容器内部的端口 |
容器日志 | docker logs container-name/container-id | |
更多命令 | https://docs.docker.com/engine/reference/commandline/docker/ | 集体操作以官网仓库操作步骤为主 |
docker ps 或者 docker ps -a 显示的内容:
CONTAINER ID #容器ID
IMAGE #镜像名称
COMMAND #执行的cmd
CREATED #创建了多久
STATUS #容器的status:Up(正在运行) or Exited(不在运行)
PORTS #端口映射情况,默认tcp
NAMES #容器别名2、安装Tomcat
1、docker search tomcat; ----在Docker仓库检索Tomcat
2、docker pull tomcat; -----从Docekr公共仓库拉取Tomcat(默认版本:latest,最新版)3、docker images; ----查看本地镜像仓库
4、docker run -d --name MyTomcat_8888 -p 8888:8080 image-name/image-id ----配置端口映射,启动Tomcat容器(使用浏览器访问:ip+端口号访问,如遇'404',参考文末可能遇到的问题第三条)3、安装MySQL(不要在正式环境中使用docker安装mysql)
1、docker search mysql; ----在Docker仓库检索mysql
2、docker pull mysql; -----从Docekr公共仓库拉取mysql(默认版本:latest,最新版)3、docker images; ----查看本地镜像仓库
4、docker run -d --name mysql-3308 -e MYSQL_ROOT_PASSWORD=123456 -p 3308:3306 image-name/image-id ----启动mysql容器(连接数据库,我使用的是IDEA自带的:++正常情况是用不了的++,参考文末可能遇到的问题第三条)需要使用到的命令:
查看安装的镜像: docker images
查看启动的容器: docker ps
查看所有容器: docker ps -a
查看容器日志: docker logs
容器id启动mysql(参考Docker仓库中MySQL参考文档): docker run --name mysql01 -e MYSQL_ROOT_PASSWORD= 123456 -d mysql
启动mysql并进行端口映射(可以外部访问): docker run -p 3306:3306 --name mysql01 -e MYSQL_ROOT_PASSWORD=123456 -d mysql 可能遇到的问题:
1、启动Docker时报错
1、报错信息:Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details.问题原因:因为使用命令: yum install docker下载时, 默认下载的是Docker的最新版本, 但是内核版本低的话可能不兼容新版本Docker, 所以有可能出现如上错误。解决方法:卸载Docker,更新Linux系统内核。具体操作:1、卸载Docker命令:yum remove docker-*2、更新Linux系统内核命令:yum update 3、重启命令:reboot**2、报错信息:Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist问题原因:CentOs Linux 8 从 2021.12.31 号后已经停止维护,所以之后更新镜像需要通过 vault.centos.org来获取更新。所以需要修改软件源mirrors 地址,具体操作如下:修复具体操作:# 进入yum.repos.d 目录下cd /etc/yum.repos.d/# 修改源链接sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*# 要将之前的mirror.centos.org 改成 vault.centos.orgsed -i 's|#baseurl=http://mirror.centos.org|baseurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*2、Tomcat做了端口映射之后,访问时报'404'
网页反馈报错信息:HTTP Status 404 – 未找到Type Status Report消息 Not found描述 源服务器未能找到目标资源的表示或者是不愿公开一个已经存在的资源表示。Apache Tomcat/9.0.34问题原因:Docker启动的Tomcat容器中的webapps文件夹下的#ROOT#,文件夹缺失导致的。(如果需要多个容器,每个都需要设置)解决方法:找到你本地的Tomcat中的webapps下的ROOT文件夹,再通过Xftp发送的Linux的某个路径下,然后通过命令将ROOT文件拷贝只需要的容器中。具体操作:1、找到你本地的Tomcat中的webapps下的ROOT文件夹;2、再通过Xftp发送的Linux的某个路径下;3、然后通过命令将ROOT文件拷贝只需要的容器中[root@localhost /]# docker cp /usr/local/myTomcat/apache-tomcat-9.0.35/webapps/ROOT 151176e3682e:/usr/local/tomcat/webapps/3、MySQL启动之后,不能调用,用命令调用也提示找不到MySQL
网页反馈报错信息:[08001] Could not create connection to database server. Attempted
reconnect 3 times. Giving up.
java.net.ConnectException: Connection refused: connect.问题分析:```shell[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES (说明)a55f4a089865 mysql "docker-entrypoint..." 6 seconds ago Up 4 seconds 33060/tcp, 0.0.0.0:3308->3306/tcp mysql-3308 (MySQL是启动成功的,但是还不能使用)8f422d552e8d mysql "docker-entrypoint..." 17 hours ago Up 27 minutes 0.0.0.0:3306->3306/tcp, 33060/tcp mysql-3306 (MySQL启动成功,并配置成功,可以使用的)151176e3682e 927899a31456 "catalina.sh run" 20 hours ago Up 14 minutes 0.0.0.0:8888->8080/tcp MyTomcat_test```需要将root用户添加到设置中解决方法:需要将root用户添加到设置中(如果需要多个容器,只需要设置一次)具体操作:#启动docker run --name mysql-3306 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456! -d mysql#进入容器docker exec -it mysql bash#登录mysqlmysql -u root -pALTER USER 'root'@'localhost' IDENTIFIED BY '123456';#添加(新的)远程登录用户 (这一步可以省略)CREATE USER 'bog'@'%' IDENTIFIED WITH mysql_native_password BY '123456';GRANT ALL PRIVILEGES ON *.* TO 'bog'@'%';#退出(需要退出两次,第一次退出应用,第二次退出容器)exit(或者快捷键:Ctrl+D)# 重新使用数据库客户端工具就可以连接到了。方法仅供参考,具体解决方法根据情况而定情况
相关链接:
菜鸟教程|Docker教程: https://www.runoob.com/docker/docker-tutorial.htmlDocker 官网:https://www.docker.comDocker仓库 官网:https://hub.docker.comGithub Docker 源码:https://github.com/docker/docker-ce
相关文章:
Docker入门
Docker一、何为DockerDocker是一个开源的应用容器引擎,基于GO语言并遵循从Apache2.0协议开源。Docker可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后在发布到任何流行的Linux机器上,也可以实现虚拟化。容器是完全使…...
时间序列分析 | CNN-LSTM卷积长短期记忆神经网络时间序列预测(Matlab完整程序)
时间序列分析 | CNN-LSTM卷积长短期记忆神经网络时间序列预测(Matlab完整程序) 目录 时间序列分析 | CNN-LSTM卷积长短期记忆神经网络时间序列预测(Matlab完整程序)预测结果模型输出基本介绍完整程序参考资料预测结果 模型输出 layers = 具有以下层的 151 Layer 数组:...
【蒸滴C】C语言结构体入门?看这一篇就够了
目录 一、结构体的定义 二、结构的声明 例子 三、 结构成员的类型 结构体变量的定义和初始化 1.声明类型的同时定义变量p1 2.直接定义结构体变量p2 3.初始化:定义变量的同时赋初值。 4.结构体变量的定义放在结构体的声明之后 5.结构体嵌套初始化 6.结构体…...
第十三届蓝桥杯
这里写目录标题一、刷题统计(ceil函数返回的是等值于某最小整数的浮点值,不强制转换回int就wa,没错就连和int整数相加都wa二、修剪灌木(主要应看清楚会调转方向三、统计子矩阵(前缀和滑动窗口⭐)四、[积木画…...
消息队列mq
应用场景: 1、解耦 2、削峰填谷 3、异步处理 4、消息通讯 工作模式: 一个消息只能被消费一次(订阅模式除外),消费者接受到消息会回调业务逻辑,消费逻辑写在回调函数里面。 1、简单模式:一个生产…...
[学习笔记]黑马程序员Spark全套视频教程,4天spark3.2快速入门到精通,基于Python语言的spark教程
文章目录视频资料:一、Spark基础入门(环境搭建、入门概念)第二章:Spark环境搭建-Local2.1 课程服务器环境2.2 Local模式基本原理2.3 安装包下载2.4 Spark Local模式部署第三章:Spark环境搭建-StandAlone3.1 StandAlone…...
git push和 git pull的使用
git push与git pull是一对推送/拉取分支的git命令。git push 使用本地的对应分支来更新对应的远程分支。$ git push <远程主机名> <本地分支名>:<远程分支名>*注意: 命令中的本地分支是指将要被推送到远端的分支,而远程分支是指推送的目标分支&am…...
首发,pm3包,一个用于多组(3组)倾向评分匹配的R包
目前,本人写的第二个R包pm3包已经正式在CRAN上线,用于3组倾向评分匹配,只能3组不能多也不能少。 可以使用以下代码安装 install.packages("pm3")什么是倾向性评分匹配?倾向评分匹配(Propensity Score Match…...
基于Canal的数据同步
基于Canal的数据同步 一、 系统结构 该数据同步系统由Spring Boot和Canal共同组成。 Spring Boot 是一个流行的 Java Web 框架,而 Canal 则是阿里巴巴开源的 MySQL 数据库的数据变更监听框架。结合 Spring Boot 和 Canal,可以实现 MySQL 数据库的实时数…...
vuetify设置页面默认主题色
前言 最近工作中接到一个任务: 项目中分light和dark两种主题色a、b页面默认为dark其他页面默认为light 项目前端环境: vue2jsyarnvuexvuetifyelement ui 解决思路 routerjs中配置路径时进行默认主题设置 在左侧aside点击菜单时,进行主题切…...
【Python入门第二十三天】Python 继承
Python 继承 继承允许我们定义继承另一个类的所有方法和属性的类。 父类是继承的类,也称为基类。 子类是从另一个类继承的类,也称为派生类。 创建父类 任何类都可以是父类,因此语法与创建任何其他类相同: 实例 创建一个名为…...
C#中,读取一个或多个文件内容的方法
读取一个或多个文件内容的方法 在C#中,可以使用File.ReadAllLines方法一次读取多个文件中的所有行内容。例如,以下代码读取了两个文件中的所有行内容,然后将它们合并在一起: string[] file1Lines File.ReadAllLines("file1…...
1 基于神经辐射场(neural Radiance Fileds, Nerf)的三维重建- 简介
Nerf简介 Nerf(neural Radiance Fileds) 为2020年ICCV上提出的一个基于隐式表达的三维重建方法,使用2D的 Posed Imageds 来生成(表达)复杂的三维场景。现在越来越多的研究人员开始关注这个潜力巨大的领域,也…...
水果FLStudio21.0.0中文版全能数字音乐工作站DAW
FL Studio 21.0.0官方中文版重磅发布纯正简体中文支持,更快捷的音频剪辑及素材管理器,多样主题随心换!Mac版新增对苹果M2/1家族芯片原生支持。编曲、剪辑、录音、混音,20余年的技术积淀和实力研发,FL Studio 已经从电音…...
【GlobalMapper精品教程】055:GM坐标转换器的巧妙使用
GM软件提供了一个简单实用的坐标转换工具,可以实现地理坐标和投影坐标之间的高斯正反算及多种转换计算。 文章目录 一、坐标转换器认识二、坐标转换案例1. 地理坐标←→地理坐标2. 地理坐标←→投影坐标三、在输出坐标上创建新的点四、其他转换工具的使用一、坐标转换器认识 …...
C语言之中rand()函数是如何实现的
rand()函数是一个C标准库中的随机数生成函数,用于生成一个范围在0到RAND_MAX之间的伪随机数。RAND_MAX是一个常量,它是随机数的最大值,通常被定义为32767。 rand()函数的实现原理可以概括为以下几个步骤: 初始化随机数生成器 在…...
winform控件PropertyGrid的应用(使运行中的程序能像vistual studio那样设置控件属性)
上周在看别人写的上位机demo代码时,发现创建的项目模板是"Windows 窗体控件库"(如下图) 生成的项目结构像自定义控件库,没有程序入口方法Main,但却很神奇能调试,最后发现原来Vistual Studio启动了一个外挂程序UserContr…...
SBUS的协议详解
SBUS 1.串口配置: 100k波特率, 8位数据位(在stm32中要选择9位), 偶校验(EVEN), 2位停止位, 无控流,25个字节, 2.协议格式: [startbyte] [data1][data2]……...
【PyTorch】教程:torch.nn.Hardshrink
torch.nn.Hardshrink CLASS torch.nn.Hardshrink(lambd0.5) 参数 lambd ([float]) – the λ\lambdaλ 默认为 0.5 定义 HardShrink(x){x,if x>λx,if x<−λ0,otherwise \text{HardShrink}(x) \begin{cases} x, & \text{ if } x > \lambda \\ x, & \text{…...
JavaScript 函数参数
JavaScript 函数对参数的值(arguments)没有进行任何的检查。JavaScript 函数参数与大多数其他语言的函数参数的区别在于:它不会关注有多少个参数被传递,不关注传递的参数的数据类型。函数显式参数与隐藏参数(arguments)在先前的教程中,我们已…...
JavaScript 中的 ES|QL:利用 Apache Arrow 工具
作者:来自 Elastic Jeffrey Rengifo 学习如何将 ES|QL 与 JavaScript 的 Apache Arrow 客户端工具一起使用。 想获得 Elastic 认证吗?了解下一期 Elasticsearch Engineer 培训的时间吧! Elasticsearch 拥有众多新功能,助你为自己…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练
前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1):从基础到实战的深度解析-CSDN博客,但实际面试中,企业更关注候选人对复杂场景的应对能力(如多设备并发扫描、低功耗与高发现率的平衡)和前沿技术的…...
基于Uniapp开发HarmonyOS 5.0旅游应用技术实践
一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架,支持"一次开发,多端部署",可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务,为旅游应用带来…...
Module Federation 和 Native Federation 的比较
前言 Module Federation 是 Webpack 5 引入的微前端架构方案,允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统
目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索(基于物理空间 广播范围)2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...
Java多线程实现之Thread类深度解析
Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
PAN/FPN
import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...
