百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 优雅编程 > 正文

面向开发人员的Docker入门级实战,真香

sinye56 2024-10-20 14:06 3 浏览 0 评论

好记性不如烂笔头,记录下来的才是永恒!这里是Java实战技术大本营,诚邀关注。本文已收录入GitHub,GitHub搜【wind7rui/JavaHub】。

聊聊Oracle

2013年“去IOE”这个话题在IT圈火热起来,它是由阿里巴巴提出的概念,意思是在IT架构中,去掉IBM的小型机、Oracle数据库、EMC存储设备,以自己在开源软件基础上开发的系统取而代之。虽然,Oracle数据库以容量大、稳定、安全、性能高自居,但是这些高性能指标都需要厚实的资金支撑(硬件不断扩展资金、技术咨询和服务费),所以当年很多私有、民办企业紧跟其后,逐渐不再使用Oracle。

回想过去,为了可以随时使用Oracle数据库,不得不在自己的笔记本电脑上安装,不知道各位有没有经历过其安装过程,安装过程很漫长,而且可能会遇到各种奇葩的错误信息,在错误中断安装后,需要再次重新安装。安装过程中会在系统上安装很多辅助软件,有些还被设置成了开机自启动服务。在经历过各种安装重启之后,好不容易安装完成,启动起来试试吧,接下来等待的就是漫长的启动过程,因为它需要加载很多东西,这时候如果电脑配置不行,散热风扇就开始嘶吼了。总结一下,个人笔记本电脑上使用物理安装的方式使用Oracle数据库,不容易!

选Vagrant,还是Docker

如果不是有特殊需求,我是不会再碰Oracle了。这不,最近因某些特殊原因不得不再次安装使用Oracle。不过,现在都2020年了,谁还直接物理安装啊!我很早之前的文章《开发环境利器vagrant》和《再谈Vagrant》详细介绍了不通过物理安装,直接使用Vargant快速打造开发环境,利用虚拟化技术将这些开发环境和软件安装到虚拟机上,通过Vagrant可以轻松实现对虚拟机的管理、自动化配置和安装开发环境及各类软件,这种Vagrant简单快捷、占用的物理资源也少,用的不爽了可以随时移除。

不过,Vagrant不是今天的主角,我们要聊的是Docker!Docker是什么?Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上。举个简单的例子,我们把开发好的war包或可执行jar包在安装了JDK的Linux系统上部署,并将相关的依赖及配置也都配置好,然后直接将他们打包成一个镜像,拿着这个镜像就可以随时部署了,不用在部署的机器上安装一系列复杂的软件环境了(JDK、数据库、Redis等),不用再担心“我这可以运行,你那怎么就不行”,也不需要再考虑各种兼容性问题,因为这个镜像就是一个可直接交付的包含运行环境的成品,真正做到一次创建镜像,任意正常运行。Docker提供了镜像仓库,仓库中有很多打包好的、可以拿过来直接部署的镜像,例如Oracle、Nginx等。当然,这只是Docker的部分功能,更多有关Docker的介绍请移步搜索引擎。

Vagrant和Docker都使用了虚拟化技术,Vagrant是基于Virtualbox的虚拟机技术,Docker则是基于轻量级容器虚拟技术,两者的区别就像进程和线程,虚拟机内可以包含很多容器,正如一个进程中可以包含很多线程,所以前者基于虚拟机显重,后者基于容器虚拟技术显轻。不过,它们的侧重点不同,Vagrant是开发环境的部署工具,这一点可以通过它官网的介绍而知,而Docker是运行环境的部署工具。

?

安装Docker

相对于Vagrant的使用,Docker的操作成本会小很多,最主要的是Docker使用起来快、省。所以,本篇内容是在Windows7系统上使用使用Docker部署Oracle。为什么是Windows7,而不是Windows10?虽然Win10很炫,但是我更喜欢低调实用的Win7,不知道你们是不是也这么认为。不过,如果你是Win10用户也没关系,因为本篇内容也会带着介绍win10上如何部署,不要走开哦!

在Windows系统上安装Docker,操作系统的版本不同方式也不一样。Win7和Win8系统不支持Hyper-V,所以只能安装Docker Toolbox的方式使用Docker,它利用VirtualBox建立Linux虚拟机,在Linux虚拟机中安装Docker服务端和客户端。Win10操作系统可以利用Hyper-V虚拟化技术,所以直接安装Docker for Windows,它在Windows上安装docker服务端和客户端,安装前需要开启Hyper-V,具体操作:控制面板-程序-程序和功能-启用或关闭Windows功能-Hyper-V。

