Docker入门为什么可以这么简单?

Docker基础 - 入门基础和 Helloworld 著作权归https://pdai.tech所有。链接:https://pdai.tech/md/devops/docker/docker-02-basic.html。 阅读详情

 

前言

只有光头才能变强。


文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y

上一篇已经讲解了为什么需要Docker?,相信大家已经对Docker有一个简单的认识了。

这篇我来讲讲Docker入门的相关概念和常用的命令,跟大家一起入门Docker!

640?wx_fmt=png
Docker

一、Docker相关术语

一般从零学习一门技术(语言),都是从HelloWorld开始的,但这次我偏不。我先来讲讲Docker的相关术语~

在之前分享的Docker科普文,也通俗易懂地讲解了这三个术语:

镜像、容器、仓库的概念可以类比代码、进程、github


如果让我来给完全不懂Docker解释这三个术语,我会这样做:

镜像(image)【image除了图片/图像的意思外,还有镜像的意思】

容器(container)通过镜像运行起来的实例

仓库(reposity)专门存放镜像的地方

二、安装Docker与HelloWorld

首先需要明确自己所使用的环境,就我而言,我使用的是CentOS 7。据我所知,CentOS 7和CentOS 6.8在安装中都是有区别的。

所以,如果你想跟着我一起安装Docker,先明确自己的版本是否是CentOS 7,如果不是只能找其他的教程来进行安装。

cat /etc/redhat-release// 结果CentOS Linux release 7.3.1611 (Core)
// 结果

CentOS Linux release 7.3.1611 (Core)

2.1安装Docker

首先我们需要安装GCC相关的环境:

// 安装GCC相关的环境yum -y install gccyum -y install gcc-c++
yum -y install gcc

yum -y install gcc-c++

如果曾经安装过Docker(旧版本)的话,得先卸载,如果没有安装过,跳过这一步:

// 卸载旧Docker版本yum -y remove docker docker-common docker-selinux docker-engine
yum -y remove docker docker-common docker-selinux docker-engine

安装Docker需要的依赖软件包:

// 安装Docker需要的依赖软件包:yum install -y yum-utils device-mapper-persistent-data lvm2
yum install -y yum-utils device-mapper-persistent-data lvm2

设置stable镜像仓库(注意:我们这里使用国内的镜像地址【因为Docker 官网给出的地址在国外,太慢了!】)

// 设置stable镜像仓库:yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

更新yum软件包索引:

// 更新yum软件包索引:yum makecache fast
yum makecache fast

安装DOCKER CE(注意:Docker分为CE版和EE版,一般我们用CE版就够用了)

// 安装DOCKER CE:yum -y install docker-ce
yum -y install docker-ce

启动Docker

// 启动Dockersystemctl start docker
systemctl start docker

2.2HelloWorld走起

到上面为止,我们已经启动了Docker,下面我们检验一下我们运行的Docker是否正常。

首先,我们可以看看下载回来的Docker版本:

// 查看Docker的版本docker version
docker version
640?wx_fmt=png
我下载的Docker版本

版本都查到了,说明Docker是运行起来的啦。我们来一发HelloWorld:

// docker的HelloWorlddocker run hello-world
docker run hello-world

效果:

640?wx_fmt=png
Docker中的HelloWorld

简单解释:docker run hello-world这条命令指示Docker去运行hello-world这个镜像,但是我们本地没有这份镜像啊。所以Docker就去DockerHub拉取了一份hello-world镜像,并运行起来了(生成容器)。这个hello-world容器的功能就是一句话:Hello from Docker!。所以我们在屏幕上就可以看到这句话了。

2.3配置加速器

由于安装的Docker默认是去Docker Hub找我们想要的镜像的,我们知道国外肯定没国内的快,所以我们一般会配置一个加速器

国内的镜像仓库一般我们使用的有:

首先,我们到下面链接搜索一下镜像,比如Tomcat (这就需要我们注册/登录一个阿里云账号)

随后,我们可以在镜像加速器上找到我们的url:

640?wx_fmt=png
镜像加速地址

