• 在Docker中安装JDK


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

    Docker 中国官方镜像加速 http://www.docker-cn.com/registry-mirror

    获取JAVA镜像:

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

    docker pull java
    

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

    注意:

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

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

    在Docker中安装JDK

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

    在Docker中安装JDK

    查看下载的镜像

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

    docker images
    

    如下图所示:

    在Docker中安装JDK

    启动容器

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

    docker run -d -it --name java java
    

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

    在Docker中安装JDK

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

    命令以及参数的含义:

    run:启动一个镜像容器

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

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

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

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

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

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

    查看运行的容器

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

    docker ps
    

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

    在Docker中安装JDK

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

    登录容器

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

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

    在Docker中安装JDK

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

    进入容器内部

    • 使用attach进入容器
    docker attach 91
    

    其中的 “91” 指的是什么呢?

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

    回车,效果如下图:

    在Docker中安装JDK

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

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

    docker attach java
    

    上面这种是通过容器的别名进入容器内部的。

    • 使用exec命令进入容器

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

    docker exec -it java /bin/bash
    

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

    docker exec -it 91 /bin/bash
    

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

    在Docker中安装JDK

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

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

    java -version
    

    无论是通过attach还是exec进入的容器,我们都可以在命令行中输入命令“java -version”来查看JDK版本信息。

    下面我们就分别使用这2个命令进入容器,来看看效果,如下图所示:

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

    在Docker中安装JDK

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

    在Docker中安装JDK

    登陆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退出的话,就会导致容器停止!!这是极其不方便的!

    见下图所示结果:

    在Docker中安装JDK

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

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

    对于 -t 、-i 的具体作用,可以参考 https://www.cnblogs.com/kevingrace/p/6656095.html

    使用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。

  • 相关阅读:
    linux将命令添加到PATH中
    查看linux服务器时间
    spring参数校验及全局异常处理
    Https协议的工作过程
    反爬虫方式
    telnet进入某个端口后无法退出
    索引操作
    redis output buffer 设置太小导致oom
    mysql查询课程浏览记录表中最近一周浏览次数最多的课程
    C++ 读写注册表
  • 原文地址:https://www.cnblogs.com/zhaokejin/p/15605227.html
Copyright © 2020-2023  润新知