Win7/Win8上安装Docker Toolbox,目前最高版本是v19.03.1,根据官网的指引需要到github上下载,231MB需要下载很久,因为很慢!所以,我们需要借助国内的下载地址,访问https://get.daocloud.io/toolbox/下载DockerToolbox-19.03.1.exe。

Win10系统安装Docker for Windows,在这里下载https://get.daocloud.io/#install-docker-for-mac-windows。

如果你是MacOS系统,系统版本低于OS X 10.10.3,在这里https://get.daocloud.io/toolbox/下载安装DockerToolbox-19.03.1.pkg,如果系统是OS X 10.10.3或者更高版本,需要下载安装Docker for Mac,在这里下载https://get.daocloud.io/#install-docker-for-mac-windows。

对于Windows系统,在安装前需要确认BIOS设置中是否开启了“Virsualization Technology”,具体操作:开机快速按BIOS设置键(各个品牌电脑不同,如果不知道通过搜索引擎查询),进入BIOS界面,依次选择Configuration -> Intel Virtual Technology -> Enabled(注意:因主板不同,名称和位置可能不一样,主要找Virtual字样的设置)。

Win7/Win8系统双击下载的DockerToolbox-19.03.1.exe,根据指引安装,如果VirualBox或Git已经安装,可以不勾选安装,下图中这个选项建议勾选。

?

安装完成后,桌面上会出现Docker Quickstart Terminal快捷键图标,首次双击它进入命令行窗口后,界面提示正在创建一个名字叫default的虚拟机,创建过程会自动从github上下载boot2docker.iso文件,这个过程非常缓慢,而且大多数情况下会出现timeout,如果不能正常下载,虚拟机创建失败。


如果碰巧你可以非常快速的下载完成,下面的这步骤可以省了。其实,仔细查看官方的DockerToolbox-19.03.1.exe说明,安装包是包含boot2docker.iso文件的。


安装DockerToolbox-19.03.1.exe后,boot2docker.iso文件被存放到了安装目录下,例如我安装时选择的目录是C:\Program Files\Docker Toolbox,直接将boot2docker.iso拷贝到C:\Users\Administrator.docker\machine\cache下(其中,Administrator是我的用户名,可能和你的不一样),然后断开有线网和无线网,重新打开Docker Quickstart Terminal,就可以创建成功了(如果你尝试了还不行,评论留言@我直接发你),创建的default虚拟机IP默认是192.168.99.100,启动成功后的界面如下图。


Win10系统双击下载的Docker for Windows Installer安装文件,根据指引安装。安装完成后,Docker会自动启动,并且右下角通知栏上会出现个小鲸鱼的图标,这个小图标可以右击选择settings,在这里可以做更多配置,例如设置国内镜像地址。win+R快捷键打开运行窗口,输入cmd,在命令行窗口输入docker --version验证安装是否成功,正常输出Docker版本则安装成功。

部署Oracle

本文通过使用Docker部署Oracle来学习一下Docker的入门级使用。开始下面的内容之前,我们先了解一下Docker中的镜像、容器和仓库。镜像是一个特殊的模板文件,它里面包含了运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等),例如一个MySQL镜像,它包含一个完整的Linux系统,在这个系统上安装了MySQL数据库和其它相关的资源文件和配置。容器是由镜像创建的运行实例,运行镜像就会创建一个容器。镜像和容器的关系,打个比方,就像Java中的类和对象的关系。仓库,这个很好理解了,既然镜像是模板,那么就需要有存储的地方,仓库就是管理镜像的地方,我们可以从仓库中下载镜像,也可以向仓库提交镜像。

默认情况下,我们使用Docker时,它会使用自己的镜像仓库地址,但是从这个地址下载镜像会很慢,所以,我们需要配置国内的镜像加速器地址。国内的加速器这里推荐使用阿里云,具体如何获取阿里云镜像加速器地址,看这里https://help.aliyun.com/document_detail/60750.html。获取到阿里云镜像加速器后,Win7/Win8系统在打开Docker Quickstart Terminal后执行如下命令:

sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS=' --registry-mirror=自己的加速器地址 |g" /var/lib/boot2docker/profile

然后执行exit,可以看到退出了default虚拟机,接着依次执行如下命令:

docker-machine env default

eval $("C:\Program Files\Docker Toolbox\docker-machine.exe" env default) --这一步是根据docker-machine env default执行后,提示需要执行的,如果你没有这个提示,请忽略

docker-machine restart default

docker-machine env --这一步是根据docker-machine restart default执行后,提示需要执行的,如果你没有这个提示,请忽略

查看是否配置成功,使用docker info命令,如果输出的信息(内容很长,慢慢找)中有--registry-mirror=自己的加速器地址,那就表明配置成功了。

