Docker 学习历程 -入门

零基础学DevOps必看教程,带你10分钟快速实战入门DevOps DevOps究竟是个什么东西,这个东西能不能用?怎么用?什么样的情况才叫做DevOps落地成功? 阅读详情

该文章出自狂神说javaDocker教学

Docker为什么会出现

环境配置如此麻烦,换一台机器,就要重新来一次,费力费时
Docker镜像的设计,使得Docker得以打破过去【程序即应用】的观念。透过镜像(images)将作业系统核心除外
运作应用程式所需要的系统环境,由下而上打包

Docker历史

-Docker 公司位于旧金山,由法裔美籍开发者和企业家 Solumon Hykes 创立
-新旧LOGO
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210507004755777.gif)
-Docker 公司起初是一家名为 dotCloud 的平台即服务提供商
-Go语言开发
-Docker技术出生时并没有多少人关注,2013年代码开源后每个月都会更新一个新版本,2014年4月Docker1.0发布
-[Docker官网](https://www.docker.com/)
-[Docker文档](https://docs.docker.com/)

Docker能做什么

-之前的VM(虚拟机)技术缺点
1、资源占用非常多
2、冗余步骤多
3、启动慢

在这里插入图片描述

容器化技术
**容器化技术不是模拟一个完整的操作系统**

在这里插入图片描述
面试题:Docker和虚拟机技术有什么不同
1、传统虚拟机,虚拟出一条硬件,运行一个完整的操作系统,然后在这个系统上安装和运行软件
2、容器内的应用直接运行在宿主机里,容器是没有自己的核心的,没有虚拟我们的硬件,所以就轻便了
3、每个容器是互相隔离的,每个容器内都有一个属于自己的文件系统,互不影响
4、传统模式需要一堆文档和安装程序,Docker直接打包镜像发布测试,一键运行
5、Docker使用之后我们部署应用就会像搭积木一样,项目直接打包成镜像
6、Docker在扩张服务器时也只需要将镜像运行在另外一台服务器即可
7、使用Docker可以使服务器环境和本地开发环境高度一致
8、Docker是更高效的资源利用,可以将服务器的性能压榨到极致

安装 Docker

我是使用的Xshell连接阿里云服务器,以CentOS7.8为例
// 卸载旧版本
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine 

// 安装新版本
yum install -y yum-utils

// 设置镜像仓库
yum-config-manager \
    --add-repo \
    http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo 
    // https://download.docker.com/linux/centos/docker-ce.repo   这个会下载很慢,需要更换成阿里云的Docker

// 更新yum软件包索引
yum makecache fast
    
//安装最新版的Docker		ce是社区版本		ee是企业版
yum install docker-ce docker-ce-cli containerd.io

// 测试是否安装成功
// 启动Docker
systemctl start docker

// 查看Docker版本
docker version

// 测试Hello World
docker run hello-world

// 卸载依赖
yum remove docker-ce docker-ce-cli containerd.io

// 删除资源
rm -rf /var/lib/docker
		/var/lib/docker是Docker的默认工作路径

Docker Run流程的原理

在这里插入图片描述

在这里插入图片描述
在这幅图中,我们可以看到,Docker 容器的生命周期里分为五种状态,其分别代表着:
Created:容器已经被创建,容器所需的相关资源已经准备就绪,但容器中的程序还未处于运行状态。
Running:容器正在运行,也就是容器中的应用正在运行。
Paused:容器已暂停,表示容器中的所有程序都处于暂停 ( 不是停止 ) 状态。
Stopped:容器处于停止状态,占用的资源和沙盒环境都依然存在,只是容器中的应用程序均已停止。
Deleted:容器已删除,相关占用的资源及存储在 Docker 中的管理信息也都已释放和移除。

Docker 常用命令

docker version			# 显示docker的版本信息
docker info				# 显示docker的系统信息,包括镜像和容器的数量
docker  --help			# 帮助命令

docker 命令在线帮助文档:

镜像的基本命令

docker images			# 查看本地主机上所有镜像

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
hello-world   latest    d1165f221234   2 months ago   13.3kB
 REPOSITORY    					镜像的仓库源
 TAG       						镜像的标签
 IMAGE ID						镜像的ID
 CREATED        				镜像的创建时间
 SIZE							镜像的大小

  -a, --all             		列出所有的镜像
  -q, --quiet          			只显示镜像的ID



**docker search 搜索镜像**
  
 docker search mysql
 NAME                              DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 mysql                             MySQL is a widely used, open-source relation…   10834     [OK]   

 docker search --help
 -f, --filter filter   Filter output based on conditions provided
 --format string   Pretty-print search using a Go template
 --limit int       Max number of search results (default 25)
 --no-trunc        Don't truncate output

只搜索STARS 大于3000的

 docker search mysql -f=STARS=3000
 NAME      DESCRIPTION                                     STARS     OFFICIAL   AUTOMATED
 mysql     MySQL is a widely used, open-source relation…   10834     [OK]       
 mariadb   MariaDB Server is a high performing open sou…   4085      [OK]  

下载镜像 mysql

docker pull mysql

删除镜像

docker rmi 
docker rmi -f 容器id										根据image id删除
docker rmi -f 容器id 容器id 容器id						删除多个容器
docker rmi -f $(docker images -aq)						删除所有容器

容器的基本命令

下载镜像 CentOS

docker pull centos
docker pull tomcat

启动容器 CentsOS

docker run -it centos  /bin/bash
docker run --name tomcatstarttest -d -p 8080:8080 tomcat:latest
//--name是给容器起名字 -d 是代表后台运行 -d后面代表的是运行那个镜像,镜像的名字
docker ps 			查看启动的容器

在这里插入图片描述

退出容器
exit				退出已启动的容器
ctrl+Q+P			退出不停止已启动的容器

在这里插入图片描述
查看历史启动过的容器

docker ps -a

在这里插入图片描述
删除容器

	docker rm 容器ID			删除指定的容器ID(不能删除正在运行的容器,如果需要强制删除,rm -f)
	docker rm -f						删除所有的容器
	docker ps -a -q|xargs docker rm 	删除所有的容器

启动和停止容器的操作

docker start 容器id		启动容器
docker restart 容器id	重启容器
docker stop 容器id		停止当前正在运行的容器
docker kill 容器id		强制退出

其他常用命令

docker logs -f -t -tail 	查看容器日志
	显示日志
	-tf 		显示日志
	--tail 10	显示日志条数(最新的10条)
docker logs -tf --tail 10 容器id				查看容器最新的10条日志

查看容器中的进程信息

docker top 容器id		

查看镜像的源数据

docker inspect 容器id

进入当前正在运行的容器

docker exec -it 容器id /bin/bash

进入容器正在执行的终端

docker attach 容器id

从容器里拷贝文件到主机上

docker cp 容器id:容器内路径 目的的主机路径

在这里插入图片描述

Docker 安装并启动elasticsearch

docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type.type=single-node" elasticsearch:7.6.2

这样的启动会对服务造成卡顿,占用很大的内容空间
建议在启动前设置ES的内存限制

例如 (测试)

docker run -d --name elasticsearch01 -p 9200:9200 -p 9300:9300 -e "discovery.type.type=single-node" -e ES_JAVA_OPTS="-Xms64m -Xmx512m" elasticsearch:7.6.2	

查看内存使用命令

docker stats 容器ID(不带id会查到所有在运行中的容器的内存使用情况)

在这里插入图片描述
测试ES 9200

curl localhost:9200

在这里插入图片描述

镜像原理-联合文件系统

原文

Docker镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。

UnionFS(联合文件系统)

Union文件系统(UnionFS) 是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker镜像的基础。镜像可以通过分层来进行集成,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含所有底层文件和目录。

镜像加载原理

docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是联合文件系统(UnionFS)。
采用分层结构最大的一个好处就是共享资源,比如有多个镜像都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,同时内存中也只需要加载一份base镜像,就可以为所有容器服务了
在这里插入图片描述

在这里插入图片描述

Docker镜像联合文件系统分层,Tomcat为例

在这里插入图片描述

原文作者理解

在这里插入图片描述

镜像原理-分层理解

在这里插入图片描述
查看容器的细节

docker image inspect redis:latest

layers分层

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
特点:Docker 镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部,这一层就是我们常说的容器层,容器层之下的都叫做镜像层

Commit镜像

docker commit和git commit 原理类似

docker commit -m="提交描述信息" -a="作者" 容器id 目标镜像名:[TAG(版本号)]
实际测试

1、启动一个容器

docker run -it -p 8080:8080 tomcat      // 只是启动tomcat
docker exec -it 容器id /bin/bash			// -it交互模式     交互模式中需要给个路径

cd webapps 

2、官方默认webapps下是没有文件的

3、自己拷贝文件到webapps下

cd ..  			// 回到tomcat目录
ap -r webapps.dist/* webapps      // 拷贝webapps.dist里所有文件到 webapps中

4、开始commit到本地镜像里

docker commit -m="add webapps app" -a="feirou" d8eceb6175b6 tomcat02:1.0  // d8eceb6175b6 容器id

在这里插入图片描述

想要转行的一定要看软件测试发展简史+学习路线 20世纪50年代,计算机刚诞生不久,只有科学家级别的人才会去编程,需求和程序本身也远远没有现在这么复杂多变,相当于开发人员一人承担需求分析,设计,开发,测试等所有工作,当然也不会有人去区分调试和测试。然而严谨的科学家们已经在开始思考 “怎么知道程序满足了需求?”这类问题了。这是软件测试史上一个重要的里程碑,它标志测试终于自立门户师出有名了。 阅读详情

相关推荐

会计转行保安日志8.27

会计很难做 做审计很累经常出差工作重复 做公司财务要么成螺丝钉要么担风险 做投行要硕士学历而且只能在大城市(生活成本太高) 因此我走上了另一条路,erp相关的财务bp,让我去做软件开发是不可能的(太难了),让我去做项目落地也不太现实,有什么技术含量呢?人活这一辈子,就要干点大事!目前想法是做个数据分析或者数据开发数据中台啥的。 目前简历上有一份医院药品销售分析的项目,用python做的,目前最新的成果是pyecharts实现了一个动态排序(调参) 这个是会动的,但是我不知道怎么能让他插入博客

rainrainm的博客 202

Doris部署

今天在测试环境成功部署了doris服务,过程比较曲折,因此记录一下。

阳水平的博客 1791

【从零开始vnpy量化投资】简介:个人vnpy学习路线

本文主要讲述了一些笔者个人进入量化领域的经历,并将过程中的体会分享给大家,这些内容既是过去经历的描述,也可以为本系列的内容做一个简介,即笔者为何会将某些内容设计到专栏中来。

魔落的博客 5284

docker部署doris-all-in-one-2.1.0脚本

【代码】docker部署doris-all-in-one-2.1.0脚本。

学亮编程手记 403

华为 S2600T 存储 3 种网络端口(H4/H5/串口)用途解析与故障恢复实战

本文深度解析华为S2600T存储设备的三种关键网络端口(H4/H5/串口)的功能用途与故障恢复方法。通过详细的配置指南和实战案例,帮助管理员掌握管理接口(H4)的日常运维、维护接口(H5)的高级应用以及串口的应急操作,提升存储设备的可靠性和维护效率。

weixin_30899023的博客 336

Fluent求解器——湍流参数的设置

Fluent湍流参数的介绍和设置。

Ronko_G的博客 4万+

实时开放数据平台Directus

Directus 是用于管理 SQL 数据库内容的实时 API 和应用程序仪表板。

wbsu2004的博客 1万+

OpenIddict实战:5步搞定.NET Core应用的OIDC单点登录集成

本文详细介绍了如何使用OpenIddict在.NET Core应用中快速实现OIDC单点登录集成。通过五个关键步骤,包括环境准备、数据库集成、客户端注册、令牌配置和多应用SSO集成,帮助开发者高效构建安全的企业级单点登录解决方案。

lambda的博客 727

Directus快速入门指南:5分钟搭建企业级内容管理系统

还在为复杂的内容管理系统头疼吗?Directus让你在5分钟内搭建起专业级的内容管理平台,无需编写任何代码!无论你是前端开发者、产品经理还是创业者,这篇文章将带你从零开始快速上手Directus。 ## ???? 读完本文你将掌握 - Directus核心概念与架构理解 - 5分钟快速安装与部署方法 - 数据库连接与内容管理实战 - RESTful API与GraphQL接口调用 - 实时数据同步...

gitblog_00318的博客 756

避开ego_planner仿真的第一个坑:深度相机、点云与odom话题配置全指南

本文详细解析了ego_planner仿真中深度相机、点云与odom话题配置的关键问题,帮助开发者避开常见陷阱。从数据流架构到具体配置细节,包括深度相机的内外参匹配、点云数据规范要求以及odom话题的验证方法,提供了全面的实战指南和优化建议。

weixin_30335575的博客 493

PCAN-Explorer5使用教程

在PCAN中新建工程,导入DBC文件(右键apply),导入采集的数据选择对应的CAN通道点击红框中的标记可选择想要查看的信号在plot界面跳出属性,可调整信号显示的样式和最大最小值调出cursor,选择需要观测的变量,选中右键style——Period 可显示间隔时间增加cursor,可观测多个变量。

weixin_43997043的博客 6913

Directus DevOps:CI/CD流水线的自动化部署方案

在现代软件开发中,持续集成和持续部署(CI/CD)已成为项目成功的关键因素。Directus作为一个开源的内容管理平台,其复杂的多包架构和多样化的部署场景,更需要一套完善的自动化部署方案。 你是否遇到过这些问题? - 手动部署Directus到不同环境耗时耗力 - 版本更新时担心数据丢失或配置错误 - 多环境(开发、测试、生产)配置管理混乱 - 缺乏自动化的测试和代码质量检查 本文将为你提供一...

gitblog_01124的博客 497

virtualbox虚拟机里面最顶部没有控制、设置和帮助等选项

无意中操作,导致virtualbox虚拟机里面最顶部没有控制,设置和帮助选项  virtualbox虚拟机窗口显示如下如: 如何设置,窗口显示如下图所示呢: virtualbox虚拟机窗口模式显示设置,切换可以通过如下图所示操作进行切换: PS:一定要是右边的Ctrl+C

WEL测试 8780

【测试开发学习历程】Docker入门

竹杖芒鞋轻胜马 ~ ~

一个小菜鸡的成长历程 2099

基于FPGA的UDP 通信(六)

本文基于FPGA和MATLAB对千兆以太网通信模块UDP数据发送(FPGA发送)进行联合调试。

记录所学,分享知识,结识挚友 4730

机器人常用坐标系详解:原理、获取方法及实战实例

本文系统阐述了机器人四大核心坐标系(世界、基、工具、工件)的原理与标定方法。世界坐标系提供全局参考基准,基坐标系绑定机器人本体,工具坐标系定义末端执行器位置,工件坐标系则锁定作业对象位置。通过齐次变换矩阵实现各坐标系间的关联转换。重点介绍了三类标定技术:手动设定法(世界坐标系)、三点/六点法(工具TCP标定)和视觉识别法(工件标定),并以工业机械臂上下料为例演示了完整应用流程。随着技术发展,自动化标定、动态坐标系等新趋势将进一步提升机器人作业精度与效率。

start_up_go的博客 513

docker的学习历程-基础入门

docker的学习之路 docker的安装步骤 # 1.下载相关工具 yum install -y yum-utils # 2.配置docker镜像地址,使用国内镜像 yum-config-manager \ --add-repo \ http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo # 3.安装docker yum install docker-ce docker-ce-cli containerd.io #

Mr_Robot的博客 246

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Docker容器技术入门到进阶

Docker是一个开源的应用容器引擎,它允许开发者打包他们的应用以及应用的依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows服务器上。容器是完全隔离的运行环境,确保了应用的一致性和可移植性。本文从入门到进阶,详细介绍了Docker容器技术的各个方面。通过掌握Docker,开发人员可以更加高效地开发和部署应用,节省资源,提高生产效率。未来,Docker容器技术将继续发展,为云计算领域带来更多变革。建议。

2501_92487853的博客 399

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

16本阿里云内部爆款书籍,涵盖云原生核心技术栈!

作为一名IT人,尤其是运维,不断地学习是非常有必要的。所有资料已经打包好了,需要的运维朋友请务必拿走学习!作为国内云计算市场的探路人,阿里云的技术和产品发展已趋于成熟,无论在国内还是国外,都占据着重要的地位。它的发展历程和技术经验,有许多值得我们运维学习的地方。但一一展示不太现实,这里就只展示部分,完整版领取方式详见文末。应用存储和持久化数据卷-存储快照与拓扑调度。资料整源于阿里云,仅作免费交流分享,侵删。微服务治理在云原生场景下的解决方案。应用编排与管理:核心原理。应用存储和持久化数据卷。

Dou_Hua_Hua的博客 961

指尖敲代码,笔尖写成长:2025年度总结与那些没说出口的碎碎念

2025年,对我来说是意义非凡的一年。这一年里,我从高考后的暑假偶然接触编程,到系统学习各种技术栈,再到成为一个坚持写博客的优快云博主,每一步都走得踏实又匆忙。今天,我想以最平实的语言,记录下这一年的成长与感悟,既是对过去的复盘,也是对未来的期许。

羑悻的博客. 5664

程序员的自我修炼:从代码小白到全栈老司机的奇妙旅程

摘要:程序员的成长之路充满挑战与乐趣。从基础语法到代码审美,从Git版本控制到框架运用,再到Docker容器化和云技术,每一步都是技能提升的关键。保持好奇心、参与开源、分享经验能加速成长,而健康作息和团队协作同样重要。这条路不仅是技术积累,更是思维方式和问题解决能力的进化,最终让程序员成为能驾驭代码世界的"全栈老司机"。

2501_94114815的博客 447

docker入门,这一篇就够了。

2w字的docker入门篇,作者花了半个月时间才写完的,希望对大家学习docker有一定的帮助!

m0_61503020的博客 26万+

docker基础超详细教程,一篇文章帮助你从零开始学习docker,从入门到实战

docker基础知识大汇总,帮助你从零开始学习docker,从入门到实战

一弓虽的博客 6182

golang菜鸟的自我介绍

自我介绍

m0_56869626的博客 955

Docker入门

在当今云计算和微服务架构盛行的时代,Docker作为一种轻量级的容器化技术,已经成为开发和运维人员不可或缺的工具。Docker不仅简化了应用的部署和管理,还极大地提高了开发和测试效率。本文将全面介绍Docker的发展历程、基本概念、核心功能以及实际操作,帮助读者从零开始掌握Docker技术。IaaS(基础设施即服务):提供虚拟化计算资源,如虚拟机、存储、网络等。用户可以灵活配置自己的计算环境,但需要负责安装操作系统和管理资源。优点:灵活度高、可扩展性强。缺点:管理复杂,需要较多技术支持。

m0_46460826的博客 2732

Docker Deskpot出现Docker Engine Stopped的解决历程

前提:我的操作系统是Win11家庭版, Docker Descktop下载的是最新版(此时是4.30.0) 出现了如图所示的问题“Docker Engine Stopped”,个人认为解决问题的关键是第四点,读者可以直接看第四点,如果只看第四点就成功解决,愿意的话麻烦评论区告知一下,感谢。

aloha1459的博客 3万+
上一篇: java8新特性-Lambda表达式的详解
下一篇: Docker 学习历程-容器数据卷、DockerFile
肥肥的八月
博客等级 码龄10年 18粉丝 20原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值