我们依照阿里云给出的教程,就可以配置加速器了。

mkdir -p /etc/dockertee /etc/docker/daemon.json <<-'EOF'{  "registry-mirrors": ["https://cubmirje.mirror.aliyuncs.com"]}EOF

tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": ["https://cubmirje.mirror.aliyuncs.com"]
}
EOF

让配置生效,并重启Docker

systemctl daemon-reloadsystemctl restart docker
systemctl restart docker

不知道大家学到这里,觉得怎么样。如果是我,我肯定觉得没意思。搞了个HelloWorld案例,就打印了一句话,没意思。

三、体验Docker

假如说,要在一台全新的系统上将Tomcat跑起来。我们需要做以下的事:

如果我们用了Docker,我们是这样做的:直接在仓库里拉一份tomcat的镜像下来,将镜像跑起来就,就完事了!

拉取Tomcat镜像:

docker pull tomcat
640?wx_fmt=png
拉取Tomcat镜像

docker images查看是否有拉取到的tomcat

docker image ls

拉取到的Tomcat镜像:

640?wx_fmt=png
拉取到的Tomcat镜像

运行这个Tomcat镜像,生成容器

docker run -it -p 9999:8080 tomcat

我们可以发现,这个Tomcat运行起来了!

640?wx_fmt=png
Tomcat运行起来了

(滚犊子,没运行起来,踩坑了!,一直卡在INFO: Deploying web application directory这句话上了。我还一直想,为啥我访问不到呢,才发现没运行起来)

3.1解决docker运行Tomcat卡住的问题

原因:

docker+tomcat 启动时非常慢,一般正常启动几十秒的,发现docker+tomcat启动竟需要几分钟,不可思议

根本原因是 SecureRandom 这个 jre 的工具类的问题。那为什么 SecureRandom generateSeed 这么慢,甚至挂在 Linux 操作系统呢?

Tomcat 7/8 都使用 org.apache.catalina.util.SessionIdGeneratorBase.createSecureRandom 类产生安全随机类 SecureRandom 的实例作为会话 ID。

SecureRandom generateSeed  使用 /dev/random 生成种子。但是 /dev/random 是一个阻塞数字生成器,如果它没有足够的随机数据提供,它就一直等,这迫使 JVM 等待

首先,我们先以后台的方式运行Tomcat镜像:

docker run -tid  tomcat

以bash的方式进入到容器中:

docker exec -it 4a471223bfc4(为你正在运行容器的id) /bin/bash

为容器安装vim:

apt-get updateapt-get install vim

apt-get install vim

修改对应的java.security文件

cd /docker-java-home/jre/lib/securityvim  java.security
vim  java.security

找到 securerandom.source=file:/dev/random,修改为securerandom.source=file:/dev/./urandom

在Tomcat镜像下创建一个属于我们自己的Tomcat镜像(这个镜像安装了vim,修改了配置文件)

docker commit -m "change java.security" -a "3y" 4a471223bfc4(为当前容器的id) mytomcat

于是我们就生成了mytomcat镜像,就可以使用mytomcat:

docker run -it -p:9999:8080 mytomcat

效果图:

640?wx_fmt=png
使用Docker容器成功启动Tomcat

参考资料:

除了Tomcat,大家还可以去拉个mysql、redis、centos等等镜像来玩玩~~

四、命令说明

Docker的命令无非就是对镜像、对容器进行增删改查。我是不太喜欢拉出每个命令来写文章的,所以这些命令还是大家自行学习吧~~

之前收集资料的时候,我也找到了一张关于Docker的思维导图,对着来看看,感觉就没问题了:

640?wx_fmt=png
Docker的思维导图

最后

留下几个问题:

乐于输出干货的Java技术公众号:Java3y。200多篇原创技术文章、海量视频资源、精美脑图!

640?wx_fmt=jpeg
帅的人都关注了
精彩回顾: 觉得我的文章写得不错,不妨点一下 好看 并 分享 给朋友!



