3.3-在Centos Stream9上面DIY一个Base Image

文章讲述了如何在Linux系统中避免每次执行docker命令时都需要sudo,通过添加用户到docker组、配置环境变量和创建Dockerfile来实现。作者详细介绍了在CentOS9上安装JDK21并使用Dockerfile构建HelloDocker应用的过程。
摘要由CSDN通过智能技术生成

        如果执行docker命令提示下面的权限错误:

        需要在命令前加上sudo,例如:sudo docker image ls

        但是每次都加sudo有些麻烦,有没有办法其他更简便的方法?

        我们要去掉sudo就是让当前用户有执行docker命令的权限。

  • 第一步需要执行

sudo groupadd docker

  • 第二步不要将当前用户添加到docker这个group里面,我这里是把root添加到docker的group里面,权限的报错可能不是root用户,这块需要根据情况修改用户。

sudo gpasswd -a root docker

  • 第三步需要重启docker进程

sudo service docker restart

  • 最后,退出shell窗口,重新登录Linux主机。

现在开始创建一个Image

  • 创建一个hello-world的文件夹

mkdir hello-world

  • 进入到hello-world文件夹里面

cd hello-world

  • 创建Hello.java的java语言文件
public class Hello {
  public static void main(String[] args) {
    System.out.println("Hello Docker!");
  }
}

        然后编译Hello.java这个java语言文件,

注意:编译前需要安装jdk,这里我安装的是jdk21。

Centos Stream9安装jdk21的过程如下:

1、jdk21下载地址:Java Downloads | Oracle

注意:要下载箭头标注这个,不要下载错了。

2、下载之后会得到一个jdk-21_linux-x64_bin.tar.gz压缩文件,将这个压缩文件上传到你的Centos stream9服务器上面。这里我上传到了/home/0-software/0-jdk21/路径下,这个路径可以自己定义。

然后执行解压命令:

cd /home/0-software/0-jdk21/

tar -zxvf jdk-21_linux-x64_bin.tar.gz

然后配置java21的环境变量

vim /etc/profile

在最下面加上下面这些:

JAVA_HOME=/home/0-software/0-jdk21/jdk-21.0.1/
CLASSPATH=.:$JAVA_HOME/lib.tools.jar
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

再运行:

source /etc/profile

最后,执行下面的命令看看有没有配置成功。

java -version

环境变量配置完成之后,可以通过下面的命令编译Hello.java文件为Hello.class文件

javac Hello.java

  创建Dockerfile文件: - 使用文本编辑器创建一个名为Dockerfile的文件,并将以下内容复制粘贴到文件中:

FROM openjdk:21-jdk

COPY Hello.class /app/Hello.class

WORKDIR /app

CMD ["java", "Hello"]

        以下是对Dockerfile中这些内容的详细解释:

1. FROM openjdk:21-jdk: - 这行指令指定了基础镜像,即构建新镜像所依赖的镜像。在这里,我们使用了openjdk:21-jdk作为基础镜像,它是一个包含JDK 21的OpenJDK镜像。

2. COPY Hello.class /app/Hello.class: - 这行指令将本地文件系统中的Hello.class文件复制到镜像中的/app/Hello.class路径。它指定了源文件的路径(相对于Dockerfile所在目录)和目标路径(镜像中的路径)。

3. WORKDIR /app: - 这行指令设置了工作目录为/app。工作目录是在容器中运行命令时的默认目录,这里我们将其设置为/app。

4. CMD ["java", "Hello"]: - 这行指令定义了容器启动后要执行的默认命令。在这里,我们使用CMD指令来运行Java程序,具体是运行Hello类的main方法。它使用了JSON数组的形式,将要执行的命令和参数传递给CMD指令。

        通过这些Dockerfile的内容,我们定义了镜像的构建过程和容器的启动配置。首先,我们选择了一个基础镜像,然后将Hello.class文件复制到镜像中的指定路径。接下来,我们设置了工作目录,并指定了容器启动后要执行的默认命令。这样,当我们基于这个Dockerfile构建镜像并运行容器时,它将自动执行Java程序并输出"Hello Docker!"。

     构建Docker镜像:

使用以下命令构建Docker镜像(注意末尾的点符号)

docker build -t lvdapiaoliang/hello-docker .

https://hub.docker.com/

        lvdapiaoliang这个是docker的用户名,在https://hub.docker.com/的Account Settings里面看。最后有个点,表示从当前目录找Dockerfile文件。

        执行完docker build -t lvdapiaoliang/hello-docker .之后,运行下面的命令可以查看制作的image:

docker image ls

运行Docker容器:

使用以下命令运行刚刚构建的Docker镜像:

docker run lvdapiaoliang/hello-docker

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lvdapiaoliang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值