Win10操作系统,还记得我上面说的那个右下角的小鲸鱼的图标嘛,右键选择settings,打开配置窗口后左侧导航菜单选择“Docker Daemon”。编辑窗口内的JSON串,填写下方加速器地址,编辑完成后点击Apply保存按钮,等待Docker重启并应用配置的镜像加速器。

{

"registry-mirrors": ["自己的加速器地址"]

}

Docker Hub是Docker官方维护的一个公共仓库,存放着Docker及其组件的所有资源,包括镜像,我们要想使用Docker Hub中的镜像,首先需要先注册一个账号,注册地址https://hub.docker.com/,记住注册的Docker ID和密码,后面会用到。

注册完成后,在https://hub.docker.com/search页面搜索Oracle镜像。

页面会列出很多镜像,我们根据需要选择某一个,我这里选择wnameless/oracle-xe-11g-r2这个镜像,点击进入详情页面,在这个页面会详细的描述这个镜像如何使用,以及镜像里有什么。


因为Docker Quickstart Terminal和命令行窗口都不是很好用,所以,我们可以使用常用的ssh软件登录到创建的default虚拟机,我这里使用SecureCRT,其它软件如XShell也可以。登录主机名:192.168.99.100,端口:22,用户名:docker,密码:tcuser,登录成功后如下图。


输入docker login命令,根据指引完成登录Docker Hub操作。


根据刚刚在Docker Hub页面搜索wnameless/oracle-xe-11g-r2得到的使用指引,我们需要先输入docker pull wnameless/oracle-xe-11g-r2命令从镜像仓库中拉取该镜像到本地,拉取完成后,输入docker images查看本地有哪些镜像可以使用。


输入docker run -d -p 1522:22 -p 1521:1521 --name awesome_lalande wnameless/oracle-xe-11g-r2命令,部署Oracle镜像,创建一个新的容器,得到一个可使用的Oracle数据库服务,启动过程之快令人惊讶,秒级别的。

上面命令参数解释:


输入docker ps查看有哪些正在运行的容器,如果想列出所有的容器,包括未运行的,可以使用docker ps -a。

可以看到我们刚刚通过docker run命令部署的wnameless/oracle-xe-11g-r2镜像已经启动成功了,创建的容器ID为1050ac76bdcf。

如果你想看容器的运行启动日志,输入“docker logs CONTAINER_ID”,CONTAINER_ID就是docker ps输出的CONTAINER_ID。


如果你想进入到Oracle容器中,也就是运行Oracle的Linux系统中,输入“docker exec -it CONTAINER_ID /bin/bash”,CONTAINER_ID同样是docker ps输出的CONTAINER_ID。退出容器,输入exit。


如果想停止运行中的容器,可以输入docker stop 容器名称,例如docker stop awesome_lalande,这个awesome_lalande是我们上面使用docker run时通过--name参数指定的容器名称,如果你不确定容器名称,可以通过docker ps命令查看,输出的最后一列就是容器名称。


启动一个已停止运行的容器,可以输入docker start 容器名称,例如docker start awesome_lalande。当日也可以使用docker restart命令重启容器,例如docker restart awesome_lalande。

到这里,我们就可以使用数据库操作客户端连接Oracle数据库并使用了。我这里使用Navicat,连接信息如下:hostname:192.168.99.10,port:1521,sid:xe,username:system,password:oracle。

小结

本篇内容基于Oracle镜像,当然你有可以试试其它镜像,例如MySQL、Nginx等,使用方式都是一样的,具体如何使用镜像,可以根据上面说的,查看Docker Hub中搜索得到的镜像详细描述。

本篇内容只是一个入门级的使用,Docker有很多很强大的功能,后续我也会结合实际工作中的使用经历不断分享,欢迎朋友们继续关注!

如果你还不知道Docker是什么,或者还没使用过,真的需要好好补补课了,不是因为它流行,而是真的很好用,真香!

聊个题外话,关注我的朋友可能发现了,我更新文章不是很固定,有时一周一更,有时两周一更,我不是专门做自媒体的,写作只为了记录(记忆不可靠)和分享(开源),所以没必要为了讨好别人浪费时间到处找文章、转发别人未授权的文章,一天一更。

以前看到好的文章也会分享、做排版,但是后来想想基本是在消耗我的时间,自己也没有得到技术积累,从那之后索性只分享自己的原创。我也会在圈里分享我写的文章,毕竟这些都是我早上早起挤时间整理的。所以,关注我你会看到一手原创、有料的技术文章!

学之多,而后知之少!朋友们【点赞+评论+转发】是我持续更新的最大动力,我们下期见!

往期推荐

我画了25张图展示线程池工作原理和实现原理,建议先收藏再阅读

这样的API网关查询接口优化,我是被迫的

面试被问为什么使用Spring Boot?答案好像没那么简单