【入门】docker其实很简单 docker是个什么玩意?别和我扯什么容器、镜像、仓库,它就是一个软件,和安装mysql,nginx没什么区别,通常在linux上安装这些东西大家都喜欢用yum install,本文以centos7为例,使用docker发布一个应用程序。 安装步骤在官网已经说的很清楚了,就是一顿yum,然后启动docker,下面简单copy总结下,如果不生效,那肯定是本文写错了,请继续前往官网查明真相。 $ sudo yum install -y yum-utils $ sudo yum-config-manager \ 阅读详情

相关推荐

鸿蒙系统下基于WebRTC的高效音视频通话开发实战

本文详细介绍了在鸿蒙系统下集成WebRTC技术实现高效音视频通话的实战开发。通过分析鸿蒙分布式软总线与WebRTC低延迟特性的结合优势,提供了从环境搭建、NAPI桥接层开发到音视频采集、P2P连接建立与渲染的完整流程。文章重点探讨了如何利用鸿蒙特性进行性能优化,包括网络自适应、抗抖动策略及系统级调优,旨在帮助开发者构建稳定、低延迟的实时通信应用。

night的博客 572

tomcat启动卡住也不报错什么原因_docker安装tomcat

1.查找Docker Hub上的tomcat镜像docker search tomcat2.拉取官方的镜像docker pull tomcat3.查看镜像docker images tomcat4.使用Tomcat默认的配置来启动一个Tomcat容器docker run -d -p 8080:8080 --name tomcat tomcat:latest如果报错:docker: Error re...

weixin_39598472的博客 681

单细胞分析进阶:sctransform标准化在Seurat中的实战解析

本文深入解析了sctransform标准化方法在Seurat单细胞分析中的实战应用。通过对比传统对数标准化,sctransform能更有效地建模并剔除技术噪音,提升数据质量。文章提供了从环境配置、数据准备、核心参数解析到完整流程整合的详细指南,并针对常见问题给出解决方案,帮助研究者获得更清晰的细胞分群和更可靠的差异表达结果。

weixin_29248313的博客 151

Docker 教程

Dockerfile是一个用来构建镜像的文本文件,文本内容包含了一条条构建镜像所需的指令和说明。

泠山的博客 1万+

BPMN-JS :修改节点“Change Type”事件类型

修改路径:node_modules\bpmn-js\lib\features\replace\ReplaceOptions.js。

TaylorY的博客 679

LabVIEW与MySQL实时数据存储:传感器采集与数据库同步实践

本文详细介绍了如何将LabVIEW与MySQL结合,实现传感器数据的实时采集与高效存储。通过设计合理的数据库表结构、配置LabVIEW数据库连接工具包,并编写核心的采集与存储VI,构建了稳定可靠的数据链路。文章重点分享了批量插入、连接管理、时间同步等关键优化技巧与避坑指南,帮助工程师应对工业监控、环境监测等场景下的实时数据同步挑战。

weixin_29281915的博客 262

Docker安装以及HelloWorld

嘿,好久不见~ 今天给大家Centos7更新安装Docker, 什么是docker?我们来看看百度百科的介绍: 沙箱,又是什么鬼???不知道大家听过没有支付宝支付的沙箱环境 哈哈哈 里面数不完的钱~ 感兴趣可以去玩一下。 不管了,我们新接触一个事物之前肯定要了解他的有点,我们为什么学他!它能给我们带来什么价值! 看了这么多优点,我们来学习一下这个神奇的东西吧。 Docke...

猿码优创 799

SAP接口错误查询日志

随着数字经济的迅速发展,企业数字化转型不在只追求“业财一体化”,而是在业务端也想要进行更为精细化的管理,所以很多企业在SAP ERP的基础上,集成更多垂直领域更精细的外围系统,比如销售CRM系统,采购SRM系统,生产MES系统等等,琳琅满目的产品,那对SAP实施来说,系统集成过程中,接口的一些报错查询能力必不可少,今天我们就介绍一下,SAP和CRM系统集成中接口常见的报错。

weixin_43657667的博客 2048

Docker学习笔记(一)---安装启动hello world

