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)在先前的教程中,我们已…...
 
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
 
使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
 
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
Nginx server_name 配置说明
Nginx 是一个高性能的反向代理和负载均衡服务器,其核心配置之一是 server 块中的 server_name 指令。server_name 决定了 Nginx 如何根据客户端请求的 Host 头匹配对应的虚拟主机(Virtual Host)。 1. 简介 Nginx 使用 server_name 指令来确定…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...
 
OPENCV形态学基础之二腐蚀
一.腐蚀的原理 (图1) 数学表达式:dst(x,y) erode(src(x,y)) min(x,y)src(xx,yy) 腐蚀也是图像形态学的基本功能之一,腐蚀跟膨胀属于反向操作,膨胀是把图像图像变大,而腐蚀就是把图像变小。腐蚀后的图像变小变暗淡。 腐蚀…...
 
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Hive 存储格式深度解析:从 TextFile 到 ORC,如何选对数据存储方案?
在大数据处理领域,Hive 作为 Hadoop 生态中重要的数据仓库工具,其存储格式的选择直接影响数据存储成本、查询效率和计算资源消耗。面对 TextFile、SequenceFile、Parquet、RCFile、ORC 等多种存储格式,很多开发者常常陷入选择困境。本文将从底…...
蓝桥杯 冶炼金属
原题目链接 🔧 冶炼金属转换率推测题解 📜 原题描述 小蓝有一个神奇的炉子用于将普通金属 O O O 冶炼成为一种特殊金属 X X X。这个炉子有一个属性叫转换率 V V V,是一个正整数,表示每 V V V 个普通金属 O O O 可以冶炼出 …...
