运维-docker专题-创建镜像-操作容器-制作jdk17的docker镜像等

最新版本更新
https://code.jiangjiesheng.cn/article/341

推荐 《高并发 & 微服务 & 性能调优实战案例100讲 源码下载》

1.linux环境制作jdk17的docker镜像

1.1 jdk17官方下载【长期支持版本】

jdk-17下载:
https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz 
【实际压缩包中的文件夹名称:jdk-17.0.11】

1.2 在线教程

docker制作高版本jdk17镜像踩坑
https://blog.csdn.net/qq_44624290/article/details/139303741 

详解 docker 镜像制作的两种方式( 含有 在容器中安装软件制作新镜像)
https://blog.csdn.net/sinat_41883985/article/details/135295923

CentOS Docker 安装(通过yum安转)
https://www.runoob.com/docker/centos-docker-install.html

使用docker构建jdk17镜像(包括添加镜像源)
https://blog.csdn.net/m0_58608667/article/details/139680578

1.3 具体步骤

mkdir -p /j-deploy/packages/docker/

cd /j-deploy/packages/docker/

wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

sudo yum install -y yum-utils

sudo yum-config-manager \
    --add-repo \
    https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	
安装Docker Engine:
	
sudo yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin

sudo systemctl start docker

sudo docker run hello-world
  
docker ps -a 

docker exec -it hello-world bash (运行失败)

编写Dockerfile文件

Dockerfile相关的命令:
	 CMD ["mkdir", "-p", "/ecp-collector"]

vi Dockerfile
	
FROM centos:7
MAINTAINER emon
WORKDIR /usr/local/java
ADD jdk-17_linux-x64_bin.tar.gz  /usr/local/java/
ENV JAVA_HOME=/usr/local/java/jdk-17.0.11
ENV CLASSPATH=.:$JAVA_HOME/lib/jrt-fs.jar
ENV PATH=$PATH:$JAVA_HOME/bin

构建docker镜像
docker build -t='jdk17_js' .   

注意:构建过程中报错,找不到centos 7 之类的
vim /etc/docker/daemon.json (没有的话,就是新建)
{
  "registry-mirrors": [
	"https://l10nt4hq.mirror.aliyuncs.com",
	"http://hub-mirror.c.163.com",
	"http://mirrors.ustc.edu.cn/",
	"http://mirror.azure.cn/"
  ]
}

重启docker
systemctl restart docker

docker info | grep -i "mirror"

再次构建docker镜像
docker build -t='jdk17_js' .   

构建完成后查看镜像
docker images

运行镜像
【run是执行 创建 容器,所以实际不能重复执行,需要先rm移除】
docker run -di --name jdk17_js jdk17_j

AI解读
    这个修改后的命令 docker run -di --name jdk17_js jdk17_js 用来启动一个新的Docker容器,并进行了以下操作:
    
    docker run: 命令用于创建一个新的容器并运行一个命令。
    
    -d: 这个选项让容器在后台运行,也就是守护进程模式。当你不想让容器的输出占据你的终端,或者你需要容器一直运行而不在当前会话中中断时,会用到这个选项。
    
    -i: 表示以交互模式运行容器。它保持标准输入(STDIN)打开,使得容器进程可以接收输入数据。通常与 -t 一起使用来分配一个伪终端,但这里没有 -t,意味着虽然容器可以接收输入,但它不会直接附加到一个终端上进行交互。
    
    --name jdk17_js: 指定新创建的容器的名称为 jdk17_js。给容器命名对于之后管理和识别容器特别有帮助,比如当你需要停止、启动或删除这个容器时可以直接通过名字操作。
    
    jdk17_js: 最后一部分再次提到的 jdk17_js 是指定了要使用的镜像名称。Docker将查找本地是否存在这个名字的镜像;如果不存在,Docker会尝试从默认的镜像仓库(通常是Docker Hub)中拉取。这个镜像应该是基于Java Development Kit (JDK) 17定制或包含的,适合运行Java应用程序。
    
    总结来说,这个命令的目的是:使用名为 jdk17_js 的Docker镜像,以后台且交互模式启动一个新的容器,并将此容器命名为 jdk17_js。这通常是在准备执行或部署需要Java 17环境的应用程序时使用的步骤。由于没有明确指定容器启动后执行的命令,默认会执行该镜像中的 ENTRYPOINT 或者 /bin/bash(如果镜像中没有明确设置 CMD 或 ENTRYPOINT)。

进入jdk17_js容器
docker exec -it jdk17_js bash
java -version
java version "17.0.11" 2024-04-16 LTS
Java(TM) SE Runtime Environment (build 17.0.11+7-LTS-207)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.11+7-LTS-207, mixed mode, sharing)

关闭jdk17_js容器
docker stop jdk17_js

重启jdk17_js容器
docker restart jdk17_js
docker start jdk1

你可能感兴趣的:(Docker,Centos,运维,docker,容器)