帮助文档 :1.卸载旧的版本 2.需要的安装包 3.设置镜像仓库 更新软件索引 4.安装Docker相关的 docker-ce 社区版本 ee企业版 5.启动docker 6.查看是否安装成功 7.测试hello world 了解: 卸载docker 阿里云镜像仓库加速 登录阿里云找到容器服务找到镜像加速地址 配置使用 Docker学习笔记(一)—安装启动hello world Docker学习笔记(二)—底层原理 Docker学习笔记(三)—常用命令 Docker学习笔

社畜程序员的无聊博客 830

本地部署DeepSeek并搭建量化交易系统:完整指南

本地部署DeepSeek并搭建量化交易系统指南 本文提供了一套完整的本地部署DeepSeek大语言模型并构建量化交易系统的技术方案。系统包含以下核心组件: 环境配置:详细说明Ubuntu系统、NVIDIA显卡驱动、CUDA和Python环境的安装要求,推荐使用conda管理依赖 DeepSeek部署: 通过HuggingFace下载7B或13B量化版本模型 使用4-bit量化技术降低显存需求 封装为FastAPI服务提供推理接口 量化系统架构: 模块化设计,各组件通过Redis解耦 包含数据获取、因子计算、

huanghm88的专栏 477

EMD (经验模态分解) 在 C++ 中的实现指南

EMD 是由 Norden E. Huang 等人在1998年提出的一种适用于非线性和非平稳信号的分析方法。对称性:IMF 的上下包络对称。零交叉点:IMF 的零交叉点数量与极值点数量相同或相差一个。本文详细介绍了如何在C++中实现EMD,包括理论背景、算法步骤、代码实现和优化等内容。通过丰富的代码示例和详细的解释,希望能够帮助读者掌握EMD的基本原理,并能够在实际项目中灵活应用。未来,随着信号处理技术的不断发展,EMD及其变种(如EEMD、CEEMDAN等)将继续在各个领域发挥重要作用。

qq_38334677的博客 1749

centos7卸载docker_Docker入门为什么可以这么简单?

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y上一篇已经讲解了为什么需要Docker?,相信大家已经对Docker有一个简单的认识了。这篇我来讲讲Docker入门的相关概念和常用的命令,跟大家一起入门Docker!Docker一、Docker相关术语一般从零学习一门技术(语言),都是从Hell...

weixin_39840729的博客 86

DSI3协议介绍

分布式系统接口(DSI)是一种通用且功能强大的总线协议,旨在将多个遥感器和执行器设备互连到中央控制模块。该网络的主要目标应用是汽车安全系统。这种应用的一些特点是需要低成本、高鲁棒性、中速互连,仅限于两根导线。此外,它必须具有故障安全性、确定性和良好的EMC特性。即使具有所有级别的智能和可编程性的设备都可以连接到网络,远程设备也必须能够通过简单的状态机实现。由于模块尺寸非常重要,因此中央模块和远程单元中的最小组件至关重要。

汽车电子软件领域知识分享 1万+

tomcat启动卡住也不报错什么原因_Docker入门为什么可以这么简单?

前言只有光头才能变强。文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y上一篇已经讲解了为什么需要Docker?,相信大家已经对Docker有一个简单的认识了。这篇我来讲讲Docker入门的相关概念和常用的命令,跟大家一起入门Docker!Docker一、Docker相关术语一般从零学习一门技术(语言),都是从Hell...

weixin_39922642的博客 607

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

docker 其他电脑访问权限_Docker 学习笔记(第一集:认识docker)

ethan读完需要5分钟速读仅需 2 分钟1 docker 介绍docker 这个东西应该做开发的应该都有听说过,但是不知道大家有没有详细的了解过。反正我是属于听说过,大概知道是个什么东西,能特别简单的使用。但是一直没有深入的学习过,今天在这里我想把学习 docker 的过程记录下来,方便日后查找。那么下面开始啦。~~~2 为啥要使用 docker在我电脑上运行的是正常的啊?怎么...

weixin_39801991的博客 137

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

docker desktop镜像_Docker简单入门