都说ThreadLocal被面试官问烂了,可为什么面试官还是喜欢继续问

说实话,面试这么问Spring框架的问题,我真扛不住

Spring声明式事务处理的实现原理,来自面试官的穷追拷问

没使用加号拼接字符串,面试官竟然问我为什么

面试官一步一步的套路你,为什么SimpleDateFormat不是线程安全的

相关推荐

程序员:JDK的安装与配置(完整版)_jdk的安装方法

对于Java程序员来说,jdk是必不陌生的一个词。但怎么安装配置jdk,对新手来说确实头疼的一件事情。我这里以jdk10为例,详细的说明讲解了jdk的安装和配置,如果有不明白的小伙伴可以评论区留言哦下...

Linux中安装jdk并配置环境变量_linux jdk安装教程及环境变量配置

一、通过连接工具登录到Linux(我这里使用的Centos7.6版本)服务器连接工具有很多我就不一一介绍了今天使用比较常用的XShell工具登录成功如下:二、上传jdk安装包到Linux服务器jdk...

麒麟系统安装JAVA JDK教程_麒麟系统配置jdk

检查检查系统是否自带java在麒麟系统桌面空白处,右键“在终端打开”,打开shell对话框输入:java–version查看是否自带java及版本如图所示,系统自带OpenJDK,要先卸载自带JDK...

学习笔记-Linux JDK - 安装&配置

前提条件#检查是否存在JDKrpm-qa|grepjava#删除现存JDKyum-yremovejava*安装OracleJDK不分系统#进入安装文件目...

Linux新手入门系列:Linux下jdk安装配置

本系列文章是把作者刚接触和学习Linux时候的实操记录分享出来,内容主要包括Linux入门的一些理论概念知识、Web程序、mysql数据库的简单安装部署,希望能够帮到一些初学者,少走一些弯路。注意:L...

测试员必备:Linux下安装JDK 1.8你必须知道的那些事

1.简介在Oracle收购Sun后,Java的一系列产品就被整合到Oracle官网中,打开官网乍眼一看也不知道去哪里下载,还得一个一个的摸索尝试,而且网上大多数都是一些Oracle收购Sun前,或者就...

Linux 下安装JDK17_linux 安装jdk1.8 yum

一、安装环境操作系统:JDK版本:17二、安装步骤第一步:下载安装包下载Linux环境下的jdk1.8,请去官网(https://www.oracle.com/java/technologies/do...

在Ubuntu系统中安装JDK 17并配置环境变量教程

在Ubuntu系统上安装JDK17并配置环境变量是Java开发环境搭建的重要步骤。JDK17是Oracle提供的长期支持版本,广泛用于开发Java应用程序。以下是详细的步骤,帮助你在Ubuntu系...

如何在 Linux 上安装 Java_linux安装java的步骤

在桌面上拥抱Java应用程序,然后在所有桌面上运行它们。--SethKenlon(作者)无论你运行的是哪种操作系统,通常都有几种安装应用程序的方法。有时你可能会在应用程序商店中找到一个应用程序...

Windows和Linux环境下的JDK安装教程

JavaDevelopmentKit(简称JDK),是Java开发的核心工具包,提供了Java应用程序的编译、运行和开发所需的各类工具和类库。它包括了JRE(JavaRuntimeEnviro...

linux安装jdk_linux安装jdk软连接

JDK是啥就不用多介绍了哈,外行的人也不会进来看我的博文。依然记得读大学那会,第一次实验课就是在机房安装jdk,编写HelloWorld程序。时光飞逝啊,一下过了十多年了,挣了不少钱,买了跑车,娶了富...

linux安装jdk,全局配置,不同用户不同jdk

jdk1.8安装包链接:https://pan.baidu.com/s/14qBrh6ZpLK04QS8ogCepwg提取码:09zs上传文件解压tar-zxvfjdk-8u152-linux-...

运维大神教你在linux下安装jdk8_linux安装jdk1.7

1.到官网下载适合自己机器的版本。楼主下载的是jdk-8u66-linux-i586.tar.gzhttp://www.oracle.com/technetwork/java/javase/downl...

window和linux安装JDK1.8_linux 安装jdk1.8.tar

Windows安装JDK1.8的步骤:步骤1:下载JDK打开浏览器,找到JDK下载页面https://d.injdk.cn/download/oraclejdk/8在页面中找到并点击“下载...

最全的linux下安装JavaJDK的教程(图文详解)不会安装你来打我?

默认已经有了linux服务器,且有root账号首先检查一下是否已经安装过java的jdk任意位置输入命令:whichjava像我这个已经安装过了,就会提示在哪个位置,你的肯定是找不到。一般我们在...

取消回复欢迎 发表评论: