当前位置:   article > 正文

docker centos java_在Docker中安装JDK

docker centos安装jdk

所有的环境安装,都是在centos系统中操作的,并非本地windows系统。

获取JAVA镜像:

在终端客户端命令行输入以下命令,获取JAVA镜像。

docker pull java

默认是从Docker Hub官方的仓库中下载镜像的。如果没有指定对应的版本,默认会获取版本为latest的镜像。

注意:

latest是针对于镜像所在的仓库里面的软件最新版本。并非是软件本身的最新发布版本。

回车执行,一开始会进行下载对应的依赖库,稍作等待:

ea9f57f852bd7a420ae167e87065c428.png

出现下面的信息,说明镜像下载完成:

7e00083a4adfe6949ea03be97e3e32de.png

查看下载的镜像

命令行中执行命令,查看刚刚下载的JAVA镜像:

docker images

9e682517449d7751af10224e6948d332.png如下图所示:

启动容器

命令行中执行命令,启动JAVA镜像容器:

docker run -d -it --name java java

如下图所示,说明成功启动了容器:1363cfe5acbf1f58836a82ae1511edca.png

其中,–name后面的“java”是为容器指定了一个别名,而最后的那个“java”指的是下载镜像时的名称。

命令以及参数的含义:

run:启动一个镜像容器

-d:指定容器运行于后台

-it:-i 和 -t 的缩写;

-i:以交互模式运行容器,通常与 -t 同时使用

-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用

–name:指定容器名字,后续可以通过名字进行容器管理

具体更多的参数含义,可自行网上学习。

查看运行的容器

首先我们在命令行中执行命令,查看处于运行状态的容器:

docker ps

因为在上面的操作步骤中,我们运行了java镜像,所以你会看到有一个名称为java的容器正在运行,如下图:467e57fbab2bafd754c39ba209650f5e.png

通过输出的信息可以看到,当前容器的ID是“9179eb86b007”,容器别名是java(最后一列的值)。

登录容器

【询问】:如果想查看容器中安装的jdk版本,该怎么做呢?

如果直接在命令行输入java -version会报错的,如下图:

63c8a717a572c2b0a872dce1308535f9.png

原因是因为:jdk是安装在容器里面的,需要进入容器,才能查看。意思就是说,jdk环境是在容器里面的,并非是宿主机。

进入容器内部

使用attach进入容器,执行命令:docker attach 91

上面有提到过,我们启动的java镜像的容器ID是“9179eb86b007”,所以, docker attach 命令后面,你可以指定容器ID来进入具体的容器。可以指定91、9179、9179e等任意长度的值,都代表了当前的java容器。其中的 “91” 指的是什么呢?

回车,效果如下图:

05e1154594034cda195dbf14418c2f26.png

如果回车后没有反应,可以再次按下回车就可以进入容器的命令行模式了。

除了使用容器ID进入容器之外,也可以使用容器的别名进入容器:

docker attach java

使用exec命令进入容器上面这种是通过容器的别名进入容器内部的。

【方式一】:通过容器别名进入容器:

docker exec -it java /bin/bash

【方式二】:通过容器ID进入容器:

docker exec -it 91 /bin/bash

回车之后,就会看到命令行发生了一些变化:

19b338ef8676e1344d5f76b423d197cb.png

仔细看第二行的开头,@符号后面的“9179eb86b007”就是我们的java容器的ID吧,这也就说明,我们已经进入了容器内部了,可以对容器进行操作了。

进入容器后,输入 java -version 查看JDK版本信息

java -version

下面我们就分别使用这2个命令进入容器,来看看效果,如下图所示:无论是通过attach还是exec进入的容器,我们都可以在命令行中输入命令“java -version”来查看JDK版本信息。

attach命令进入容器,查看JDK版本信息

cd09d2c325574318a8da4030192f35ef.png

exec命令进入容器,查看JDK版本信息

18e4eb3ab66d2957ada437a19fcf20a5.png

登陆Docker容器的方式

上面已经简单的介绍了attach、exec命令的使用,下面讲解一下这两个命令之间的区别。

对于运行在后台的Docker容器,我们运维人员时常是有登陆进去的需求。登陆Docker容器的方式:

使用ssh登陆容器

这种方法需要在容器中启动sshd,存在开销和攻击面增大的问题。同时也违反了Docker所倡导的一个容器一个进程的原则。

使用自带命令docker attach登陆容器

docker attach存在的问题是:当多个窗口同时attach到同一个容器时,所有的窗口都会同步的显示,假如其中的一个窗口发生阻塞时,其它的窗口也会阻塞,docker attach命令可以说是最不方便的进入后台docker容器的方法

使用自带命令docker exec登陆容器

docker exec和docker attach是Docker的原生方法,大多数情况下就使用这两种命令登陆容器。docker exec命令是在docker1.3之后出现的,比docker attach命令更加方便

分别使用attach与exec进入容器,查看它们的区别

1、Docker attach必须是登陆到一个已经运行的容器里。需要注意的是如果从这个容器中exit退出的话,就会导致容器停止!!这是极其不方便的!

见下图所示结果:

fe1dc59a38592a840135fc1f103dadc4.png

你会发现通过attach进入容器的话,当使用exit退出容器的时候,对应的容器也停止运行了,所以在生产环境中很少使用。

2、docker exec登陆容器,注意有两个参数:-t和-i,这两个参数很重要!

使用docker exec -it 进入容器和我们平常操作console界面类似。而且不像attach方式退出,导致整个容器退出,exec在生产环境中用的比较多。exec 比使用ssh 、nsenter、nsinit方式更方便,生产中常用的方式。

在使用docker exec登陆容器或执行容器中的命令时,最好都带上-t和-i参数。

退出Docker容器

如果是通过 attach 进入的容器,在退出容器的时候,如果不想让容器停止运行的话,就不能使用exit命令或者Ctrl+D快捷键的形式退出,而是使用 Ctrl + P + Q 组合键退出容器。

如果是通过 exec 命令进入的容器,在退出容器的时候,就可以使用exit或者Ctrl+D快捷键退出容器,同时容器不会停止运行,这也是exec与attach的最大区别。当然,你也可以使用Ctrl + P + Q 组合键退出容器,容器一样不会停止运行。

所以,通过上面的比较,也就印证了exec在实际使用过程中用的最多的,也是建议使用的一种方式。尤其是生产环境下,强烈建议使用exec的方式。

停止容器

通过 docker stop (容器ID | 容器别名) 的命令,可以停止正在运行状态的容器:

docker stop java

上面是通过容器别名来停止容器的,你也可以使用容器ID。

参考资料:

http://www.zuidaima.com/blog/4656110816087040.htm

--------------------------------------------------------------------------

性能测试沟通Q群,欢迎有兴趣的小伙伴加入

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/168971
推荐阅读
相关标签
  

闽ICP备14008679号