这篇文章适合谁? 对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的 只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知 其二,我从对Docker只有及其模糊(真的是模糊,我除了知道Docker是跟虚拟系统有关其他啥都不知道),到现在起码一问一不知(对应一问三不知)的状态,大概花了8个小时。这期间全靠我从网络上搜索到的资料。现在用我的话写出来,我觉得对于跟我相同开始情况的小白用户,能省不少时间,所以我要写。 其次,确实,现在Dock

sailcarp的博客 2954

Statistics and Machine Learning Toolbox

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

Docker简单入门及常用命令

Docker简单入门及常用命令 参考: Docker Documentation Docker — 从入门到实践 Docker 入门教程 —— 阮一峰 Docker 教程 —— 菜鸟教程 详细的 Docekr 教程请见参考,这里只是做一个简单的常用命令记录。 docker的启动/重启/停止: service docker start/restart/stop docker镜像: 构建镜像 ...

观樂。的博客 1528

docker hub上镜像手动下载_Docker极简单入门

写在前面这篇博客适合谁?对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知其二,我从对Docker只有及其模糊(真的是模糊,我除了知道Docker是跟虚拟系统有关其他啥都不知道),到现在起码一问一不知(对应一问三不知)的状态,大概花了8个小时。这期间全靠我从网络上搜索到的资料。现在用我的...

weixin_30139213的博客 3951

Docker|简单入门

Docker|简单入门

无限进步 1495

超简单的Docker快速入门

文章目录1、Docker简介1.1 什么是Docker1.1.1 Docker诞生的需求背景1.1.2 docker理念1.2 Docker能做什么1.2.1 虚拟机技术1.2.2 容器虚拟化技术1.2.3 开发/运维1.2.3.1 更快速的交付和部署1.2.3.2 更便捷地升级和扩缩容1.2.3.3 更简单的系统运维1.2.3.4 更高效的计算资源利用2、Docker下载与安装2.1 下载2.2...

学哥斌的博客 369

Docker简单快速入门

感谢你的关注!

Logic-Driven Thought Engineering 1414

Centos6.8 Docker简单入门实战

Docker简单入门实战Docker简单入门实战 Docker 是什么 Docker 思想 Docker 应用场景 Docker核心技术 Docker镜像 Docker 容器 Docker仓库 Docker实战 拉取第一个镜像 制作自己的镜像 容器关闭后怎么启动 进入容器内部查看 宿主机上传文件到容器 保存对容器的修改 删除容器和镜像 重启容器 Usage docker restart OPTIO

天不拘兮地不羁 1931

【2016/9】 简单 Docker 入门

首先引用一下 《Docker – 从入门到实践》的一段话:一.为什么要用Docker作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具有众多的优势。首先,Docker 容器的启动可以在秒级实现,这相比传统的虚拟机方式要快得多。 其次,Docker 对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很

Khalil的博客 513

docker desktop ubuntu镜像_Docker极简单入门

写在前面这篇博客适合谁?对于Docker并不了解,只是有一点模糊的感觉,觉得Docker可以当成虚拟机用之类的只是下载了Docker软件,对于怎么配置,怎么玩,第一步干什么,完全一无所知其二,我从对Docker只有及其模糊(真的是模糊,我除了知道Docker是跟虚拟系统有关其他啥都不知道),到现在起码一问一不知(对应一问三不知)的状态,大概花了8个小时。这期间全靠我从网络上搜索到的资料。现在用我的...

weixin_39656853的博客 917

Docker超简单入门

1.什么是Docker? ​ Docker是一个基于Go语言并遵从 Apache2.0 协议开源的应用容器引擎。是属于操作系统层面的虚拟化技术,由于进程都是隔离的,也称容器。 ​ 传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整的操作系统,在该系统上再运行所需应用进程。而容器是直接运行于宿主的内核,容器没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。 2.Docker基...

u012771025的博客 206
上一篇: 漫话:将密码明文保存在数据库是真的low!
下一篇: Redis几道常见的面试题!
Java3y
Java3y 领域专家: 后端开发技术领域 领域专家: 后端开发技术领域
博客等级 码龄9年 1万+粉丝 509原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值