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)在先前的教程中,我们已…...
【C】标准IO库函数
fopen/fclose #include <stdio.h>FILE *fopen(const char *path, const char *mode); 返回值:成功返回文件指针,出错返回NULL并设置errnoint fclose(FILE *fp); 返回值:成功返回0,出错返回EOF并设置errnomode参数是一个字符…...
http客户端Feign
Feign替代RestTemplate RestTemplate方式调用存在的缺陷 String url"http://userservice/user/"order.getUserId();User user restTemplate.getForObject(url, User.class); 代码可读性差,变成体验不统一; 参数复杂的时候URL难以维护。 &l…...
如何在Java中使用枚举类:从入门到进阶
枚举类是Java中一种特殊的数据类型,它允许我们将一组有限的值作为一组常量来使用,这些常量在代码中具有固定的名称和类型。在Java中,枚举类通常用于代表状态、选项和类别等具有离散值的变量。本篇博客将深入探讨Java中的枚举类,包…...
操作系统(1.2)--引论
目录 一、操作系统的基本特性 1.并发性 1.1 并行与并发 1.2 引入进程 2.共享性 2.1 互斥共享方式 2.3 同时访问方式 3.虚拟 3.1 时分复用技术 4. 异 步 二、操作系统的主要功能 1.处理机管理功能 1.1 进程控制 1.2 进程同步 1.3 进程通信 1.4 调度 2. 内…...
【Linux】 shell if的[]和[[]]区别
文章目录[]和test[]和[[]]区别总结参考[]和test Shell中的 test 命令用于检查某个条件是否成立,它可以进行数值、字符和文件三个方面的测试 test常用于 if ,作为判断条件,if test等价于 if [ ],因此,test和[] 内的内…...
利用flask解析海康摄像头视频
利用flask解析海康摄像头视频利用flask解析海康摄像头和大华摄像头的视频一、安装依赖包二、获取海康摄像头视频流三、将视频流输出到Web页面四、 创建HTML模板文件利用flask解析海康摄像头和大华摄像头的视频 作为AI智能的一种应用场景,视频监控系统已经在各个行业…...
./docker-compose.yml‘ is invalid
文章目录前言提示原因版本太低解决方法更新删除原来不能执行的/usr/local/bin/docker-compose下载安装docker-compose添加权限前言 安装ctfd过程中的一些报错 rootubuntu:/CTFd# docker-compose up -d ERROR: The Compose file ./docker-compose.yml is invalid because: net…...
Java 流程控制
条件/选择结构 if if(条件表达式){// 表达式为 true 时,执行该代码块 }if(true) {System.out.println("hello"); }if else if(条件表达式){// 表达式为 true 时,执行该代码块 } else {// 表达式为 false 时,执行该代码块 }if(1 …...
边界无限入选首届“网络安全高成长性企业”并荣获“勇创之星”
近日,由工业和信息化部、四川省人民政府主办的“2023年中国网络和数据安全产业高峰论坛网络安全产融合作分论坛”在成都举行,论坛上公布了“2022年度网络安全高成长性企业”名单。云原生安全、应用安全“灵动智御”理念创领者北京边界无限科技有限公司&a…...
SpringBoot项目的快速创建方式(包含第一个程序的运行)
目录 一、IDEA所用的版本以及插件 二、操作步骤 一、IDEA所用的版本以及插件 idea的版本: idea2022版本下载安装配置与卸载详细步骤(包含运行第一个java程序教程)_idea2022下载_云边的快乐猫的博客-CSDN博客 如果英文看不懂就点击…...
营销型网站的特点/怎样在平台上发布信息推广
一:如果你的机器上之前安装有mysql数据库,先进行卸载 (1)需要先将它的文件删除 (2)同时注意删除老板本的etc/my.cnf文件和/etc/mysql目录,这两个文件控制的是mysql的一些配置属性。 二ÿ…...
网站制作熊猫建站/大数据分析
PMP考试的重点越来越偏向对于PMBOK的理解运用上,所以PMBOK需要反复读,至少三遍。 第一遍很粗略的看,把所有内容都遍览,让自己对于整本书有个大体的理解。 第二遍需要精读,阅读的过程中做好便签和色笔记录,阅…...
山西网站设计/快速排名生客seo
对于中断通俗点说:就是让单片机的cpu暂停执行当前任务转去执行引起中断的任务。刚开始学习单片机时非常排斥中断方面的东西因为要记忆很多寄存器相关的东西什么IE,IP等但是仔细一想如果不懂中断就只能写最简单的顺序执行程序而且非常浪费单片机的这些中断…...
网站创建二级域名/百度移动端关键词优化
一个拿着铅笔的人看谁都像句子,一个拿着相机的人看谁都像图像,一个持有电脑的人看谁都像数据。我不认为我们需要对这些格言玩文字游戏。但是它们引起我们警觉的是,每种技术都有偏见。像语言文字本身,它总是鼓励我们赞同和尊重某些…...
怎么重新装wordpress/免费的外贸网站推广方法
一. 基本介绍 awk 是一门特殊的编程语言, 它非常适合处理一些任务(改变数据格式、验证数据的有效性、搜索特定的数据项、求和、打印报表等), 经常只需要一两行便可搞定。 一个 awk 程序由一系列的模式和动作组成, 这些模式与动作说明了在输入中搜索哪些…...
做网站vi系统是什么/合肥百度搜索优化
免费自动化测试软件 AlldayTest下载地址为: http://www.alldaytest.com/download.do?lancn 绿色免费版下载地址华军软件园也有AlldayTest兼具功能测试和性能测试,支持测试Web(html,ASP,JSP,PHP等),C#,VB,C,Activex,Silverlight,WPF等多种编程语言编写的…...